[{"Attribute":[{"category":"External analysis","disable_correlation":false,"first_seen":"2024-08-01T20:30:03.667000+00:00","to_ids":false,"type":"link","uuid":"803a1612-d90b-4922-946c-aa754b01d275","value":"https://lookyloo.circl.lu/tree/ec6feec8-9a02-4daf-a708-a16861140043"},{"category":"External analysis","comment":"Screenshot of the page at the end of the capture","data":"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LNl1qNqBbVkrIuGcTbhSArXkNNw/ULsEez4RBAp1NYW3gIC5vXe0qFdqjKWE0zFwpTgrhe+xyGVCWFGpNaXWp5WRZnyb1gaZFaBCTyMv4k4W4Dioy+qtjG0W7a6hYTzmMJKsIhUsdkEVGfSBxfrhpbYgspFXNtxrhPniMIzGV8c/E2dOdKvmJNsvMz6aXFndy1jRodDNWRr89gKFtez3iRdyLqjIg66ks5qnihPZJ5H2Vzv3O6Gkce2MH/eyj8ui30VMGXs1veIVr/ja17527bXXYgD82GOP3XLLLWvXrj355JOvueaauOpcffXVO3fuPPHEEzdu3Bhfvu666+68886f/OQnRx999Mknn7xx48a77777jjvu2H///U899dRvfvObW7du/fmf//nDDjusT+G+++575JFH9t9//6OOOuq8887bZ599YlI333zzrbfe+uCDD65Zs+acc8458cQT++c7d+686qqrHnjgge3btx9wwAFHH330eeedBwAPPPDADTfcsHXrVgD48Y9/fPnll/fv936w7rzzzssvv3z//fc/55xzVqo6GzV6xhKWYcxd0OrbIU53LMdwBPrt/4BB++k7cdMJlNZfJHAgF1XYWxXesUxPq4qrQYg3LCDpyHuMU1UNO7+ChbtKikF1GGUhJCMlb9hZ6R2FQ5XG3dG6vFoQduW+YiEOUzzsfQcwQ6dIuc+dIBZVyNJmiJz4+qzRuSTqZRtjKLKNj2qwrgF3JpNus41hOMErdl7ovEnkMRTVo9GGzyjMI0lWUT6ruWkt3ruonMrQwozGK6no5FSpD3yrm4DU8M3ccLpgavFruif7wo9LQHS/NP/mNCucbAXNMI/k62Fx3aOSLTtk0K/C0rsInK922ewoMqoMvcg9QNTVMRswU0ayVm+EB7PGzLxGM1Excupqu5RV6OEu3gEZP/Pgw164ih6i+K57RlAPgLdt27Zly5af/dmf7R/25t+Xvexl69atw8Lll7/85Z/+9KcHHHBAD4C3bNnyT//0T9u2bet/ve222+68887f+Z3fueuuuy6//PLDDjvsm9/85o9+9KM+l3333fdjH/vYPffcE7O++eabb7755osvvrjfff0P//APt9xyS/y167oeAD/00EN/93d/9+CDD8afbrjhhu9+97vveMc7fvSjH0XQiwFwT3fdddddd9116KGHNgDcqNFS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hX1b/8Te4XpEu0wn+AAM57P3sZcO6ju+pGvRxcpGvfyFmdL7jVVFyOIhuZES1nvEYjy6FO2MPRCGcHhmugBz3cExk1lcSl/ulzMeoWho6Eastg4+HJNw4Edd5EkIFWLnvjI7SdH2tLPpsMMOm+Tny5cv/83f/M3dd9998posxMmusWjTpk2bN2/ea6+92n8uW7bs9NNP39mVqlRp1yRysw7WLXKZVcRSos7NEf1C3DGp8KhFmTJPq4J0b+QSEXqE9Kf22WPl3uCkwEYtFR65znvfnhNOylzPTs8CNhghJjJmMxlJeak0UgYnj8w/jDMQ7cBRlIl7setuUug4j+RJzsmAClyv1FJaew9p+GW28xLDCiuU5NJ5rvYHqACHPovbRduoglaTSnCsDgwiI8IAGM/igF4vhNsTkV2QaggqNpOFCRpGqeHdgGN9g/Y83g49l2R6CmDDSAT02ZAHqRQy7MNUcUTy2HHZyYO/8XwCUSyyNdQsHg0nep+TpiDKd1m5Oqb3nV6TXsgTrKXmh7zP03HmkAX36ZqANWhFTNm5pLWCss9FCUC9msGwiltqkGxN1PpMj/S1Bml8486X6u/kejzB6kurQ24tGsU8OoLjOnXfCM3fwB62IAlxpcunWAczPa40Mf36r/86ADz00EOXXHJJ0zRzc3ObNm1avnz561//+vvvv//BBx/cvHnzO97xjpe97GUAcOGFF65YsWLr1q3e+3e9611Lliy55pprLr300j/8wz9ctWpV77ceeuihr3zlK8uXL993331/8Ytf7Lnnnuedd94BBxzQ/vWGG254+OGHH3zwwWOPPfbtb387ADz99NNr165dtmzZjh07nnvuube+9a177733t7/97e9+97vHH3/8I4888sQTTxx//PFnn302ADzxxBPf/OY3995778cff/xVr3rV8ccfb1Vjfn7+3//935944omlS5c+8cQTZ5555urVq++8886vf/3rp5566qZNmzZt2vTBD34wvr9y5cqlS5f+4z/+45vf/OYjjjjCOffiF7+YlfnYY4994QtfOOWUU175yld+/etff+ihh84+++wTTjjh/vvvv/TSS48//vh99933G9/4xhFHHDEajX7xi1+85CUvOeuss5YuXbp9+/a1a9du2bJl+/btL3jBC37rt35rgs6sVOlXm1w6A4wUjVEGI5ucME0QsYzv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eQZ7Vpb1Gp4nzUjBvqLZyMnSGanYQZW9Y6uRz6aJn1n1+WHHAazM2JOA5ePA6X6JZgFhG207xrFETkvP2VlWLr0GnNxhiYiicf2s5kq+OWMIyGOpAzlJ2Tq2tKuCtBA8KuoBNKmyJ6U2UQ8ASz6CIm2iqkcMqbNiQkoSklVc/jOkKqJ2YU6qAmIvnyYg+WsnxkHJKLXeL//u84FyE1T69JJeVn2oprn59K+k0yX6JQfC3gssXSDKs9h+EU9FfCiqhbTIhaTD8yS2nE93/HnvPYz8aDTy86P5gw4+eLbNLaCNGzfecMMNP//5zzdt2rRu3brbb7/99ttvv+WWW4455hgAaKNJrVy5cuvWrTfeeOPjjz++YsUK7/3111//2GOPvfjFL169evX3v//9O+6449FHH33mmWeefPLJ1atX33LLLT/+8Y+XLl26cuXKu++++84779yxY8f++++///77r1+/ftmyZS996UtxHdatW/fwww9v2rTptttu27JlyznnnLN06dLrrrvuxz/+8e677/6Sl7zk5ptvvuuuu5YtW3bkkUceeeSRt9xyy4YNG9atW7d58+a3ve1ty5Ytu/HGG9evX9++fOONN7YI9ogjjnjpS1960003ffe7312/fv3Pfvazl7zkJXNzcw8//PCjjz568skn4zqsXr36scceu+mmmzZs2PDjH//4vPPOa2t7yy23eO/3339/aQ+/5ZZbbrrppgceeODOO+98/PHHzz333N133/3BBx+88cYbt23bdtRRR+21114333zzhg0bVq1a1dqTV6xYsWHDhje96U2xkP/4j/949tlnH3zwwRtuuOHQQw89/fTTnXOrV69++OGH165de+edd95///0veMELIrSuVOn5Rg8/+tMlTbNkbolzbsmSBsA1MQpDjxe06Q7r6JEVhx3v6ObATgInuw2KUMOickBKGRa1b21VTtIJL1b2Fa68lYVywlUAUh12/ojL2zOzaaiCDt10RXAnls8IEHlxvhezkXqgm7hUWc78MXmpjx1dQDN1QFs/4XmWOipjlYiWcVTEVJVp0TB3XpTQW3s2TcmHHTKdZmDSuDTsZHv/xPLONUPRL7UGQ3fu/qGN9/Gyke136ohxYVxkXRf/WXk+mGcTt30xxYKaJk21XYNGHNblaJsa3+DMVO/O/q4tHBcTa1QEydI9GOd78Vms9s3p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yXXfepLUJeFEySDGTSuV9Se0aJ3DS4aP5s9AU3SON5zmFTdfz47Zk/14KK8KOJZNg42Xcsm4aEjhoYdZKQgLqx7y2kv07g3ynPrMLC664IILNm7ceP7551999dVzc3Px+QMPPPCxj33s8MMP/8lPfrJmzZoPfvCD+Fef+cxntm7d+uSTTz777LMXXXQRAHzpS1/6/ve/v3r16ltuueXP//zPjz322D/5kz+Zn59fvnz5tddee+WVV8oCL7nkkne96107duzYuHHj+9///pNOOulDH/rQO9/5zi1bthx88ME/+tGPTjvttIsuuujv//7v169f/4lPfOL8889v0S8ALFu2jDXk//wf973rVQdG9AsAx6/e+7hVe9/xs2fOufBH//MrX/izX25dc9i+b3nlCz+1dsNLX7D81p8+/bm3HXXsQXt95vKNW3fMP7llx7Pb5i/6vVdcfe8v196xyTn32DPbf+PoA/7ga3cftN+y9Y8++441B5574oti4Vu2jz58yd377bF0y3PzW7aP/ts7jrn7kWfO/vtbTzpkny3b52976OlP/fYR/+W1q57dNi9LOGDPCoArVcrTeHuWunybfxMoJb/jU8kQndkBb0gCog49EizwrcjzksF7aJo2bhZ43zr2etedJbakEfJF730XzUirYDFXTT7PjnqZ18IItQdTFOgeCYQIK8iePykx26+NO5QeLJGanGuKe8pOe77SjmrX84oYEyVjxSGwMD1T8LRGaa41kvPGGqKsHsQCzAYyWaLyhqt+vVpgLrfk2KnjT/LYImPYG0IltlnZoyW1sxhayOjBlsNFC31bKrBYEp9+cvo0pp6naeiUANLxRrtS69naeC2NZn788TkVvbywFrbHKwl/fpYWVDnVyXc9yWvdGUYF/zEeMzOs/wT0+c9//sQTT/z4xz/+F3/xF/HhBz7wgQsuuOCd73znaDQ68sgjTznllJNPPjn+9R3veMcRRxwBAMuXL//rv/7rn/zkJ5/85Cfvu+++ubm52267rWmaz3/+8w899NDXvvY1ALj44ovVAs8888y2tMMPP/y4444DgJUrV55xxhmPPfbY3/zN3zz11FMHHHDA3/7t35599tkf+chHPv3pT7cvP/7449/5znf+7d/+7cILL8StuOXBp95+0otZ05yDXzt4r0MO2P3kQ/f5q3OOvnbjE3/4z3d98PWH/U+vWPnFa372qbUbvv77x79jzYtb2Lz8A//+1+e+7HVH7r9yr6X/2+tW/frh+33uio0v2Hu3T7/1yI2PbXn1n/8QA+D/fuWDAPC5tx0FAO/+pzv+7soH/+iNh730BcsvePVBZx3/wrW3b/q/Lr/vv7x21d9+/yeyhBV7Ll2x526z6cxKlXYNGk9apdY1WkLJjkjvMiF3fhJ1KAvQy+8vJPGf9QpmTJyo/p0dOKbqdb/Oee+bpmnjPHnwXSQt10RvVUXeMCpocFVKkguNfovFfwfE/tblI7M8kT2kTRgAsIvadDTXapRsPeVxUru8cWwsyZztvSrhO6YUFlJDdlMHGQ2b5Br6mEVoMxBL3suUW1cHnNTN07CB3leOVabkpBq3FbB4G7k3R0w7vZghowhiFUbPAxijOD762aPipA0nvIG1gBzfQxeRNveOpk3UNFUBa/Xmqfwd5rn+DtB3MHtMJqo6tvwYmfqKaNWhPJ9NS/tLGXB5BdfYKW9G72dkD5b0VSmHe1OtZohjSCVYZvvVXC/GaVYBpbsQsGhjaILbz3O9fi6NkRXD2rdI9UF77bXXV7/61VNPPfU3fuM34sNrrrnmL//yLwGgaZrjjz/+2muvxQD4+uuv/9KXvrRixYrRaLR169arrrrqxBNPbA3ILZT95Cc/efrpp7cvX3DBBWqBRx55ZKZW++yzz9zc3ObNm9nzK6+8cuPGjVddddWSJUvw85H3z81bN6vB7kuXOAenvnS/Gx946n/csen6+594fPP2/fdYCgDXP/Dkl6772Yo9dxt5v3XHPEAyg9/4k6e2bR996v/bMPJw7EF7bX5ufo/duo9es+GXb3z5ija/5tB9v3fPL/7ojYfFH67ca+mz2+atElbsVS3AlSrlyRe7K2bExyHfa+1s3S8z0hrdpuJdvqbVDiC8b2y0Rv35HqRsQZ5iYJm2tmKyFUvTZhGrSjCwlAgWmAzpyHvotAMZfz0qpSiNmHnrtLGkjC6z/u0o85C1NOP6a6kcXszOjHwHek3FhgtCf4qt5ZLKuK/0lxsnGIvV70X89HIdE6yd0yPQFCt8zGrHLyroN/qFx0pBrHGqJmoh1QJ6ZNvpbiFSY3/RNZTrpTDuApGPc5jF2saNTz4DwcIu30Eswe8YzKJPjfdNogiABSsah1Sr49C8XAMQTgNsu1NsvMA4GWqUV3D1AtWSEU4+YxWh8mkAZUpUG2T5JKAUvZWOieB411YQdoCkIpuwWQXETkYkWYR6O7NTMWYX8uc+PYfFbAEGgJNOOumzn/3s7/3e72FQGtcWpo5dt27dn/7pn27YsKFpmk984hPtMd3RiIBP+SRT4CA64ogjDjzwQIZ+AeDkQ/e98+Fn2MOfP/3cC/cmttaR9//LKQefFA4Gr3v4mT+99N4Nnz6tcfCJS+9lPx+N/G8cfcD/gZAtbU5ql9UatYT3nX7I0iWLdzBUqrQIKGkP+17M7FpDvkdsdA6fXgkrOz3jRravZLWDYAjDd/n63HatirYiBpLcgqgyto0/4lz0R/MJy2lOV8C27QIO0XxGItgp6NcWp5pWGg32+aDpoOixqzI/L6n/YyCEKtvswohyaTTG0RW1MwgbB/lKhBVWYkEXC6xO5FWPPDoaZUCuOGzBQL9DJUxMZdw3+mvwwLT6PSAvdqkREAYpWjxHmOo9NN4aefn5WciGZIPpBR9FqCpg0aRxCc9l7C/m/81i5BDNIgD2tsWozBzLI3ybnPGOaqHPvzP2+xJzdgEFB1Jhfex8wq7yRlZ675mFlNGgwPkxhk+moizwWn/R41h31YlS2Mv5+aDsNNyHmU70PoVE0ayfDrF6UscUchlxYUWH9csipA9/+MNr1qy59tpr23++9rWvve222wBgfn7+1ltvfd3rXhff3LRp0x577NE0TXzyute97gc/+MGmTZvik9NOO+2yyy7bsWNHfCILXL58uff+sccey1esaZr5+flY1NatW3/+cyWE8l+f97Kv3vifd//ns/HJfz657f+54T/Zaycess9lt6efb3r6uT12W9LQrmuc27pj1L689o5NI20ovvaI/W976Ok2f+MDT55+1AFq5WUJ3sMDv9jyyFOLK852pUqLjLyT+0v2/ZBakl7pd2M5UULQ1doslBKKgUpjR7uyGqDdhF0G2Kdbp1tW9Jd2UTGnhtfQN8BSftFbc0xJYacQWW1j3Cbf3QkcOJP+qtxERXxWJ6vNIAE4WNdi9SHqi8VJ7wQ3I9bQzqNOinewsqSbktZoRJAcKOMMCVv/qiORuIrSIt4OHOKFpXrvKca08bs2l52DJR/50IdEsSJVPl1YxYzeQe37ErTc/RW1fOxULwFhY97o9tv5mFv5Ng96H38XjNLkO4H34+AYq/yxfj1hvxjFWxUd/FmkQCsde0XUeSUET5IR6gi8vkwMMzOrGcKZEeEP5dhCEvZ21vtlnDHjA41Go9Fo/uCDD5p9S4rohz/84cUXX/zUU08dc8wxe+21l3PujW9848UXX/xHf/RHAHDKKad8/vOfX7du3Ze//OXzzjvvLW95S/zhgQce+LWvfe0b3/jG+vXr77rrrhUrVpx11ln77bffRz/60W9961s333zzIYcccuaZZ956662f+9znvvOd79xxxx1r1qw544wzWIFzc3MPPPDA5z73ufXr199zzz0bN2589atfffHFF//0pz8944wzbrjhhosvvvjEE09cs2bN5Zdfvnbt2lWrVh166KF/93d/t3bt2tatGtML997trce96M+v2Hj1hl9ed/+Tl9+x6YvX/Oy3fu0FO0b+H65+yDk4ftU+e+8+d/Jh+/637/3k//3Ro9fe98TypUtOeel+X7vpkW/c8uj6R5+96+FnV+y526tesu/Gx7Z84T8eWrqk+V9PPfh79zz+d99/8Acbfrnp6edOPCQFlD7xkH2uuPOxa+974tt3Peac+8RvvXTjpi1fuPqhJQ2cftQB//d1//mDDb98wzEr3vSKlayEzc/Nn3Phra96yb5HvnDPBeztSpV+lejhR37aLGmWLFnSNK5pGtevSVcltDH2t1QCdpfUt25+GLPDTunm3gE1oDsmMaX1iHH0dUcjL/I6W4rogVzDnCm21S8QdeMkjpkutjZLI/pVuEF93SepynDzD7YZRgsw0mg45Ked6hgtOkqc6bEqnsZFiHCe7sbKQCLsVitKLEE+2P85M5/l6C1r1ezESqZ90GRCg3vuwY33owOA1A7cW2H9ncSrggjJsiArr3843HAra6D8No8qcT6fguf2qaFpybeG1o1yaNIa0lOU6WSplTf7d1pMH5S2heJz5kUnSHOjjr0BFOX67FgHyzwmZgAAIABJREFUZ35bEn1ewCaHVH/8jzKe8xhNn4TUepZEO5y0ci3unZ+fn5+f3759+/btz5188prptq1SpUqVdjG68dZrdlu629xuc0taahrQsITYv0plE4WsWA+eeDI7+nrcefHNSXrsaEuykoXiOhQfowzoKHn5yl9ZW5x+3Jjn4x1RMR8tkzhaCjBULLlf1h+FhNiHTlO7hNwIVzGXcGqcs8UcCDZYGjwk064y9GtIFIoElalnsG870ORhXLuhCCCl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5hVZMoYaoz8ibErctuBrvuZrPvCBD5w8edJ/7eqrrz7rrLM2bPchD3nI85///F/91V/93Oc+BwBf93VfBwD/+Z//edFFF+U7h2+55ZYf/dEf/cEf/MEf/uEfPuuss974xjd+9Vd/9e/8zu/c7W53e9zjHvewhz3szDPPPPfcc//nf/5H1v+Lv/iLIYR3v/vdAPAzP/MzIYTv/d7vffCDH3zXu971oosuku//0z/903d+53f+yI/8yFOe8pQXv/jFN9988yc/+cnzzz//nve85/d+7/d+4zd+44Me9KA/+7M/A4ArrrjibW972y/8wi+85CUvufrqq88777wnPvGJUyUf//jHL7jggosuuugHf/AHv+d7vuf66693Wv/lX/7lpz3tac95znPOOeeciQg77LDDDMQc5IYn0zXUpmfR9qSzWlRuqYFbLGF+pspkhBTXI4GEURu636QrS+4H8smshqWkB7H9pshLBv5d5gkzUtq8X8s9gTDzQfRWa2cqzWVAdOtH3TFY+e+RtFtQpnbvvI7bMg0cs7oX8HWfZHJMe4BDIPdfdNXcipvuSqLTmFN1tMzyDXakqQVC8nZ8G1PgIzqpRiVC6VEdk/k/13z4ut5OIORizmXhtbtqa2xa+Vja8YzAXoqgbj1eDAvu8q2Auwp6fiWXGQ3duA7qO/tA6pggBFVh7Sb8e4iysachKZXFVzuttLfMUWgrr+pHUOqZgktDfTiNrgaHE3pgxaesOwUha4kPiRBZw4m7juKRPvPGOI7jeHQ0Hh0d3XLLzbfcfPPD/9+DlvfmeOBTn/rU0572tOc973nf/u3f7rz2p3/6pz/3cz/3vOc978lPfvIm7V5zzTVPecpTrr766jPOOOP7v//7L7300jPPPBMArrzyyic/+cmf/exnAeCXfumXXv/6109O7Atf+ML3vve9b3/72wHg7LPPft7znvdDP/RDN954433ve99XvOIVF1xwAav/5MmTJ06ceNe73nXOOed84hOf+JIv+ZJ//dd//aqv+qp3vetdD33oQz/ykY/g1dGf/exn73e/+735zW8+99xzj46OvumbvunJT37yi170oiuuuOJVr3rVe9/7XgB4zWte8+IXv/jaa6/94i/+4jPOOOP3f//3zz//fAD46Z/+6auuuuqtb30rAHzbt33bwx/+8J/6qZ8CgEsuueQ973nPH//x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c0M7cN4DowJO50ftwFV45r1xf2Re/zlkDQ5x2WnRThjHQhk1/nOfmya7aqnxDWEKUwppyt65O2nHsj32a3BthfbQSFVJ39YZm5bD+RhHke2muLNDEXGJtyTJKCz8rxq08i5LLEz7i1rhcSuorS9v2n4zNhrjZY0dzjij131ka4wj4y1L59bYfh0C0Sfkab3IMNGeJ9hdmuUGpFKBGd63+iRmZfX6201jRlmeB+q1+DmvoMMa41GUS/nmU8E20MdV9USIEIZlNdpMWlr+nvWJpBls74FV9Ri3ct0JXnM+dqTGWDtstfI9A8cld0K8sle7fW+eNZ3Pc1VOTLRSg6Kc38xVaSgx9gRn04jjAWp5npPRFmynbYlOrjtbfI5IEQiuxkYL113jrdJ9730PTYS//qu/+LwX/tHee1/vsi999QnHPfaA/ff75V972nGP+6UPn/7xpz35cc8+/qX3/qljvvyVy7/97at+/Vce87nPn3fmP33qFS997rE/98APn/axv3rH3978Zjfdf/8bPOv/eiL165T3/8M/fPhjBx980Fe/+rVXvPS5//Ht75x2+plXfOvfX3LCa55//NNmCP/5M1/4xcc+8eyPv//K//j2U57+gif+5q886hEPefozf//gGx904UWX/vmfvfiGNzzw+S96xT57733pl77yhON++b73/gm/w8zDSERQjzHutdeet7rlj3/lq5e/930ffMGLXnHc4x77jx/9pxf/wbN/+ynHv+cdbzxs3x3zAAAgAElEQVT/gkt+478+800n/ckjH/7gD/3DR17/hjef/D9edeIb37rnnnuef8HFj/n5Yx/5iId873vff/4LTzjooBtdddV3b3zjG+299/Ve+arXv+0tr73XPe/2wj94xQH77/+C5z2D6OpOdz7yTW/+6wsvuuQd7zrl1371F6699pqZFPfYYw+C6sOnnfHu937glre4+SfO/sxfnvynIYTnv+iEm9/sppd96asPO/ZnHv2on7vyP779ghedcLOb3fRLX/rqwx/24J9/1M9R2Q+c+g/vfs8H/uBFzz77k5954YtOOPecM1IIL3jBS/feZ+/LLvvyE4771Xvd8+6/88wX3OTGB1140SWv+bOXHXSjG47OapeWAOf2JopRdcQa9qRRyVaRUiSlECaUlnBvnWss42prFv2+UBa35CkbEabN/Frhbo/AzTSe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kYSVUuSXCHgl4svMooN4n1m3XuFJgjDb3VIe/0LuWbZFKk9fUn41QfEOh2KZgX1dbd3S9TTzTuP4oWhWN0V7E7loj5BYZ1tDiY2s4BKIT+/Zh0PmWyspQffP66VBj/h2onOVKcQpGkRmVROnZZ+sms31zNqlYtEKuEYWJgcq6rIXi6xx3U/8XvwOsqi/Q1xgC8vG11jWI/+WgJzyKxczxKPCYuMFlU45Q87UCZHwATgwoOZN1Q5Q8XNA+kyU2AnP+amsawWTsOL1Jj3TDWTpqDOKeJmmiYEdZTsd4PkcoK1PaNa8cT15J1DswJxL17gf6ji4FbTXJ8vqTa5Z34TUV2MNG7pDRsf6FwyFDYjQMcTn2yMo6tQhpnOG/hulB5QtN0m91NjCUm0d2QA2Pai0Lgh/B6PVflHF/zXCqkryWII3Cd/3YYDLBYU27LJnfeIz73nfhy6+5LIDD9j/jkcdftvb3OL8Cy559WvfdPYnP3fttdfu7Oy85e3vPvCA/e5y56Mu/uJlb3nrew44cP9b3uLmb3n7u6+88jvH3P3od7/3g58957yfeeC9/++/et9Hzzjr/z39zIc++H7zRjfGuM8++9z85oec+Ma3f+Zz5172pa8+//inXnXV907+y7/+4qVfvuUtb36rW/04wfntb191wh+97ouXfvnCi774rW/9+13vesf/9uI/vviSy8477+InP+lxd7rjEedfePGrX/uXZ3/qs9dec+1hh93OGXy9coYQwr/8y7+++a3vvPCiL+633753OvrI+ZsPn/6xvznl74484g63P/Q2Hznjf77rPafut98N7nqXo/fcc8/b3OYWnz/nvOMe/8shhJvc+KA3nvz2M84469/+7cqzz/70A+5/7wc98D7vP/XDb3rTX531iX++9tprD7vD7UII3/3e90IKP/fQB+Cqd9RRh1166Zff8rZ3fu5z5552+seOPvrwhzzk/r/95Od85ztXHXP3O1/vetebY3Hf/tDbPP+FJ3z4tDM+/4Xz73jUET95r7u/412nfP7z573zXac8+UnHHX2nI+9856Pe8c5TzjlneXOnOx35znefcubHz37Yw37mpgcffPzz/vBORx959ic/8w8f/sgRh9/hIQ++3/kXXPya1570yU9+9tprrz3ggP1//7+94pJLLj33vIue/KTjbrDf/27u6nGu2WlwcloK7loo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","disable_correlation":true,"first_seen":"2024-08-01T20:30:03.667000+00:00","to_ids":false,"type":"attachment","uuid":"dfac6f7a-36e4-4ab7-8ac3-84ee55ddc724","value":"screenshot_landing_page.png"},{"category":"External analysis","comment":"HTTP Archive (HAR) of the whole capture","data":"eyJsb2ciOiB7InZlcnNpb24iOiAiMS4yIiwgImNyZWF0b3IiOiB7Im5hbWUiOiAiUGxheXdyaWdodCIsICJ2ZXJzaW9uIjogIjEuNDUuMyJ9LCAiYnJvd3NlciI6IHsibmFtZSI6ICJjaHJvbWl1bSIsICJ2ZXJzaW9uIjogIjEyNy4wLjY1MzMuMTcifSwgInBhZ2VzIjogW3sic3RhcnRlZERhdGVUaW1lIjogIjIwMjQtMDgtMDFUMjA6MzA6MDMuNTkyWiIsICJpZCI6ICJwYWdlQDgxMTM3Y2YzOWNhMDNlZWVkYTVhYWVjYjczZjBhZmU2IiwgInRpdGxlIjogIlNpZ24gaW4gdG8geW91ciBNaWNyb3NvZnQgYWNjb3VudCIsICJwYWdlVGltaW5ncyI6IHsib25Db250ZW50TG9hZCI6IDE3NTEsICJvbkxvYWQiOiAxNzczfX1dLCAiZW50cmllcyI6IFt7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDI0LTA4LTAxVDIwOjMwOjAzLjY2N1oiLCAidGltZSI6IDE2Ni42NjMsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL2FrYS5tcy9hbGNhIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkFjY2VwdCIsICJ2YWx1ZSI6ICJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSxpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZywqLyo7cT0wLjgsYXBwbGljYXRpb24vc2lnbmVkLWV4Y2hhbmdlO3Y9YjM7cT0wLjcifSwgeyJuYW1lIjogIkFjY2VwdC1FbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciwgenN0ZCJ9LCB7Im5hbWUiOiAiQWNjZXB0LUxhbmd1YWdlIiwgInZhbHVlIjogImVuLVVTLGVuO3E9MC45In0sIHsibmFtZSI6ICJDb25uZWN0aW9uIiwgInZhbHVlIjogImtlZXAtYWxpdmUifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAiYWthLm1zIn0sIHsibmFtZSI6ICJTZWMtRmV0Y2gtRGVzdCIsICJ2YWx1ZSI6ICJkb2N1bWVudCJ9LCB7Im5hbWUiOiAiU2VjLUZldGNoLU1vZGUiLCAidmFsdWUiOiAibmF2aWdhdGUifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1TaXRlIiwgInZhbHVlIjogIm5vbmUifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1Vc2VyIiwgInZhbHVlIjogIj8xIn0sIHsibmFtZSI6ICJVcGdyYWRlLUluc2VjdXJlLVJlcXVlc3RzIiwgInZhbHVlIjogIjEifSwgeyJuYW1lIjogIlVzZXItQWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyNy4wLjY1MzMuMTcgU2FmYXJpLzUzNy4zNiJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhIiwgInZhbHVlIjogIlwiQ2hyb21pdW1cIjt2PVwiMTI3XCIsIFwiTm90KUE7QnJhbmRcIjt2PVwiOTlcIiJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLW1vYmlsZSIsICJ2YWx1ZSI6ICI/MCJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLXBsYXRmb3JtIiwgInZhbHVlIjogIlwiV2luZG93c1wiIn1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjM3LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAzMDEsICJzdGF0dXNUZXh0IjogIk1vdmVkIFBlcm1hbmVudGx5IiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibWF4LWFnZT0wLCBuby1jYWNoZSwgbm8tc3RvcmUifSwgeyJuYW1lIjogIkNvbm5lY3Rpb24iLCAidmFsdWUiOiAia2VlcC1hbGl2ZSJ9LCB7Im5hbWUiOiAiQ29udGVudC1MZW5ndGgiLCAidmFsdWUiOiAiMCJ9LCB7Im5hbWUiOiAiRGF0ZSIsICJ2YWx1ZSI6ICJUaHUsIDAxIEF1ZyAyMDI0IDIwOjMwOjA0IEdNVCJ9LCB7Im5hbWUiOiAiRXhwaXJlcyIsICJ2YWx1ZSI6ICJUaHUsIDAxIEF1ZyAyMDI0IDIwOjMwOjA0IEdNVCJ9LCB7Im5hbWUiOiAiTG9jYXRpb24iLCAidmFsdWUiOiAiaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL2EifSwgeyJuYW1lIjogIlByYWdtYSIsICJ2YWx1ZSI6ICJuby1jYWNoZSJ9LCB7Im5hbWUiOiAiUmVxdWVzdC1Db250ZXh0IiwgInZhbHVlIjogImFwcElkPWNpZC12MToyNmVmMTE1NC01OTk1LTRkMjQtYWQ3OC1lZjBiMDRmMTE1ODcifSwgeyJuYW1lIjogIlNlcnZlciIsICJ2YWx1ZSI6ICJLZXN0cmVsIn0sIHsibmFtZSI6ICJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IiwgInZhbHVlIjogIm1heC1hZ2U9MzE1MzYwMDAgOyBpbmNsdWRlU3ViRG9tYWlucyJ9LCB7Im5hbWUiOiAiWC1SZXNwb25zZS1DYWNoZS1TdGF0dXMiLCAidmFsdWUiOiAiVHJ1ZSJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAtMSwgIm1pbWVUeXBlIjogIngtdW5rbm93biIsICJjb21wcmVzc2lvbiI6IDB9LCAiaGVhZGVyc1NpemUiOiA0MzcsICJib2R5U2l6ZSI6IDAsICJyZWRpcmVjdFVSTCI6ICJodHRwczovL2FjY291bnQubGl2ZS5jb20vYSIsICJfdHJhbnNmZXJTaXplIjogNDM3fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAwLjA2NiwgImNvbm5lY3QiOiAzMC42NzYsICJzc2wiOiAyMi42MTksICJzZW5kIjogMCwgIndhaXQiOiAxMDcuNjc1LCAicmVjZWl2ZSI6IDUuNjI3fSwgInBhZ2VyZWYiOiAicGFnZUA4MTEzN2NmMzljYTAzZWVlZGE1YWFlY2I3M2YwYWZlNiIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiMTA0LjExOS4xMTAuMTIxIiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMyIsICJzdWJqZWN0TmFtZSI6ICJnby5taWNyb3NvZnQuY29tIiwgImlzc3VlciI6ICJNaWNyb3NvZnQgQXp1cmUgUlNBIFRMUyBJc3N1aW5nIENBIDA0IiwgInZhbGlkRnJvbSI6IDE2OTU2NTkxNzEsICJ2YWxpZFRvIjogMTcyNjc2MzE3MX19LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDI0LTA4LTAxVDIwOjMwOjA0LjA3MFoiLCAidGltZSI6IDE4OC4yODIsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL2FjY291bnQubGl2ZS5jb20vYSIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICI6YXV0aG9yaXR5IiwgInZhbHVlIjogImFjY291bnQubGl2ZS5jb20ifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvYSJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuNyJ9LCB7Im5hbWUiOiAiYWNjZXB0LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyLCB6c3RkIn0sIHsibmFtZSI6ICJhY2NlcHQtbGFuZ3VhZ2UiLCAidmFsdWUiOiAiZW4tVVMsZW47cT0wLjkifSwgeyJuYW1lIjogInByaW9yaXR5IiwgInZhbHVlIjogInU9MCwgaSJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhIiwgInZhbHVlIjogIlwiQ2hyb21pdW1cIjt2PVwiMTI3XCIsIFwiTm90KUE7QnJhbmRcIjt2PVwiOTlcIiJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLW1vYmlsZSIsICJ2YWx1ZSI6ICI/MCJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLXBsYXRmb3JtIiwgInZhbHVlIjogIlwiV2luZG93c1wiIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJkb2N1bWVudCJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAibmF2aWdhdGUifSwgeyJuYW1lIjogInNlYy1mZXRjaC1zaXRlIiwgInZhbHVlIjogIm5vbmUifSwgeyJuYW1lIjogInNlYy1mZXRjaC11c2VyIiwgInZhbHVlIjogIj8xIn0sIHsibmFtZSI6ICJ1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzIiwgInZhbHVlIjogIjEifSwgeyJuYW1lIjogInVzZXItYWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyNy4wLjY1MzMuMTcgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDY4NSwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMzAyLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiYW1zYyIsICJ2YWx1ZSI6ICJQYjFUWE44QTVoRlZUYmlTTlZ0L1pweVlqMnBkaDVodXVncm9jUTFYb3dzMWJtTUZtVzVPbDNKUkRHY0dZTC8xVVBNM2trait0Sy9EWjVVTEdXK0tMYjhnNXpMUEFIZUZtSjdGbDNUSmFxRGpYNDJkMEVVcURreDdKTWhrU3RTT01UaWxxQUs2aTdwSDljaDQyeGxmM25jNHhZbS9EQURuYk1RbGNGRnp3RnpVOW84Q0RUTjNja2phRklDdkRuK1JwOU5wcG9PQnoxemIyVjljcGRoU0E4RTVEdm1ST2s0MElPTGJsRXJmbFJrUDUrbnBMSkJMUk1pcVNoTWJqTm0wOjI6M2MiLCAiaHR0cE9ubHkiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSJ9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogImFtc2VydmVyIiwgInZhbHVlIjogImV1c1hYWFhkYzAwMDA5MyJ9LCB7Im5hbWUiOiAiY2FjaGUtY29udHJvbCIsICJ2YWx1ZSI6ICJuby1jYWNoZSwgbm8tc3RvcmUifSwgeyJuYW1lIjogImNvbnRlbnQtbGVuZ3RoIiwgInZhbHVlIjogIjQwMCJ9LCB7Im5hbWUiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCJ9LCB7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJUaHUsIDAxIEF1ZyAyMDI0IDIwOjMwOjA0IEdNVCJ9LCB7Im5hbWUiOiAiZXhwaXJlcyIsICJ2YWx1ZSI6ICItMSJ9LCB7Im5hbWUiOiAibG9jYXRpb24iLCAidmFsdWUiOiAiaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9sb2dpbi5zcmY/d2E9d3NpZ25pbjEuMCZycHNudj0xNTcmY3Q9MTcyMjU0NDIwNCZydmVyPTcuNS4yMTU2LjAmd3A9U0FfMjBNSU4md3JlcGx5PWh0dHBzJTNBJTJGJTJGYWNjb3VudC5saXZlLmNvbSUyRmElM0Z1YWlkJTNEMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmbGM9MTAzMyZpZD0zODkzNiZta3Q9ZW4tVVMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiJ9LCB7Im5hbWUiOiAicDNwIiwgInZhbHVlIjogIkNBTyBEU1AgQ09SIEFETWEgREVWIENPTm8gVEVMbyBDVVIgUFNBIFBTRCBUQUkgSVZEbyBPVVIgU0FNIEJVUyBERU0gTkFWIFNUQSBVTkkgQ09NIElOVCBQSFkgT05MIEZJTiBQUkUgUFVSIn0sIHsibmFtZSI6ICJwcmFnbWEiLCAidmFsdWUiOiAibm8tY2FjaGUifSwgeyJuYW1lIjogInJlZmVycmVyLXBvbGljeSIsICJ2YWx1ZSI6ICJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIn0sIHsibmFtZSI6ICJzZXQtY29va2llIiwgInZhbHVlIjogImFtc2M9UGIxVFhOOEE1aEZWVGJpU05WdC9acHlZajJwZGg1aHV1Z3JvY1ExWG93czFibU1GbVc1T2wzSlJER2NHWUwvMVVQTTNra2ordEsvRFo1VUxHVytLTGI4ZzV6TFBBSGVGbUo3RmwzVEphcURqWDQyZDBFVXFEa3g3Sk1oa1N0U09NVGlscUFLNmk3cEg5Y2g0MnhsZjNuYzR4WW0vREFEbmJNUWxjRkZ6d0Z6VTlvOENEVE4zY2tqYUZJQ3ZEbitScDlOcHBvT0J6MXpiMlY5Y3BkaFNBOEU1RHZtUk9rNDBJT0xibEVyZmxSa1A1K25wTEpCTFJNaXFTaE1iak5tMDoyOjNjOyBkb21haW49LmxpdmUuY29tOyBwYXRoPS87IHNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPU5vbmUifSwgeyJuYW1lIjogInN0cmljdC10cmFuc3BvcnQtc2VjdXJpdHkiLCAidmFsdWUiOiAibWF4LWFnZT0zMTUzNjAwMDsgaW5jbHVkZVN1YkRvbWFpbnMifSwgeyJuYW1lIjogIngtY2FjaGUiLCAidmFsdWUiOiAiQ09ORklHX05PQ0FDSEUifSwgeyJuYW1lIjogIngtY29udGVudC10eXBlLW9wdGlvbnMiLCAidmFsdWUiOiAibm9zbmlmZiJ9LCB7Im5hbWUiOiAieC1mcmFtZS1vcHRpb25zIiwgInZhbHVlIjogImRlbnkifSwgeyJuYW1lIjogIngtbXMtYW1zZXJ2ZXIiLCAidmFsdWUiOiAiZXVzWFhYWDAwOTMgKDIuMC4zNDE5LjMpIn0sIHsibmFtZSI6ICJ4LW1zLWFtc2VydmVyLXRtIiwgInZhbHVlIjogIjE1bXMifSwgeyJuYW1lIjogIngtbXMtcmVxdWVzdC1pZCIsICJ2YWx1ZSI6ICI4MTM0YzdlMC0zNmVmLTQxNzEtYWIwOS1iMGMzMDAxNzQ1MjYifSwgeyJuYW1lIjogIngtbXNlZGdlLXJlZiIsICJ2YWx1ZSI6ICJSZWYgQTogODEzNEM3RTAzNkVGNDE3MUFCMDlCMEMzMDAxNzQ1MjYgUmVmIEI6IEZSQUVER0UxNDIyIFJlZiBDOiAyMDI0LTA4LTAxVDIwOjMwOjA0WiJ9LCB7Im5hbWUiOiAieC14c3MtcHJvdGVjdGlvbiIsICJ2YWx1ZSI6ICIxOyBtb2RlPWJsb2NrIn1dLCAiY29udGVudCI6IHsic2l6ZSI6IC0xLCAibWltZVR5cGUiOiAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwgImNvbXByZXNzaW9uIjogMH0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDQwMCwgInJlZGlyZWN0VVJMIjogImh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmP3dhPXdzaWduaW4xLjAmcnBzbnY9MTU3JmN0PTE3MjI1NDQyMDQmcnZlcj03LjUuMjE1Ni4wJndwPVNBXzIwTUlOJndyZXBseT1odHRwcyUzQSUyRiUyRmFjY291bnQubGl2ZS5jb20lMkZhJTNGdWFpZCUzRDA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JmxjPTEwMzMmaWQ9Mzg5MzYmbWt0PWVuLVVTJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYiLCAiX3RyYW5zZmVyU2l6ZSI6IDQwMH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogMC4wNDgsICJjb25uZWN0IjogNDUuMzk5LCAic3NsIjogMzQuODMsICJzZW5kIjogMCwgIndhaXQiOiAxMDMuODc2LCAicmVjZWl2ZSI6IDQuMTI5fSwgInBhZ2VyZWYiOiAicGFnZUA4MTEzN2NmMzljYTAzZWVlZGE1YWFlY2I3M2YwYWZlNiIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MjA6MWVjOjIxOjoyMl0iLCAiX3NlcnZlclBvcnQiOiA0NDMsICJfc2VjdXJpdHlEZXRhaWxzIjogeyJwcm90b2NvbCI6ICJUTFMgMS4zIiwgInN1YmplY3ROYW1lIjogImFjY291bnQubGl2ZS5jb20iLCAiaXNzdWVyIjogIk1pY3Jvc29mdCBBenVyZSBSU0EgVExTIElzc3VpbmcgQ0EgMDciLCAidmFsaWRGcm9tIjogMTcyMDc3MjgzOCwgInZhbGlkVG8iOiAxNzUxODc2ODM4fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjQtMDgtMDFUMjA6MzA6MDQuMzU1WiIsICJ0aW1lIjogMjMyLjkwNSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmP3dhPXdzaWduaW4xLjAmcnBzbnY9MTU3JmN0PTE3MjI1NDQyMDQmcnZlcj03LjUuMjE1Ni4wJndwPVNBXzIwTUlOJndyZXBseT1odHRwcyUzQSUyRiUyRmFjY291bnQubGl2ZS5jb20lMkZhJTNGdWFpZCUzRDA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JmxjPTEwMzMmaWQ9Mzg5MzYmbWt0PWVuLVVTJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8xLjEiLCAiY29va2llcyI6IFt7Im5hbWUiOiAiYW1zYyIsICJ2YWx1ZSI6ICJQYjFUWE44QTVoRlZUYmlTTlZ0L1pweVlqMnBkaDVodXVncm9jUTFYb3dzMWJtTUZtVzVPbDNKUkRHY0dZTC8xVVBNM2trait0Sy9EWjVVTEdXK0tMYjhnNXpMUEFIZUZtSjdGbDNUSmFxRGpYNDJkMEVVcURreDdKTWhrU3RTT01UaWxxQUs2aTdwSDljaDQyeGxmM25jNHhZbS9EQURuYk1RbGNGRnp3RnpVOW84Q0RUTjNja2phRklDdkRuK1JwOU5wcG9PQnoxemIyVjljcGRoU0E4RTVEdm1ST2s0MElPTGJsRXJmbFJrUDUrbnBMSkJMUk1pcVNoTWJqTm0wOjI6M2MifV0sICJoZWFkZXJzIjogW3sibmFtZSI6ICJBY2NlcHQiLCAidmFsdWUiOiAidGV4dC9odG1sLGFwcGxpY2F0aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksaW1hZ2UvYXZpZixpbWFnZS93ZWJwLGltYWdlL2FwbmcsKi8qO3E9MC44LGFwcGxpY2F0aW9uL3NpZ25lZC1leGNoYW5nZTt2PWIzO3E9MC43In0sIHsibmFtZSI6ICJBY2NlcHQtRW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSwgYnIsIHpzdGQifSwgeyJuYW1lIjogIkFjY2VwdC1MYW5ndWFnZSIsICJ2YWx1ZSI6ICJlbi1VUyxlbjtxPTAuOSJ9LCB7Im5hbWUiOiAiQ29ubmVjdGlvbiIsICJ2YWx1ZSI6ICJrZWVwLWFsaXZlIn0sIHsibmFtZSI6ICJDb29raWUiLCAidmFsdWUiOiAiYW1zYz1QYjFUWE44QTVoRlZUYmlTTlZ0L1pweVlqMnBkaDVodXVncm9jUTFYb3dzMWJtTUZtVzVPbDNKUkRHY0dZTC8xVVBNM2trait0Sy9EWjVVTEdXK0tMYjhnNXpMUEFIZUZtSjdGbDNUSmFxRGpYNDJkMEVVcURreDdKTWhrU3RTT01UaWxxQUs2aTdwSDljaDQyeGxmM25jNHhZbS9EQURuYk1RbGNGRnp3RnpVOW84Q0RUTjNja2phRklDdkRuK1JwOU5wcG9PQnoxemIyVjljcGRoU0E4RTVEdm1ST2s0MElPTGJsRXJmbFJrUDUrbnBMSkJMUk1pcVNoTWJqTm0wOjI6M2MifSwgeyJuYW1lIjogIkhvc3QiLCAidmFsdWUiOiAibG9naW4ubGl2ZS5jb20ifSwgeyJuYW1lIjogIlNlYy1GZXRjaC1EZXN0IiwgInZhbHVlIjogImRvY3VtZW50In0sIHsibmFtZSI6ICJTZWMtRmV0Y2gtTW9kZSIsICJ2YWx1ZSI6ICJuYXZpZ2F0ZSJ9LCB7Im5hbWUiOiAiU2VjLUZldGNoLVNpdGUiLCAidmFsdWUiOiAibm9uZSJ9LCB7Im5hbWUiOiAiU2VjLUZldGNoLVVzZXIiLCAidmFsdWUiOiAiPzEifSwgeyJuYW1lIjogIlVwZ3JhZGUtSW5zZWN1cmUtUmVxdWVzdHMiLCAidmFsdWUiOiAiMSJ9LCB7Im5hbWUiOiAiVXNlci1BZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI3LjAuNjUzMy4xNyBTYWZhcmkvNTM3LjM2In0sIHsibmFtZSI6ICJzZWMtY2gtdWEiLCAidmFsdWUiOiAiXCJDaHJvbWl1bVwiO3Y9XCIxMjdcIiwgXCJOb3QpQTtCcmFuZFwiO3Y9XCI5OVwiIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtbW9iaWxlIiwgInZhbHVlIjogIj8wIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtcGxhdGZvcm0iLCAidmFsdWUiOiAiXCJXaW5kb3dzXCIifV0sICJxdWVyeVN0cmluZyI6IFt7Im5hbWUiOiAid2EiLCAidmFsdWUiOiAid3NpZ25pbjEuMCJ9LCB7Im5hbWUiOiAicnBzbnYiLCAidmFsdWUiOiAiMTU3In0sIHsibmFtZSI6ICJjdCIsICJ2YWx1ZSI6ICIxNzIyNTQ0MjA0In0sIHsibmFtZSI6ICJydmVyIiwgInZhbHVlIjogIjcuNS4yMTU2LjAifSwgeyJuYW1lIjogIndwIiwgInZhbHVlIjogIlNBXzIwTUlOIn0sIHsibmFtZSI6ICJ3cmVwbHkiLCAidmFsdWUiOiAiaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL2E/dWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiJ9LCB7Im5hbWUiOiAibGMiLCAidmFsdWUiOiAiMTAzMyJ9LCB7Im5hbWUiOiAiaWQiLCAidmFsdWUiOiAiMzg5MzYifSwgeyJuYW1lIjogIm1rdCIsICJ2YWx1ZSI6ICJlbi1VUyJ9LCB7Im5hbWUiOiAidWFpZCIsICJ2YWx1ZSI6ICIwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiJ9XSwgImhlYWRlcnNTaXplIjogOTI2LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIk9LIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMS4xIiwgImNvb2tpZXMiOiBbeyJuYW1lIjogInVhaWQiLCAidmFsdWUiOiAiMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYiLCAic2VjdXJlIjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUiLCAiaHR0cE9ubHkiOiB0cnVlfSwgeyJuYW1lIjogIk1TUFJlcXUiLCAidmFsdWUiOiAiaWQ9Mzg5MzYmbHQ9MTcyMjU0NDIwNCZjbz0xIiwgInNlY3VyZSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIiwgImh0dHBPbmx5IjogdHJ1ZX0sIHsibmFtZSI6ICJNU0NDIiwgInZhbHVlIjogIjE4NS4xOTQuOTMuNDktTFUiLCAic2VjdXJlIjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUiLCAiaHR0cE9ubHkiOiB0cnVlfSwgeyJuYW1lIjogIk1TUE9LIiwgInZhbHVlIjogIiR1dWlkLTljNWVhMWQwLTUzYzktNDU1Ni04N2FhLWJmYmM2OWQ3ODI4ZSIsICJzZWN1cmUiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSIsICJodHRwT25seSI6IHRydWV9LCB7Im5hbWUiOiAiT1BhcmFtcyIsICJ2YWx1ZSI6ICIxMU8uRHVBYjVuT0ZIUXM4d3RhVXVGSVBneDJ3ZjZUTjVKNVBQNlR1V0VPV2FzOTh6cyFKeSpvM0IwcE5FRmlNV3RZUUFBSjdpaGxxYzZkamFoRWtwNjRwUXVES0ppcnJjOVZ6eWNMOHp1WVB0eVRUVG5Nck13SW5JNVgyWTVONUxCN0dZRDFjOWlBNWNEeUJhaDFjc3NySHE4czR2WndlQXpjTGJDTGlKbDIqam9CUFMxUmFnVG90VlFMZGE2dDlqdiE4MjlKYlJUQ3RERXpUSE9WT2pMMksxb1ZZd0U1dWVlaU82OGVPeWtmdXBIaWRWejlSVzYzZks2ZHBWbjQ5S1lNbThucFpGQUozSjl6IVV5M2Fib3hjSWxGckVQa01sZWp0MSFnVEJHcVlaVSpSODQwNFByUERXd3YzdmpUN2JNN3UzcFhZMzlXdktrWEdTSXFkR0hZZ3ghOSpqS3kzUElCZVRKbVNkQ2FGV3NpbSIsICJzZWN1cmUiOiB0cnVlLCAic2FtZVNpdGUiOiAiTm9uZSIsICJodHRwT25seSI6IHRydWV9XSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIkNhY2hlLUNvbnRyb2wiLCAidmFsdWUiOiAibm8tc3RvcmUsIG5vLWNhY2hlIn0sIHsibmFtZSI6ICJDb250ZW50LUVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogIkNvbnRlbnQtTGVuZ3RoIiwgInZhbHVlIjogIjEwOTI5In0sIHsibmFtZSI6ICJDb250ZW50LVR5cGUiLCAidmFsdWUiOiAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04In0sIHsibmFtZSI6ICJEYXRlIiwgInZhbHVlIjogIlRodSwgMDEgQXVnIDIwMjQgMjA6MzA6MDMgR01UIn0sIHsibmFtZSI6ICJFeHBpcmVzIiwgInZhbHVlIjogIlRodSwgMDEgQXVnIDIwMjQgMjA6Mjk6MDQgR01UIn0sIHsibmFtZSI6ICJMaW5rIiwgInZhbHVlIjogIjxodHRwczovL2xvZ2luY2RuLm1zZnRhdXRoLm5ldD47IHJlbD1wcmVjb25uZWN0OyBjcm9zc29yaWdpbiJ9LCB7Im5hbWUiOiAiTGluayIsICJ2YWx1ZSI6ICI8aHR0cHM6Ly9hY2N0Y2RuLm1zYXV0aC5uZXQ+OyByZWw9cHJlY29ubmVjdDsgY3Jvc3NvcmlnaW4ifSwgeyJuYW1lIjogIkxpbmsiLCAidmFsdWUiOiAiPGh0dHBzOi8vYWNjdGNkbi5tc2Z0YXV0aC5uZXQ+OyByZWw9cHJlY29ubmVjdDsgY3Jvc3NvcmlnaW4ifSwgeyJuYW1lIjogIkxpbmsiLCAidmFsdWUiOiAiPGh0dHBzOi8vYWNjdGNkbi5tc2F1dGgubmV0Lz47IHJlbD1kbnMtcHJlZmV0Y2gifSwgeyJuYW1lIjogIkxpbmsiLCAidmFsdWUiOiAiPGh0dHBzOi8vYWNjdGNkbi5tc2Z0YXV0aC5uZXQvPjsgcmVsPWRucy1wcmVmZXRjaCJ9LCB7Im5hbWUiOiAiTGluayIsICJ2YWx1ZSI6ICI8aHR0cHM6Ly9hY2N0Y2RubXNmdHVzd2UyLmF6dXJlZWRnZS5uZXQvPjsgcmVsPWRucy1wcmVmZXRjaCJ9LCB7Im5hbWUiOiAiTGluayIsICJ2YWx1ZSI6ICI8aHR0cHM6Ly9hY2N0Y2RudnpldW5vLmF6dXJlZWRnZS5uZXQvPjsgcmVsPWRucy1wcmVmZXRjaCJ9LCB7Im5hbWUiOiAiTGluayIsICJ2YWx1ZSI6ICI8aHR0cHM6Ly9sb2dpbmNkbi5tc2F1dGgubmV0Lz47IHJlbD1kbnMtcHJlZmV0Y2gifSwgeyJuYW1lIjogIkxpbmsiLCAidmFsdWUiOiAiPGh0dHBzOi8vbG9naW5jZG4ubXNmdGF1dGgubmV0Lz47IHJlbD1kbnMtcHJlZmV0Y2gifSwgeyJuYW1lIjogIkxpbmsiLCAidmFsdWUiOiAiPGh0dHBzOi8vbGdpbmNkbnZ6ZXVuby5henVyZWVkZ2UubmV0Lz47IHJlbD1kbnMtcHJlZmV0Y2gifSwgeyJuYW1lIjogIkxpbmsiLCAidmFsdWUiOiAiPGh0dHBzOi8vbGdpbmNkbm1zZnR1c3dlMi5henVyZWVkZ2UubmV0Lz47IHJlbD1kbnMtcHJlZmV0Y2gifSwgeyJuYW1lIjogIlAzUCIsICJ2YWx1ZSI6ICJDUD1cIkRTUCBDVVIgT1RQaSBJTkQgT1RSaSBPTkwgRklOXCIifSwgeyJuYW1lIjogIlBQU2VydmVyIiwgInZhbHVlIjogIlBQVjogMzAgSDogU04xUEVQRjAwMDJGMEE4IFY6IDAifSwgeyJuYW1lIjogIlByYWdtYSIsICJ2YWx1ZSI6ICJuby1jYWNoZSJ9LCB7Im5hbWUiOiAiUmVmZXJyZXItUG9saWN5IiwgInZhbHVlIjogInN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4ifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAidWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNjsgZG9tYWluPWxvZ2luLmxpdmUuY29tOyBTZWN1cmU7IHBhdGg9LzsgU2FtZVNpdGU9Tm9uZTsgSHR0cE9ubHkifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiTVNQUmVxdT1pZD0zODkzNiZsdD0xNzIyNTQ0MjA0JmNvPTE7IGRvbWFpbj1sb2dpbi5saXZlLmNvbTsgU2VjdXJlOyBwYXRoPS87IFNhbWVTaXRlPU5vbmU7IEh0dHBPbmx5In0sIHsibmFtZSI6ICJTZXQtQ29va2llIiwgInZhbHVlIjogIk1TQ0M9MTg1LjE5NC45My40OS1MVTsgZXhwaXJlcz1UdWUsIDI2LUF1Zy0yMDI1IDIwOjMwOjA0IEdNVDsgZG9tYWluPWxvZ2luLmxpdmUuY29tOyBTZWN1cmU7IHBhdGg9LzsgU2FtZVNpdGU9Tm9uZTsgSHR0cE9ubHkifSwgeyJuYW1lIjogIlNldC1Db29raWUiLCAidmFsdWUiOiAiTVNQT0s9JHV1aWQtOWM1ZWExZDAtNTNjOS00NTU2LTg3YWEtYmZiYzY5ZDc4MjhlOyBkb21haW49bG9naW4ubGl2ZS5jb207IFNlY3VyZTsgcGF0aD0vOyBTYW1lU2l0ZT1Ob25lOyBIdHRwT25seSJ9LCB7Im5hbWUiOiAiU2V0LUNvb2tpZSIsICJ2YWx1ZSI6ICJPUGFyYW1zPTExTy5EdUFiNW5PRkhRczh3dGFVdUZJUGd4MndmNlRONUo1UFA2VHVXRU9XYXM5OHpzIUp5Km8zQjBwTkVGaU1XdFlRQUFKN2lobHFjNmRqYWhFa3A2NHBRdURLSmlycmM5Vnp5Y0w4enVZUHR5VFRUbk1yTXdJbkk1WDJZNU41TEI3R1lEMWM5aUE1Y0R5QmFoMWNzc3JIcThzNHZad2VBemNMYkNMaUpsMipqb0JQUzFSYWdUb3RWUUxkYTZ0OWp2ITgyOUpiUlRDdERFelRIT1ZPakwySzFvVll3RTV1ZWVpTzY4ZU95a2Z1cEhpZFZ6OVJXNjNmSzZkcFZuNDlLWU1tOG5wWkZBSjNKOXohVXkzYWJveGNJbEZyRVBrTWxlanQxIWdUQkdxWVpVKlI4NDA0UHJQRFd3djN2alQ3Yk03dTNwWFkzOVd2S2tYR1NJcWRHSFlneCE5KmpLeTNQSUJlVEptU2RDYUZXc2ltOyBkb21haW49bG9naW4ubGl2ZS5jb207IFNlY3VyZTsgcGF0aD0vOyBTYW1lU2l0ZT1Ob25lOyBIdHRwT25seSJ9LCB7Im5hbWUiOiAiU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eSIsICJ2YWx1ZSI6ICJtYXgtYWdlPTMxNTM2MDAwIn0sIHsibmFtZSI6ICJWYXJ5IiwgInZhbHVlIjogIkFjY2VwdC1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiWC1Db250ZW50LVR5cGUtT3B0aW9ucyIsICJ2YWx1ZSI6ICJub3NuaWZmIn0sIHsibmFtZSI6ICJYLUROUy1QcmVmZXRjaC1Db250cm9sIiwgInZhbHVlIjogIm9uIn0sIHsibmFtZSI6ICJYLVhTUy1Qcm90ZWN0aW9uIiwgInZhbHVlIjogIjE7IG1vZGU9YmxvY2sifSwgeyJuYW1lIjogIngtbXMtcmVxdWVzdC1pZCIsICJ2YWx1ZSI6ICIyZmUzNTI4Ny03ZWE4LTRiZjgtOTcwOC0xOTM5Mjc2YWY5MTcifSwgeyJuYW1lIjogIngtbXMtcm91dGUtaW5mbyIsICJ2YWx1ZSI6ICJDNTEyX1NOMSJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAyNjMwOCwgIm1pbWVUeXBlIjogInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsICJjb21wcmVzc2lvbiI6IDE1Mzc5LCAidGV4dCI6ICI8IS0tIENvcHlyaWdodCAoQykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT48IURPQ1RZUEUgaHRtbD48IS0tIFNlcnZlckluZm86IFNOMVBFUEYwMDAyRjBBOCAyMDI0LjA3LjEwLjE0LjQxLjE1IExvY1ZlcjowIC0tPjwhLS0gUHJlcHJvY2Vzc0luZm86IENCQS0wNzEwXzE0MjIzODpTQTJQTlBGMDAwMDIzQzcsIDIwMjQtMDctMTBUMTQ6MzU6MjEuNjkzNjAxMy0wNzowMCAtIFZlcnNpb246IDE2LDAsMzAyOTMsMiAtLT48IS0tIFJlcXVlc3RMQ0lEOiAxMDMzLCBNYXJrZXQ6RU4tVVMsIFByZWZDb3VudHJ5OiBVUywgTGFuZ0xDSUQ6IDEwMzMsIExhbmdJU086IEVOIC0tPjxodG1sIGRpcj1cImx0clwiIGxhbmc9XCJFTi1VU1wiPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9XCJDb250ZW50LVR5cGVcIiBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIvPjxtZXRhIGh0dHAtZXF1aXY9XCJYLVVBLUNvbXBhdGlibGVcIiBjb250ZW50PVwiSUU9RWRnZVwiLz48bGluayByZWw9XCJwcmVjb25uZWN0XCIgaHJlZj1cImh0dHBzOi8vYWNjdGNkbi5tc2F1dGgubmV0XCIgY3Jvc3NvcmlnaW4+XG48bGluayByZWw9XCJwcmVjb25uZWN0XCIgaHJlZj1cImh0dHBzOi8vYWNjdGNkbi5tc2Z0YXV0aC5uZXRcIiBjcm9zc29yaWdpbj5cbjxsaW5rIHJlbD1cInByZWNvbm5lY3RcIiBocmVmPVwiaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXRcIiBjcm9zc29yaWdpbj5cbjxtZXRhIGh0dHAtZXF1aXY9XCJ4LWRucy1wcmVmZXRjaC1jb250cm9sXCIgY29udGVudD1cIm9uXCI+XG48bGluayByZWw9XCJkbnMtcHJlZmV0Y2hcIiBocmVmPVwiaHR0cHM6Ly9hY2N0Y2RuLm1zYXV0aC5uZXQvXCI+XG48bGluayByZWw9XCJkbnMtcHJlZmV0Y2hcIiBocmVmPVwiaHR0cHM6Ly9hY2N0Y2RuLm1zZnRhdXRoLm5ldC9cIj5cbjxsaW5rIHJlbD1cImRucy1wcmVmZXRjaFwiIGhyZWY9XCJodHRwczovL2FjY3RjZG5tc2Z0dXN3ZTIuYXp1cmVlZGdlLm5ldC9cIj5cbjxsaW5rIHJlbD1cImRucy1wcmVmZXRjaFwiIGhyZWY9XCJodHRwczovL2FjY3RjZG52emV1bm8uYXp1cmVlZGdlLm5ldC9cIj5cbjxsaW5rIHJlbD1cImRucy1wcmVmZXRjaFwiIGhyZWY9XCJodHRwczovL2xvZ2luY2RuLm1zYXV0aC5uZXQvXCI+XG48bGluayByZWw9XCJkbnMtcHJlZmV0Y2hcIiBocmVmPVwiaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvXCI+XG48bGluayByZWw9XCJkbnMtcHJlZmV0Y2hcIiBocmVmPVwiaHR0cHM6Ly9sZ2luY2RudnpldW5vLmF6dXJlZWRnZS5uZXQvXCI+XG48bGluayByZWw9XCJkbnMtcHJlZmV0Y2hcIiBocmVmPVwiaHR0cHM6Ly9sZ2luY2RubXNmdHVzd2UyLmF6dXJlZWRnZS5uZXQvXCI+XG48YmFzZSBocmVmPVwiaHR0cHM6Ly9sb2dpbi5saXZlLmNvbVwiLz48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBub25jZT1cIno4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9XCI+dHJ5e2RvY3VtZW50JiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiYoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwoZnVuY3Rpb24oZSl7ZS50YXJnZXQmJlwiaGFuZGxlLWVycm9yLXRhZ1wiPT09ZS50YXJnZXQuY2xhc3NOYW1lJiYkTG9hZGVyLk9uKGUudGFyZ2V0KX0pLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwoZnVuY3Rpb24oZSl7ZS50YXJnZXQmJlwiaGFuZGxlLWVycm9yLXRhZ1wiPT09ZS50YXJnZXQuY2xhc3NOYW1lJiYkTG9hZGVyLk9uKGUudGFyZ2V0LCEwKX0pLCEwKSl9Y2F0Y2goZSl7fTwvc2NyaXB0PjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIG5vbmNlPVwiejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT1cIj52YXIgUFJPT0YgPSB7fTtQUk9PRi5UeXBlID0ge1NRU0E6IDYsIENTUzogNSwgRGV2aWNlSWQ6IDQsIEVtYWlsOiAxLCBBbHRFbWFpbDogMiwgU01TOiAzLCBISVA6IDgsIEJpcnRoZGF5OiA5LCBUT1RQQXV0aGVudGljYXRvcjogMTAsIFJlY292ZXJ5Q29kZTogMTEsIFN0cm9uZ1RpY2tldDogMTMsIFRPVFBBdXRoZW50aWNhdG9yVjI6IDE0LCBVbml2ZXJzYWxTZWNvbmRGYWN0b3I6IDE1LCBTZWN1cml0eUtleTogMTgsIFZvaWNlOiAtM307PC9zY3JpcHQ+PG5vc2NyaXB0PjxtZXRhIGh0dHAtZXF1aXY9XCJSZWZyZXNoXCIgY29udGVudD1cIjA7IFVSTD1odHRwczovL2xvZ2luLmxpdmUuY29tL2pzRGlzYWJsZWQuc3JmP21rdD1FTi1VUyZsYz0xMDMzJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjZcIi8+TWljcm9zb2Z0IGFjY291bnQgcmVxdWlyZXMgSmF2YVNjcmlwdCB0byBzaWduIGluLiBUaGlzIHdlYiBicm93c2VyIGVpdGhlciBkb2VzIG5vdCBzdXBwb3J0IEphdmFTY3JpcHQsIG9yIHNjcmlwdHMgYXJlIGJlaW5nIGJsb2NrZWQuPGJyIC8+PGJyIC8+VG8gZmluZCBvdXQgd2hldGhlciB5b3VyIGJyb3dzZXIgc3VwcG9ydHMgSmF2YVNjcmlwdCwgb3IgdG8gYWxsb3cgc2NyaXB0cywgc2VlIHRoZSBicm93c2VyJ3Mgb25saW5lIGhlbHAuPC9ub3NjcmlwdD48dGl0bGU+U2lnbiBpbiB0byB5b3VyIE1pY3Jvc29mdCBhY2NvdW50PC90aXRsZT48bWV0YSBuYW1lPVwicm9ib3RzXCIgY29udGVudD1cIm5vbmVcIiAvPjxtZXRhIG5hbWU9XCJQYWdlSURcIiBjb250ZW50PVwiaTUwMzBcIi8+PG1ldGEgbmFtZT1cIlNpdGVJRFwiIGNvbnRlbnQ9XCIzODkzNlwiLz48bWV0YSBuYW1lPVwiUmVxTENcIiBjb250ZW50PVwiMTAzM1wiLz48bWV0YSBuYW1lPVwiTG9jTENcIiBjb250ZW50PVwiMTAzM1wiLz48bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0yLjAsIG1pbmltdW0tc2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPXllc1wiLz48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBub25jZT1cIno4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9XCI+dmFyIFNlcnZlckRhdGEgPSB7ZkZpeFVybFJlc2V0UGFzc3dvcmQ6ZmFsc2UsZUNCQnJhbmRNb2RlOjIsZkFjdGl2YXRlRm9jdXNPbkFwcHJvdmFsTnVtYmVyUmVtb3RlTkdDOmZhbHNlLGZDQkJyYW5kU2hvd1ZhbHVlUHJvcDp0cnVlLGZDQlVzZU1vZGVybkNvYnJhbmRpbmc6dHJ1ZSx1cmxQb3N0TXNhOidodHRwczovL2xvZ2luLmxpdmUuY29tL3Bwc2VjdXJlL3Bvc3Quc3JmP21rdD1lbi1VUyZpZD0zODkzNiZjb250ZXh0aWQ9MDg5NTI2NDFDMjIxQ0Y5QSZvcGlkPUQzNUJDOEI1M0EzMUUyQTcmYms9MTcyMjU0NDIwNCZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JnBpZD0wJyxmVXBncmFkZUVWQ2VydDp0cnVlLGZJc0JvdW5kQWNjb3VudDpmYWxzZSxmSXNQYXNza2V5U3VwcG9ydEVuYWJsZWQ6dHJ1ZSxpTG9naW5TdHJpbmdzVmFyaWFudElkOjAsZkVuYWJsZUNsaWVudFBlcmY6ZmFsc2UsaVByb21vdGVkRmVkQ3JlZFR5cGU6MCxmSGFzRXJyb3I6ZmFsc2UsZklzT3RjTG9naW5EaXNhYmxlZDpmYWxzZSx1cmxGaWRvSGVscDonaHR0cHM6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay8/bGlua2lkPTIwMTM3MzgnLGZJc1JlbW90ZU5HQ1N1cHBvcnRlZDp0cnVlLHVybEZvb3RlckhlbHA6Jycsc0NJRDonJyxmSGlkZUxvZ2luRGVzYzpmYWxzZSxmS01TSUVuYWJsZWQ6ZmFsc2UsdXJsTWFuYWdlQ3JlZHM6JycsZlVzZUhpZ2hDb250cmFzdE92ZXJyaWRlczpmYWxzZSxzUHJlZlNNU0NvdW50cnk6J0xVJyx1cmxNU0FjY291bnRIZWxwOidodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9MaW5rSUQ9MjU0NDg2Jyx1cmxDQlBhcnRuZXJQcmVsb2FkOicnLHVybFJlcG9ydFBhZ2VMb2FkOicnLHNQT1NUX1BhZ2luYXRlZExvZ2luU3RhdGVSTkdDU0xLOicnLHVybEVWQ2VydFVwZ3JhZGU6Jycsc1Byb29mVHlwZTonJyx1cmxGaWRvTG9naW46J2h0dHBzOi8vbG9naW4ubWljcm9zb2Z0LmNvbS9jb25zdW1lcnMvZmlkby9nZXQ/bWt0PUVOLVVTJmxjPTEwMzMmdWlmbGF2b3I9d2ViJyx1cmxMb2dpbjonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9sb2dpbi5zcmY/aWQ9Mzg5MzYmaWQ9Mzg5MzYmY29udGV4dGlkPTA4OTUyNjQxQzIyMUNGOUEmb3BpZD1EMzVCQzhCNTNBMzFFMkE3JmJrPTE3MjI1NDQyMDQmbWt0PUVOLVVTJmxjPTEwMzMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsZk1NWFFSTmV3RGVzY3JpcHRpb246dHJ1ZSx1cmxGb290ZXJUT1U6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vZ2xzLnNyZj91cmxJRD1XaW5MaXZlVGVybXNPZlVzZSZta3Q9RU4tVVMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsdXJsQ2hhbmdlUGFzc3dvcmQ6J2h0dHBzOi8vYWNjb3VudC5saXZlLmNvbS9DaGFuZ2VQYXNzd29yZD91YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jyx1cmxHZXRDcmVkZW50aWFsVHlwZTonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9HZXRDcmVkZW50aWFsVHlwZS5zcmY/b3BpZD1EMzVCQzhCNTNBMzFFMkE3JmlkPTM4OTM2JmlkPTM4OTM2Jm1rdD1FTi1VUyZsYz0xMDMzJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLG9XaGl0ZUxibFByb3BzOnsnTG9nbyc6JycsJ0xvZ29BbHRUZXh0JzonJywnTG9nb1RleHQnOicnLCdTaG93V0xIZWFkZXInOnRydWV9LHVybElQdjZFeHBlcmltZW50OicnLHVybExvc3RBdXRoZW50aWNhdG9yOidodHRwczovL2FjY291bnQubGl2ZS5jb20vUmVzZXRQYXNzd29yZC5hc3B4P3dyZXBseT1odHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZiUzZmlkJTNkMzg5MzYlMjZta3QlM2Rlbi1VUyUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiUyNmlkJTNkMzg5MzYlMjZjb250ZXh0aWQlM2QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzZEQzNUJDOEI1M0EzMUUyQTclMjZiayUzZDE3MjI1NDQyMDQmaWQ9Mzg5MzYmdWlmbGF2b3I9d2ViJmxvc3RhdXRoZW50aWNhdG9yPTEmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZta3Q9RU4tVVMmbGM9MTAzMyZiaz0xNzIyNTQ0MjA0Jyx1cmxBY2NvdW50UXVlcnk6J2h0dHBzOi8vYWNjb3VudC5saXZlLmNvbS9xdWVyeS5hc3B4P3VhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmbWt0PUVOLVVTJmxjPTEwMzMmaWQ9Mzg5MzYnLGhwZ2lkOjMzLHNSZXF1ZXN0Q291bnRyeTonTFUnLHNDQkJyYW5kU3ViVGl0bGU6JyMjbGkxNiMjIyNCIyNIb3RtYWlsIyMvQiMjIyNCUiMjVGhlIHNtYXJ0IHdheSB0byBkbyBlbWFpbCAtIGZhc3QsIGVhc3kgYW5kIHJlbGlhYmxlIyNsaTgjIyMjQiMjTWVzc2VuZ2VyIyMvQiMjIyNCUiMjU3RheSBpbiB0b3VjaCB3aXRoIHRoZSBtb3N0IGltcG9ydGFudCBwZW9wbGUgaW4geW91ciBsaWZlIyNsaTEwIyMjI0IjI1NreURyaXZlIyMvQiMjIyNCUiMjRnJlZSwgcGFzc3dvcmQtcHJvdGVjdGVkIG9ubGluZSBzdG9yYWdlJyx1cmxNc2FTdGF0aWNNZUNvbnRyb2w6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vTWUuaHRtP3Y9MyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jyx1cmxQaG9uZUxpbmtQcml2YWN5VGVybXM6J2h0dHBzOi8vZ28ubWljcm9zb2Z0LmNvbS9md2xpbmsvcC8/bGlua2lkPTg1MDc0OSNtYWlueW91cnBob25lbW9kdWxlJnByb2ZpbGU9dHJhbnNwYXJlbnRMaWdodCcsc0NCSGVhZGVyVGV4dDonJyxhMTF5Q29uZm9ybWVMaW5rOm51bGwsc0NvbnN1bWVyRG9tYWluczonJyx1cmxTZXNzaW9uU3RhdGU6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vR2V0U2Vzc2lvblN0YXRlLnNyZj9pZD0zODkzNiZta3Q9RU4tVVMmbGM9MTAzMyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JyxmQXBwbGljYXRpb25JbnNpZ2h0c0VuYWJsZWQ6ZmFsc2Usc05ldHdvcmtUeXBlOicnLHNQT1NUX1R5cGU6JycsZUNCSGVhZGVyTW9kZTowLGZBbGxvd0dyYXlPdXRMaWdodEJveDp0cnVlLGZQcmVmaXhDb29raWVEb21haW5FbmFibGVkOmZhbHNlLHVybEZlZDonJyxzdHJGZWRJbnZpdGVCbG9ja2VkTXNnOlwiI34jcGFydG5lcmRvbWFpbiN+IyBkb2VzXFwndCB1c2UgdGhpcyBzZXJ2aWNlLiBQbGVhc2Ugc2lnbiBpbiB3aXRoIGEgTWljcm9zb2Z0IGFjY291bnQgb3IgY3JlYXRlIGEgbmV3IGFjY291bnQuIDxhIGhyZWY9XFxcIiN+I1dMUGFuZUhlbHBJbnZpdGVCbG9ja2VkVVJMX0xTI34jXFxcIiBpZD1cXFwiaWRQYW5lSGVscEludml0ZUJsb2NrZWRMaW5rOVxcXCI+TGVhcm4gTW9yZTwvYT5cIixmQnJlYWtCcmFuZGluZ1NpZ25pblN0cmluZzp0cnVlLGlBcHBsaWNhdGlvbkluc2lnaHRzRW5hYmxlZFBlcmNlbnRhZ2U6MCxmU2hvd1B1c2hOb3RpZmljYXRpb25zRGVyaXNrOnRydWUsZlNob3dTaWduSW5XaXRoR2l0SHViT25seU9uQ3JlZFBpY2tlcjp0cnVlLHVybFBvc3RBYWQ6Jycsc3RyT1RDSW5mb01zZzpcIkEgc2luZ2xlLXVzZSBjb2RlIGxldHMgeW91IHNpZ24gaW4gd2l0aG91dCBlbnRlcmluZyB5b3VyIHBhc3N3b3JkLiBUaGlzIGhlbHBzIHByb3RlY3QgeW91ciBhY2NvdW50IHdoZW4geW91XFwncmUgdXNpbmcgc29tZW9uZSBlbHNlXFwncyBQQy4gPGEgaHJlZj1cXFwiaHR0cDovL2V4cGxvcmUubGl2ZS5jb20vd2luZG93cy1saXZlLXNpZ24taW4tc2luZ2xlLXVzZS1jb2RlLWZhcVxcXCIgaWQ9XFxcImlkUGFuZUhlbHBPVENJbmZvTGluazlcXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5MZWFybiBtb3JlPC9hPlwiLGZEaXNhYmxlQW5pbWF0aW9uSWZBbmltYXRpb25FbmRVbnN1cHBvcnRlZDpmYWxzZSxpRmVkU3RhdGU6MCxzdHJPVENTZXNzaW9uRXhwaXJlZE1zZzpcIllvdXIgc2Vzc2lvbiBoYXMgdGltZWQgb3V0LiBUbyByZXF1ZXN0IGEgc2luZ2xlIHVzZSBjb2RlLCBwbGVhc2UgPGEgaHJlZj1cXFwiamF2YXNjcmlwdDpOZXdPVENSZXF1ZXN0KClcXFwiPnJlZnJlc2ggdGhlIHBhZ2U8L2E+LlwiLHN0clNpZ25JbkhlYWRlcjpcIlNpZ24gaW5cIixpVVhNb2RlOjEsdXJsQXBwbGljYXRpb25JbnNpZ2h0c0VuZHBvaW50OicnLGZIaWRlTGVhcm5Nb3JlTGluazpmYWxzZSxzUE9TVF9OZXdVc2VyOicnLHNDb29raWVEb21haW46J2xvZ2luLmxpdmUuY29tJyxmVXNlU2FtZVNpdGU6dHJ1ZSx1cmxDQkJyYW5kSUZyYW1lOidodHRwczovL3NjLmltcC5saXZlLmNvbS9jb250ZW50L2RhbS9pbXAvc3VyZmFjZXMvbWFpbF9zaWduaW4vdjMvYWNjb3VudC9FTi1VUy5odG1sP2lkPTM4OTM2Jm1rdD1FTi1VUycsZkhJUEVycm9yOmZhbHNlLHNQT1NUX1BhZ2luYXRlZExvZ2luU3RhdGU6JycsdXJsQ0JCcmFuZFVwc2VsbDonJyxzUHJvb2ZDb25maXJtOicnLGZJbnN0cnVtZW50YXRpb25FbmFibGVkOnRydWUsdXJsQ0JIZWFkZXJJRnJhbWU6JycsdXJsRGlzYW1iaWdSZW5hbWU6JycsaVByb2R1Y3RJY29uOjAsaVNlcnZlckV4ZWN1dGlvblRpbWU6NCx1cmxQb3N0OidodHRwczovL2xvZ2luLmxpdmUuY29tL3Bwc2VjdXJlL3Bvc3Quc3JmP21rdD1lbi1VUyZpZD0zODkzNiZjb250ZXh0aWQ9MDg5NTI2NDFDMjIxQ0Y5QSZvcGlkPUQzNUJDOEI1M0EzMUUyQTcmYms9MTcyMjU0NDIwNCZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JnBpZD0wJyxpUmVzZXRQd2RTdHJpbmdJRDoxLHVybEZvb3RlclByaXZhY3k6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vZ2xzLnNyZj91cmxJRD1NU05Qcml2YWN5U3RhdGVtZW50Jm1rdD1FTi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JyxvV2hpdGVMYmxGb290ZXJVUkxzOnt9LHVybEltcHJlc3N1bTonJyxzQXBwVmVyc2lvbjonJyxzRlROYW1lOidQUEZUJyxzQ0JCcmFuZFRpdGxlOidzaWduIHVwJyxvV2hpdGVMYmxGb290ZXJUeHRPbmU6e30sc0NsaWVudEZsaWdodDonJyxvV2hpdGVMYmxGb290ZXJUeHRUd286e30sc1BPU1RfUGFnaW5hdGVkTG9naW5TdGF0ZVJOR0NFbnRyb3B5OicnLHNBcHBsaWNhdGlvbkluc2lnaHRzSW5zdHJ1bWVudGF0aW9uS2V5OicnLGlNYXhTdGFja0Zvcktub2Nrb3V0QXN5bmNDb21wb25lbnRzOjEwMDAwLGZXZWJOZ2NGUzpmYWxzZSxpQmFja2dyb3VuZEltYWdlOjIsb0FwcENvYnJhbmRpbmc6e30sc1JhbmRvbUJsb2I6J1Bhcycsc0ZlZFFTOid3YT13c2lnbmluMS4wJnd0cmVhbG09dXJpOldpbmRvd3NMaXZlSUQmd2N0eD1ta3QlM0Rlbi1VUyUyNnVhaWQlM0QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiUyNmlkJTNEMzg5MzYlMjZjb250ZXh0aWQlM0QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzREQzNUJDOEI1M0EzMUUyQTclMjZiayUzRDE3MjI1NDQyMDQnLHVybENhbmNlbDonJyxmU2hvd01vcmVQcm9vZnNMaW5rTmV3TG9naWM6dHJ1ZSxzUE9TVF9Vc2VybmFtZTonJyxzdHJMV0FEaXNjbGFpbWVyTXNnOicnLHNDbGllbnRJZDonJyxmU2hvd1NpZ25JbldpdGhGaWRvT25Vc2VybmFtZVZpZXc6dHJ1ZSxzVW5hdXRoU2Vzc2lvbklEOicwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsZkVuYWJsZVVzZXJTdGF0ZUZpeDpmYWxzZSxzdHJPVENNb2JpbGVIaW50TXNnOlwiVXNlIHRoZSBwcmltYXJ5IHBob25lIG51bWJlciB5b3VcXCd2ZSBhc3NvY2lhdGVkIHdpdGggeW91ciBNaWNyb3NvZnQgYWNjb3VudC4gPGEgaHJlZj1cXFwiaHR0cDovL2V4cGxvcmUubGl2ZS5jb20vd2luZG93cy1saXZlLXNpZ24taW4tc2luZ2xlLXVzZS1jb2RlLWZhcVxcXCIgaWQ9XFxcImlkUGFuZUhlbHBPVENJbmZvTGluazlcXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5MZWFybiBtb3JlPC9hPlwiLGZTd2l0Y2hEaXNhbWJpZzpmYWxzZSxmQ2hlY2tBcGlDYW5hcnk6ZmFsc2UsZlNob3dMZWFybk1vcmVWMjp0cnVlLGlCaW5kUHJvdmlkZXI6LTEsZlVzZUlubGluZVBob25lTnVtYmVyOnRydWUsdXJsQmVoYXZpb3JhbFRlbGVtZXRyeVNjcmlwdDonJyxmSXNXcml0ZVdsb3B0Q29va2llRGlzYWxsb3dlZDp0cnVlLHN0cjpbXSxmVXNlUmVzZXRQd2RVcmxGb3JQd2RSZXF1aXJlZEVycjp0cnVlLHVybENCQnJhbmRMb2dvOicnLGlSZXF1ZXN0TENJRDoxMDMzLHVybENCQ3VzdG9tSlM6JycsdXJsQ0JIZWFkZXJMb2dvOicnLGZMb2FkR2FtZXBhZE5hdmlnYXRpb25Nb2R1bGU6ZmFsc2UsZklzSG9zdGVkOmZhbHNlLGlHY3RGZWRlcmF0aW9uRmxhZ3M6MyxpTWF4UG9sbEVycm9yczo1LHVybEdpdEh1YkZlZDonaHR0cHM6Ly9naXRodWIuY29tL2xvZ2luL29hdXRoL2F1dGhvcml6ZT9yZXNwb25zZV90eXBlPWNvZGUmY2xpZW50X2lkPWUzN2ZmZGVjMTFjMDI0NWNiMmUwJnNjb3BlPXJlYWQ6dXNlcisrdXNlcjplbWFpbCZyZWRpcmVjdF91cmk9aHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9IYW5kbGVHaXRodWJSZXNwb25zZS5zcmYmYWxsb3dfc2lnbnVwPWZhbHNlJnN0YXRlPUQzNUJDOEI1M0EzMUUyQTcnLGZUZW5hbnRCcmFuZGluZ0NkbkFkZEV2ZW50SGFuZGxlcnM6dHJ1ZSx1cmxOb0Nvb2tpZXM6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vY29va2llc0Rpc2FibGVkLnNyZj91YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jm1rdD1FTi1VUyZsYz0xMDMzJyxmVXNlRmFrZUhJUDpmYWxzZSxmVXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbDpmYWxzZSxmVXNlTWluSGVpZ2h0OnRydWUsZlVzZVBhc3N3b3JkUGVlazpmYWxzZSx1cmxTd2l0Y2g6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9nb3V0LnNyZj9ta3Q9ZW4tVVMmaWQ9Mzg5MzYmY29udGV4dGlkPTA4OTUyNjQxQzIyMUNGOUEmb3BpZD1EMzVCQzhCNTNBMzFFMkE3JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmcnU9aHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL2ElM2Z1YWlkJTNkMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmYms9MTcyMjU0NDIwNCZsbT1JJyxpTEJvZHlEZWZhdWx0OjAsc0ZlZFBhcnRuZXJOYW1lOicnLGlBcmtvc2VFbmZvcmNlbWVudFRpbWVvdXRNczozMDAwMCxpUG9sbGluZ1RpbWVvdXQ6NjAsdXJsRmVkQ29udmVydFJlbmFtZTonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL3NlY3VyaXR5L0xvZ2luU3RhZ2UuYXNweD9sbWlmPTEwMDAmcnU9aHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9sb2dpbi5zcmYlM0ZpZCUzRDM4OTM2JTI2bWt0JTNERU4tVVMlMjZsYyUzRDEwMzMlMjZ1YWlkJTNEMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmbWt0PUVOLVVTJmxjPTEwMzMmY2JpZD0wJmlkPTM4OTM2JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZJc1VwZGF0ZWRBdXRvY29tcGxldGVFbmFibGVkOnRydWUsaUF1dG9TU09TdGF0ZTowLHNQYWdlSWQ6J2k1MDMwJyx1cmxBcmtvc2VFbmZvcmNlbWVudDonaHR0cHM6Ly9pZnJhbWUuYXJrb3NlbGFicy5jb20vQjdEODkxMUMtNUNDOC1BOUEzLTM1QjAtNTU0QUNFRTYwNERBL2luZGV4Lmh0bWw/bWt0PWVuJyxzUmF3UXVlcnlTdHJpbmc6J21rdD1lbi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZiaz0xNzIyNTQ0MjA0JyxzUE9TVF9QYWdpbmF0ZWRMb2dpblN0YXRlUk5HQ0RlZmF1bHRUeXBlOicnLHVybENkbjonaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvc2hhcmVkLzEuMC8nLGZBbGxvd0xvZ2luVGV4dEN1c3RvbWl6YXRpb25zOnRydWUsZkRlcHJlY2F0ZUhpcExvY2tvdXQ6dHJ1ZSxzU2lnbkluVXNlcm5hbWU6JycsZkFsbG93Q2FuY2VsOmZhbHNlLGZTaG93QnV0dG9uczp0cnVlLGZEb0lmRXhpc3RzOmZhbHNlLGZJc1NpbXBsaWZpZWRDaGlsZEFjY291bnRDcmVhdGlvbjpmYWxzZSxpTG9naW5Nb2RlOjEsZklzRmlkb1N1cHBvcnRlZDp0cnVlLHNGb3J3YXJkZWRDbGllbnRJZDonJyxmU2hvd0ZvcmdvdFVzZXJuYW1lTGluazp0cnVlLGZJc1dMUm9vdGVkU2l0ZUlEOnRydWUsdXJsUmVzZXRQYXNzd29yZEFhZDonJyxzU2l0ZUlkOiczODkzNicsdXJsU2lnblVwOidodHRwczovL3NpZ251cC5saXZlLmNvbS9zaWdudXA/aWQ9Mzg5MzYmY29udGV4dGlkPTA4OTUyNjQxQzIyMUNGOUEmb3BpZD1EMzVCQzhCNTNBMzFFMkE3JmJrPTE3MjI1NDQyMDQmc3J1PWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmJTNmaWQlM2QzODkzNiUyNmlkJTNkMzg5MzYlMjZjb250ZXh0aWQlM2QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzZEQzNUJDOEI1M0EzMUUyQTclMjZta3QlM2RFTi1VUyUyNmxjJTNkMTAzMyUyNmJrJTNkMTcyMjU0NDIwNCUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZ1aWZsYXZvcj13ZWImbGljPTEmbWt0PUVOLVVTJmxjPTEwMzMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsaURlZmF1bHRMb2dpbk9wdGlvbnM6MyxzZXJ2ZXJEZXRhaWxzOntcInJpXCI6XCJTTjFQRVBGMDAwMkYwQThcIixcInZlclwiOlwiMTYuMC4zMDI5My4yXCJ9LG9HZXRDcmVkVHlwZVJlc3VsdDpudWxsLGZSZW1vdmVNaW5XaWR0aEZyb21MaWdodEJveDp0cnVlLHVybFJlc2V0UGFzc3dvcmQ6J2h0dHBzOi8vYWNjb3VudC5saXZlLmNvbS9SZXNldFBhc3N3b3JkLmFzcHg/d3JlcGx5PWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmJTNmaWQlM2QzODkzNiUyNm1rdCUzZGVuLVVTJTI2dWFpZCUzZDA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JTI2aWQlM2QzODkzNiUyNmNvbnRleHRpZCUzZDA4OTUyNjQxQzIyMUNGOUElMjZvcGlkJTNkRDM1QkM4QjUzQTMxRTJBNyUyNmJrJTNkMTcyMjU0NDIwNCZpZD0zODkzNiZ1aWZsYXZvcj13ZWImdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZta3Q9RU4tVVMmbGM9MTAzMyZiaz0xNzIyNTQ0MjA0JyxmU2hvd0NvcHlEZWJ1Z0RldGFpbHNMaW5rOnRydWUsaUFsbG93ZWRJZGVudGl0aWVzOjAsZklzR2FtaW5nRmxvdzpmYWxzZSxzQ0JVcFR4dDE6JycsdXJsSElQU2NyaXB0OidodHRwczovL2NsaWVudC5wcm9kLnJlcG1hcC5taWNyb3NvZnQuY29tL0dldEhJUC9HZXRISVAvSElQP2lkPTE1MDM0JnR5cGU9dmlzdWFsJmZpZD0xNDAwMDM3NTY3JnJhbmQ9MzIxNjIxNDk3Jm1rdD1FTi1VUycsZkVuYWJsZUFyaWFMaXZlVXBkYXRlczp0cnVlLHNDQlVwVHh0MjonJyxzSG9zdEJ1aWxkTnVtYmVyOicxNi4wLjMwMjkzLjInLGZTaG93Q29va2llQmFubmVyOmZhbHNlLGZTaG93UHVzaE5vdGlmaWNhdGlvbnM6dHJ1ZSxmQ0JTaG93U2lnblVwOnRydWUsZlNob3dTa3lwZVVzZXJuYW1lSGludDpmYWxzZSx1cmxGb3Jnb3RVc2VybmFtZTonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL3VzZXJuYW1lL3JlY292ZXI/d3JlcGx5PWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmJTNmbGMlM2QxMDMzJTI2bWt0JTNkZW4tVVMlMjZpZCUzZDM4OTM2JTI2bWt0JTNkZW4tVVMlMjZpZCUzZDM4OTM2JTI2Y29udGV4dGlkJTNkMDg5NTI2NDFDMjIxQ0Y5QSUyNm9waWQlM2REMzVCQzhCNTNBMzFFMkE3JTI2YmslM2QxNzIyNTQ0MjA0JTI2dWFpZCUzZDA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JmlkPTM4OTM2Jm1rdD1FTi1VUyZsYz0xMDMzJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmdWlmbGF2b3I9d2ViJyx1cmxMaW5rZWRJbkZlZDonJyxmSW1wcm92ZVBob25lRGlzYW1iaWc6dHJ1ZSxjb3JyZWxhdGlvbklkOicwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsb1Bvc3Q6e30sdXJsQ2xpZW50RXhwZXJpbWVudDonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9HZXRFeHBlcmltZW50QXNzaWdubWVudHMuc3JmJyxmU2hvd1N3aXRjaFVzZXI6dHJ1ZSxmQXV0b0NhcHR1cmVFdmVudHM6ZmFsc2UsaVBvbGxpbmdJbnRlcnZhbDoxLG9GZWRTaWdudXBQb3N0UGFyYW1zOm51bGwsaUJhbm5lckVudmlyb25tZW50OjAsZkVuYWJsZUNsaWVudFRlbGVtZXRyeTpmYWxzZSxmU2hvd1VwZGF0ZWRLb3JlYW5Qcml2YWN5Rm9vdGVyOnRydWUsc1ByZWZpbGxVc2VybmFtZTonJyxmRW5hYmxlU2hvd1BpY2tlckNyZWRPYnNlcnZhYmxlOmZhbHNlLHVybEZlZFNpZ251cDonJyx1cmxHb1RvQUFERXJyb3I6JycsZkZpeFVJQ3Jhc2hGb3JBcGlSZXF1ZXN0SGFuZGxlcjpmYWxzZSxzRXJyVHh0OicnLGZIaWRlUGhvbmVDb2Jhc2lJbk90aGVyU2lnbkluOnRydWUsZlNob3dTaWduSW5PcHRpb25zQXNCdXR0b246dHJ1ZSxpQ2xpZW50TG9nTGV2ZWw6MCxmSXNFeHRlcm5hbEZlZGVyYXRpb25EaXNhbGxvd2VkOmZhbHNlLGh0bWw6W10saVBhd25JY29uOjEsc0ZUVGFnOic8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJQUEZUXCIgaWQ9XCJpMDMyN1wiIHZhbHVlPVwiLURuQVJ1dnFtOVd3TTNzSG8hTUxLT2FhWmNSeFF2cTJodUxIWjBua0MqelFEeHlJenBqMHhKeEV4UThMbWtVVWxsZnkqMGZyQkNOam9wemRjcG96Km4xM2JxTEFkcW1BNHhnU1J2RzBod0RPTXFuNCpaWVFRNmk4U2pvNDJTejlGUEZteDNtaUlmWnBobjRiaVFqdkxaUG5ZY01FYlpORDliT3dQS0R1VU9TKjlEa3I1OEdzS2dqMG51alRjUjUqcFM3UVVGcTg2clNTQkxiTExSUWtWTkFTM0gwTEptQzVvT1JUYXdyd3cxV3RiangxUFNhUGE1bVVMalNvRU4xMEZMQSQkXCIvPicsbG9hZGVyOntjZG5Sb290czpbJ2h0dHBzOi8vbG9naW5jZG4ubXNhdXRoLm5ldC8nLCdodHRwczovL2xvZ2luY2RuLm1zZnRhdXRoLm5ldC8nLCdodHRwczovL2xnaW5jZG52emV1bm8uYXp1cmVlZGdlLm5ldC8nLCdodHRwczovL2xnaW5jZG5tc2Z0dXN3ZTIuYXp1cmVlZGdlLm5ldC8nXX0sc1NNU0N0cnlQaG9uZURhdGE6J0FGfkFmZ2hhbmlzdGFufjkzISEhQUx+QWxiYW5pYX4zNTUhISFEWn5BbGdlcmlhfjIxMyEhIUFEfkFuZG9ycmF+Mzc2ISEhQU9+QW5nb2xhfjI0NCEhIUFRfkFudGFyY3RpY2F+NjcyISEhQUd+QW50aWd1YSBhbmQgQmFyYnVkYX4xISEhQVJ+QXJnZW50aW5hfjU0ISEhQU1+QXJtZW5pYX4zNzQhISFBV35BcnViYX4yOTchISFBQ35Bc2NlbnNpb24gSXNsYW5kfjI0NyEhIUFVfkF1c3RyYWxpYX42MSEhIUFUfkF1c3RyaWF+NDMhISFBWn5BemVyYmFpamFufjk5NCEhIUJTfkJhaGFtYXN+MSEhIUJIfkJhaHJhaW5+OTczISEhQkR+QmFuZ2xhZGVzaH44ODAhISFCQn5CYXJiYWRvc34xISEhQll+QmVsYXJ1c34zNzUhISFCRX5CZWxnaXVtfjMyISEhQlp+QmVsaXplfjUwMSEhIUJKfkJlbmlufjIyOSEhIUJNfkJlcm11ZGF+MSEhIUJUfkJodXRhbn45NzUhISFCT35Cb2xpdmlhfjU5MSEhIUJRfkJvbmFpcmV+NTk5ISEhQkF+Qm9zbmlhIGFuZCBIZXJ6ZWdvdmluYX4zODchISFCV35Cb3Rzd2FuYX4yNjchISFCVn5Cb3V2ZXQgSXNsYW5kfjQ3ISEhQlJ+QnJhemlsfjU1ISEhSU9+QnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5fjQ0ISEhVkd+QnJpdGlzaCBWaXJnaW4gSXNsYW5kc34xISEhQk5+QnJ1bmVpfjY3MyEhIUJHfkJ1bGdhcmlhfjM1OSEhIUJGfkJ1cmtpbmEgRmFzb34yMjYhISFCSX5CdXJ1bmRpfjI1NyEhIUNWfkNhYm8gVmVyZGV+MjM4ISEhS0h+Q2FtYm9kaWF+ODU1ISEhQ01+Q2FtZXJvb25+MjM3ISEhQ0F+Q2FuYWRhfjEhISFLWX5DYXltYW4gSXNsYW5kc34xISEhQ0Z+Q2VudHJhbCBBZnJpY2FuIFJlcHVibGljfjIzNiEhIVREfkNoYWR+MjM1ISEhQ0x+Q2hpbGV+NTYhISFDTn5DaGluYX44NiEhIUNYfkNocmlzdG1hcyBJc2xhbmR+NjEhISFDQ35Db2NvcyAoS2VlbGluZykgSXNsYW5kc342MSEhIUNPfkNvbG9tYmlhfjU3ISEhS01+Q29tb3Jvc34yNjkhISFDR35Db25nb34yNDIhISFDRH5Db25nbyAoRFJDKX4yNDMhISFDS35Db29rIElzbGFuZHN+NjgyISEhQ1J+Q29zdGEgUmljYX41MDYhISFDSX5DXHUwMGY0dGUgZFxcJ0l2b2lyZX4yMjUhISFIUn5Dcm9hdGlhfjM4NSEhIUNVfkN1YmF+NTMhISFDV35DdXJhXHUwMGU3YW9+NTk5ISEhQ1l+Q3lwcnVzfjM1NyEhIUNafkN6ZWNoaWF+NDIwISEhREt+RGVubWFya340NSEhIURKfkRqaWJvdXRpfjI1MyEhIURNfkRvbWluaWNhfjEhISFET35Eb21pbmljYW4gUmVwdWJsaWN+MSEhIUVDfkVjdWFkb3J+NTkzISEhRUd+RWd5cHR+MjAhISFTVn5FbCBTYWx2YWRvcn41MDMhISFHUX5FcXVhdG9yaWFsIEd1aW5lYX4yNDAhISFFUn5Fcml0cmVhfjI5MSEhIUVFfkVzdG9uaWF+MzcyISEhRVR+RXRoaW9waWF+MjUxISEhRkt+RmFsa2xhbmQgSXNsYW5kc341MDAhISFGT35GYXJvZSBJc2xhbmRzfjI5OCEhIUZKfkZpaml+Njc5ISEhRkl+RmlubGFuZH4zNTghISFGUn5GcmFuY2V+MzMhISFHRn5GcmVuY2ggR3VpYW5hfjU5NCEhIVBGfkZyZW5jaCBQb2x5bmVzaWF+Njg5ISEhR0F+R2Fib25+MjQxISEhR01+R2FtYmlhfjIyMCEhIUdFfkdlb3JnaWF+OTk1ISEhREV+R2VybWFueX40OSEhIUdIfkdoYW5hfjIzMyEhIUdJfkdpYnJhbHRhcn4zNTAhISFHUn5HcmVlY2V+MzAhISFHTH5HcmVlbmxhbmR+Mjk5ISEhR0R+R3JlbmFkYX4xISEhR1B+R3VhZGVsb3VwZX41OTAhISFHVX5HdWFtfjEhISFHVH5HdWF0ZW1hbGF+NTAyISEhR0d+R3Vlcm5zZXl+NDQhISFHTn5HdWluZWF+MjI0ISEhR1d+R3VpbmVhLUJpc3NhdX4yNDUhISFHWX5HdXlhbmF+NTkyISEhSFR+SGFpdGl+NTA5ISEhSE5+SG9uZHVyYXN+NTA0ISEhSEt+SG9uZyBLb25nIFNBUn44NTIhISFIVX5IdW5nYXJ5fjM2ISEhSVN+SWNlbGFuZH4zNTQhISFJTn5JbmRpYX45MSEhIUlEfkluZG9uZXNpYX42MiEhIUlSfklyYW5+OTghISFJUX5JcmFxfjk2NCEhIUlFfklyZWxhbmR+MzUzISEhSU1+SXNsZSBvZiBNYW5+NDQhISFJTH5Jc3JhZWx+OTcyISEhSVR+SXRhbHl+MzkhISFKTX5KYW1haWNhfjEhISFYSn5KYW4gTWF5ZW5+NDchISFKUH5KYXBhbn44MSEhIUpFfkplcnNleX40NCEhIUpPfkpvcmRhbn45NjIhISFLWn5LYXpha2hzdGFufjchISFLRX5LZW55YX4yNTQhISFLSX5LaXJpYmF0aX42ODYhISFLUn5Lb3JlYX44MiEhIVhLfktvc292b34zODMhISFLV35LdXdhaXR+OTY1ISEhS0d+S3lyZ3l6c3Rhbn45OTYhISFMQX5MYW9zfjg1NiEhIUxWfkxhdHZpYX4zNzEhISFMQn5MZWJhbm9ufjk2MSEhIUxTfkxlc290aG9+MjY2ISEhTFJ+TGliZXJpYX4yMzEhISFMWX5MaWJ5YX4yMTghISFMSX5MaWVjaHRlbnN0ZWlufjQyMyEhIUxUfkxpdGh1YW5pYX4zNzAhISFMVX5MdXhlbWJvdXJnfjM1MiEhIU1Pfk1hY2FvIFNBUn44NTMhISFNS35Ob3J0aCBNYWNlZG9uaWF+Mzg5ISEhTUd+TWFkYWdhc2Nhcn4yNjEhISFNV35NYWxhd2l+MjY1ISEhTVl+TWFsYXlzaWF+NjAhISFNVn5NYWxkaXZlc345NjAhISFNTH5NYWxpfjIyMyEhIU1Ufk1hbHRhfjM1NiEhIU1Ifk1hcnNoYWxsIElzbGFuZHN+NjkyISEhTVF+TWFydGluaXF1ZX41OTYhISFNUn5NYXVyaXRhbmlhfjIyMiEhIU1Vfk1hdXJpdGl1c34yMzAhISFZVH5NYXlvdHRlfjI2MiEhIU1Yfk1leGljb341MiEhIUZNfk1pY3JvbmVzaWF+NjkxISEhTUR+TW9sZG92YX4zNzMhISFNQ35Nb25hY29+Mzc3ISEhTU5+TW9uZ29saWF+OTc2ISEhTUV+TW9udGVuZWdyb34zODIhISFNU35Nb250c2VycmF0fjEhISFNQX5Nb3JvY2NvfjIxMiEhIU1afk1vemFtYmlxdWV+MjU4ISEhTU1+TXlhbm1hcn45NSEhIU5Bfk5hbWliaWF+MjY0ISEhTlJ+TmF1cnV+Njc0ISEhTlB+TmVwYWx+OTc3ISEhTkx+TmV0aGVybGFuZHN+MzEhISFBTn5OZXRoZXJsYW5kcyBBbnRpbGxlcyAoRm9ybWVyKX41OTkhISFOQ35OZXcgQ2FsZWRvbmlhfjY4NyEhIU5afk5ldyBaZWFsYW5kfjY0ISEhTkl+TmljYXJhZ3VhfjUwNSEhIU5Ffk5pZ2VyfjIyNyEhIU5Hfk5pZ2VyaWF+MjM0ISEhTlV+Tml1ZX42ODMhISFNUH5Ob3J0aGVybiBNYXJpYW5hIElzbGFuZHN+MSEhIU5Pfk5vcndheX40NyEhIU9Nfk9tYW5+OTY4ISEhUEt+UGFraXN0YW5+OTIhISFQV35QYWxhdX42ODAhISFQU35QYWxlc3RpbmlhbiBBdXRob3JpdHl+OTcwISEhUEF+UGFuYW1hfjUwNyEhIVBHflBhcHVhIE5ldyBHdWluZWF+Njc1ISEhUFl+UGFyYWd1YXl+NTk1ISEhUEV+UGVydX41MSEhIVBIflBoaWxpcHBpbmVzfjYzISEhUEx+UG9sYW5kfjQ4ISEhUFR+UG9ydHVnYWx+MzUxISEhUUF+UWF0YXJ+OTc0ISEhUkV+Ulx1MDBlOXVuaW9ufjI2MiEhIVJPflJvbWFuaWF+NDAhISFSVX5SdXNzaWF+NyEhIVJXflJ3YW5kYX4yNTAhISFYU35TYWJhfjU5OSEhIUtOflNhaW50IEtpdHRzIGFuZCBOZXZpc34xISEhTEN+U2FpbnQgTHVjaWF+MSEhIVBNflNhaW50IFBpZXJyZSBhbmQgTWlxdWVsb25+NTA4ISEhVkN+U2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXN+MSEhIVdTflNhbW9hfjY4NSEhIVNNflNhbiBNYXJpbm9+Mzc4ISEhU1R+U1x1MDBlM28gVG9tXHUwMGU5IGFuZCBQclx1MDBlZG5jaXBlfjIzOSEhIVNBflNhdWRpIEFyYWJpYX45NjYhISFTTn5TZW5lZ2FsfjIyMSEhIVJTflNlcmJpYX4zODEhISFTQ35TZXljaGVsbGVzfjI0OCEhIVNMflNpZXJyYSBMZW9uZX4yMzIhISFTR35TaW5nYXBvcmV+NjUhISFYRX5TaW50IEV1c3RhdGl1c341OTkhISFTS35TbG92YWtpYX40MjEhISFTSX5TbG92ZW5pYX4zODYhISFTQn5Tb2xvbW9uIElzbGFuZHN+Njc3ISEhU09+U29tYWxpYX4yNTIhISFaQX5Tb3V0aCBBZnJpY2F+MjchISFTU35Tb3V0aCBTdWRhbn4yMTEhISFFU35TcGFpbn4zNCEhIUxLflNyaSBMYW5rYX45NCEhIVNIflN0IEhlbGVuYSwgQXNjZW5zaW9uLCBhbmQgVHJpc3RhbiBkYSBDdW5oYX4yOTAhISFTRH5TdWRhbn4yNDkhISFTUn5TdXJpbmFtZX41OTchISFTSn5TdmFsYmFyZH40NyEhIVNaflN3YXppbGFuZH4yNjghISFTRX5Td2VkZW5+NDYhISFDSH5Td2l0emVybGFuZH40MSEhIVNZflN5cmlhfjk2MyEhIVRXflRhaXdhbn44ODYhISFUSn5UYWppa2lzdGFufjk5MiEhIVRaflRhbnphbmlhfjI1NSEhIVRIflRoYWlsYW5kfjY2ISEhVEx+VGltb3ItTGVzdGV+NjcwISEhVEd+VG9nb34yMjghISFUS35Ub2tlbGF1fjY5MCEhIVRPflRvbmdhfjY3NiEhIVRUflRyaW5pZGFkIGFuZCBUb2JhZ29+MSEhIVRBflRyaXN0YW4gZGEgQ3VuaGF+MjkwISEhVE5+VHVuaXNpYX4yMTYhISFUUn5UdXJrZXl+OTAhISFUTX5UdXJrbWVuaXN0YW5+OTkzISEhVEN+VHVya3MgYW5kIENhaWNvcyBJc2xhbmRzfjEhISFUVn5UdXZhbHV+Njg4ISEhVU1+VS5TLiBPdXRseWluZyBJc2xhbmRzfjEhISFWSX5VLlMuIFZpcmdpbiBJc2xhbmRzfjEhISFVR35VZ2FuZGF+MjU2ISEhVUF+VWtyYWluZX4zODAhISFBRX5Vbml0ZWQgQXJhYiBFbWlyYXRlc345NzEhISFVS35Vbml0ZWQgS2luZ2RvbX40NCEhIVVTflVuaXRlZCBTdGF0ZXN+MSEhIVVZflVydWd1YXl+NTk4ISEhVVp+VXpiZWtpc3Rhbn45OTghISFWVX5WYW51YXR1fjY3OCEhIVZBflZhdGljYW4gQ2l0eX4zNzkhISFWRX5WZW5lenVlbGF+NTghISFWTn5WaWV0bmFtfjg0ISEhV0Z+V2FsbGlzIGFuZCBGdXR1bmF+NjgxISEhWUV+WWVtZW5+OTY3ISEhWk1+WmFtYmlhfjI2MCEhIVpXflppbWJhYndlfjI2MycsZklzUmVtb3RlQ29ubmVjdFNpZ251cDpmYWxzZSxmSXNQb3B1cFVJOmZhbHNlLGZJc1JUTE1hcmtldDpmYWxzZSxhcnJGZWROYW1lczpbXSxmQWxsb3dTa3lwZU5hbWVMb2dpbjp0cnVlLGNsaWVudEV2ZW50czp7XCJhcHBJbnNpZ2h0c0NvbmZpZ1wiOntcImluc3RydW1lbnRhdGlvbktleVwiOlwiNjlhZGMzYzc2OGJkNGRjMDhjMTk0MTYxMjEyNDlmY2MtNjZmMTY2OGEtNzk3Yi00MjQ5LTk1ZTMtNmM2NjUxNzY4YzI4LTcyOTNcIixcIndlYkFuYWx5dGljc0NvbmZpZ3VyYXRpb25cIjp7XCJhdXRvQ2FwdHVyZVwiOntcImpzRXJyb3JcIjoxLFwiY2xpY2tcIjowfX19LFwiYXBwSWRcIjpcIi1cIixcImRlZmF1bHRFdmVudE5hbWVcIjpcIklEVVhfTVNBQ2xpZW50VGVsZW1ldHJ5RXZlbnRfV2ViV2F0c29uXCIsXCJhdXRvUG9zdFwiOnRydWUsXCJhdXRvUG9zdERlbGF5XCI6MTAwMCxcImZsdXNoXCI6NjAwMDAsXCJtYXhFdmVudHNcIjoxLFwibWluRXZlbnRzXCI6MSxcInBsdERlbGF5XCI6NTAwLFwidGVsZW1ldHJ5RW5hYmxlZFwiOnRydWUsXCJ1c2VPbmVEU0V2ZW50QXBpXCI6dHJ1ZSxcInNlcnZpY2VJRFwiOjJ9LGZIYXNCYWNrZ3JvdW5kQ29sb3I6ZmFsc2UsZW52aXJvbm1lbnQ6J1BST0QnLHVybFN0YXlTaWduSW46J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmP2lkPTM4OTM2JmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZta3Q9RU4tVVMmbGM9MTAzMyZiaz0xNzIyNTQ0MjA0JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZBY3RpdmF0ZUtleWJvYXJkRm9jdXNPbkFwcHJvdmFsTnVtYmVyOnRydWUsZkF1dG9DYXB0dXJlQ2xpY2tzOmZhbHNlLGZBdXRvQ2FwdHVyZUpzRXJyb3JzOmZhbHNlLGZDaGVja1Byb29mRm9yQWxpYXNlczpmYWxzZSxmQWxsb3dQaG9uZVNpZ25Jbjp0cnVlLGZFbmFibGVDc3NBbmltYXRpb246dHJ1ZSxmQXBwbHlBc2NpaVJlZ2V4T25JbnB1dDp0cnVlLGZFbmFibGVPbmVEU0NsaWVudFRlbGVtZXRyeTp0cnVlLHVybFByb2ZpbGVQaG90bzonJ307PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIgbm9uY2U9XCJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPVwiPiFmdW5jdGlvbihlLHIpe2Zvcih2YXIgdCBpbiByKWVbdF09clt0XX0odGhpcyxmdW5jdGlvbihlKXtmdW5jdGlvbiByKG4pe2lmKHRbbl0pcmV0dXJuIHRbbl0uZXhwb3J0czt2YXIgbz10W25dPXtleHBvcnRzOnt9LGlkOm4sbG9hZGVkOiExfTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxyKSxvLmxvYWRlZD0hMCxvLmV4cG9ydHN9dmFyIHQ9e307cmV0dXJuIHIubT1lLHIuYz10LHIucD1cIlwiLHIoMCl9KFtmdW5jdGlvbihlLHIpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbC4kQ29uZmlnfHxsLlNlcnZlckRhdGF8fHt9fWZ1bmN0aW9uIHIoZSxyKXt2YXIgdD1sLiREZWJ1Zzt0JiZ0LmFwcGVuZExvZyYmKHImJihlKz1cIiAnXCIrKHIuc3JjfHxyLmhyZWZ8fFwiXCIpK1wiJ1wiLGUrPVwiLCBpZDpcIisoci5pZHx8XCJcIiksZSs9XCIsIGFzeW5jOlwiKyhyLmFzeW5jfHxcIlwiKSxlKz1cIiwgZGVmZXI6XCIrKHIuZGVmZXJ8fFwiXCIpKSx0LmFwcGVuZExvZyhlKSl9ZnVuY3Rpb24gdCgpe3ZhciBlPWwuJEI7aWYodm9pZCAwPT09YylpZihlKWM9ZS5JRTtlbHNle3ZhciByPWwubmF2aWdhdG9yLnVzZXJBZ2VudDtjPXIuaW5kZXhPZihcIk1TSUUgXCIpIT09LTF8fHIuaW5kZXhPZihcIlRyaWRlbnQvXCIpIT09LTF9cmV0dXJuIGN9ZnVuY3Rpb24gbigpe3ZhciBlPWwuJEI7aWYodm9pZCAwPT09ZilpZihlKWY9ZS5SRV9FZGdlO2Vsc2V7dmFyIHI9bC5uYXZpZ2F0b3IudXNlckFnZW50O2Y9ci5pbmRleE9mKFwiRWRnZVwiKSE9PS0xfXJldHVybiBmfWZ1bmN0aW9uIG8oZSl7dmFyIHI9ZS5pbmRleE9mKFwiP1wiKSx0PXI+LTE/cjplLmxlbmd0aCxuPWUubGFzdEluZGV4T2YoXCIuXCIsdCksbz1lLnN1YnN0cmluZyhuLG4raC5sZW5ndGgpLnRvTG93ZXJDYXNlKCk9PT1oO3JldHVybiBvfWZ1bmN0aW9uIGEoKXt2YXIgcj1lKCksdD1yLmxvYWRlcnx8e307cmV0dXJuIHQuc2xSZXBvcnRGYWlsdXJlfHxyLnNsUmVwb3J0RmFpbHVyZXx8ITF9ZnVuY3Rpb24gaSgpe3ZhciByPWUoKSx0PXIubG9hZGVyfHx7fTtyZXR1cm4gdC5yZWRpcmVjdFRvRXJyb3JQYWdlT25Mb2FkRmFpbHVyZXx8ITF9ZnVuY3Rpb24gcygpe3ZhciByPWUoKSx0PXIubG9hZGVyfHx7fTtyZXR1cm4gdC5sb2dCeVRocm93aW5nfHwhMX1mdW5jdGlvbiBkKGUpe2lmKCF0KCkmJiFuKCkpcmV0dXJuITE7dmFyIHI9ZS5zcmN8fGUuaHJlZnx8XCJcIjtpZighcilyZXR1cm4hMDtpZihvKHIpKXt2YXIgYSxpLHM7dHJ5e2E9ZS5zaGVldCxpPWEmJmEuY3NzUnVsZXMscz0hMX1jYXRjaChkKXtzPSEwfWlmKGEmJiFpJiZzKXJldHVybiEwO2lmKGEmJmkmJjA9PT1pLmxlbmd0aClyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gdChlKXt2YXIgcj1nLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtyLmFwcGVuZENoaWxkKGUpfWZ1bmN0aW9uIG4oZSxyLHQsbil7dmFyIGQ9bnVsbDtyZXR1cm4gZD1vKGUpP2EoZSk6XCJzY3JpcHRcIj09PW4udG9Mb3dlckNhc2UoKT9pKGUpOnMoZSxuKSxyJiYoZC5pZD1yKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBkLnNldEF0dHJpYnV0ZSYmKGQuc2V0QXR0cmlidXRlKFwiY3Jvc3NvcmlnaW5cIixcImFub255bW91c1wiKSx0JiZcInN0cmluZ1wiPT10eXBlb2YgdCYmZC5zZXRBdHRyaWJ1dGUoXCJpbnRlZ3JpdHlcIix0KSksZH1mdW5jdGlvbiBhKGUpe3ZhciByPWcuY3JlYXRlRWxlbWVudChcImxpbmtcIik7cmV0dXJuIHIucmVsPVwic3R5bGVzaGVldFwiLHIudHlwZT1cInRleHQvY3NzXCIsci5ocmVmPWUscn1mdW5jdGlvbiBpKGUpe3ZhciByPWcuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSx0PWcucXVlcnlTZWxlY3RvcihcInNjcmlwdFtub25jZV1cIik7aWYoci50eXBlPVwidGV4dC9qYXZhc2NyaXB0XCIsci5zcmM9ZSxyLmRlZmVyPSExLHIuYXN5bmM9ITEsdCl7dmFyIG49dC5ub25jZXx8dC5nZXRBdHRyaWJ1dGUoXCJub25jZVwiKTtyLnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gcyhlLHIpe3ZhciB0PWcuY3JlYXRlRWxlbWVudChyKTtyZXR1cm4gdC5zcmM9ZSx0fWZ1bmN0aW9uIGMoZSxyKXtpZihlJiZlLmxlbmd0aD4wJiZyKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHIuaW5kZXhPZihlW3RdKSE9PS0xKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGYocil7dmFyIHQ9ZSgpO2lmKHQuY1Ape3ZhciBuPWMoTCxyKT9MOng7aWYoIShuJiZuLmxlbmd0aD4xKSlyZXR1cm4gcjtmb3IodmFyIG89XCJodHRwczovL1wiLGE9MDthPG4ubGVuZ3RoO2ErKylpZihyLmluZGV4T2YoblthXSkhPT0tMSl7dmFyIGk9blthKzE8bi5sZW5ndGg/YSsxOjBdLHM9ci5zdWJzdHJpbmcoblthXS5sZW5ndGgpO3JldHVybiBuW2FdLnN1YnN0cmluZygwLG8ubGVuZ3RoKSE9PW8mJihpPW8raSxzPXMuc3Vic3RyaW5nKG8ubGVuZ3RoKSksaStzfXJldHVybiByfWlmKCEoeCYmeC5sZW5ndGg+MSkpcmV0dXJuIHI7Zm9yKHZhciBkPTA7ZDx4Lmxlbmd0aDtkKyspaWYoMD09PXIuaW5kZXhPZih4W2RdKSlyZXR1cm4geFtkKzE8eC5sZW5ndGg/ZCsxOjBdK3Iuc3Vic3RyaW5nKHhbZF0ubGVuZ3RoKTtyZXR1cm4gcn1mdW5jdGlvbiBsKGUsdCxuLG8pe3JldHVybiByKFwiWyRMb2FkZXJdOiBcIisoUi5mYWlsTWVzc2FnZXx8XCJGYWlsZWRcIiksbyksYltlXS5yZXRyeTx5PyhiW2VdLnJldHJ5KyssdihlLHQsbiksdm9pZCB1Ll9SZXBvcnRGYWlsdXJlKGJbZV0ucmV0cnksYltlXS5zcmNQYXRoKSk6dm9pZChuJiZuKCkpfWZ1bmN0aW9uIGgoZSx0LG4sbyl7aWYoZChvKSlyZXR1cm4gbChlLHQsbixvKTtyKFwiWyRMb2FkZXJdOiBcIisoUi5zdWNjZXNzTWVzc2FnZXx8XCJMb2FkZWRcIiksbyksdihlKzEsdCxuKTt2YXIgYT1iW2VdLm9uU3VjY2VzcztcImZ1bmN0aW9uXCI9PXR5cGVvZiBhJiZhKGJbZV0uc3JjUGF0aCl9ZnVuY3Rpb24gdihlLG8sYSl7aWYoZTxiLmxlbmd0aCl7dmFyIGk9YltlXTtpZighaXx8IWkuc3JjUGF0aClyZXR1cm4gdm9pZCB2KGUrMSxvLGEpO2kucmV0cnk+MCYmKGkuc3JjUGF0aD1mKGkuc3JjUGF0aCksaS5vcmlnSWR8fChpLm9yaWdJZD1pLmlkKSxpLmlkPWkub3JpZ0lkK1wiX1JldHJ5X1wiK2kucmV0cnkpO3ZhciBzPW4oaS5zcmNQYXRoLGkuaWQsaS5pbnRlZ3JpdHksaS50YWdOYW1lKTtzLm9ubG9hZD1mdW5jdGlvbigpe2goZSxvLGEscyl9LHMub25lcnJvcj1mdW5jdGlvbigpe2woZSxvLGEscyl9LHMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7XCJsb2FkZWRcIj09PXMucmVhZHlTdGF0ZT9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aChlLG8sYSxzKX0sNTAwKTpcImNvbXBsZXRlXCI9PT1zLnJlYWR5U3RhdGUmJmgoZSxvLGEscyl9LHQocykscihcIlskTG9hZGVyXTogTG9hZGluZyAnXCIrKGkuc3JjUGF0aHx8XCJcIikrXCInLCBpZDpcIisoaS5pZHx8XCJcIikpfWVsc2UgbyYmbygpfXZhciBwPWUoKSx5PXAuc2xNYXhSZXRyeXx8MixtPXAubG9hZGVyfHx7fSx4PW0uY2RuUm9vdHN8fFtdLEw9bS50ZW5hbnRCcmFuZGluZ0NkblJvb3RzfHxbXSxSPXRoaXMsYj1bXTtSLnJldHJ5T25FcnJvcj0hMCxSLnN1Y2Nlc3NNZXNzYWdlPVwiTG9hZGVkXCIsUi5mYWlsTWVzc2FnZT1cIkVycm9yXCIsUi5BZGQ9ZnVuY3Rpb24oZSxyLHQsbixvLGEpe2UmJmIucHVzaCh7c3JjUGF0aDplLGlkOnIscmV0cnk6bnx8MCxpbnRlZ3JpdHk6dCx0YWdOYW1lOm98fFwic2NyaXB0XCIsb25TdWNjZXNzOmF9KX0sUi5BZGRGb3JSZWxvYWQ9ZnVuY3Rpb24oZSxyKXt2YXIgdD1lLnNyY3x8ZS5ocmVmfHxcIlwiO1IuQWRkKHQsXCJBZGRGb3JSZWxvYWRcIixlLmludGVncml0eSwxLGUudGFnTmFtZSxyKX0sUi5BZGRJZj1mdW5jdGlvbihlLHIsdCl7ZSYmUi5BZGQocix0KX0sUi5Mb2FkPWZ1bmN0aW9uKGUscil7digwLGUscil9fXZhciBjLGYsbD13aW5kb3csZz1sLmRvY3VtZW50LGg9XCIuY3NzXCI7dS5Pbj1mdW5jdGlvbihlLHIsdCl7aWYoIWUpdGhyb3dcIlRoZSB0YXJnZXQgZWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBjYW5ub3QgYmUgbnVsbC5cIjtyP3UuT25FcnJvcihlLHQpOnUuT25TdWNjZXNzKGUsdCl9LHUuT25TdWNjZXNzPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3dcIlRoZSB0YXJnZXQgZWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBjYW5ub3QgYmUgbnVsbC5cIjtpZihkKGUpKXJldHVybiB1Lk9uRXJyb3IoZSx0KTt2YXIgbj1lLnNyY3x8ZS5ocmVmfHxcIlwiLG89YSgpLHM9aSgpO3IoXCJbJExvYWRlcl06IExvYWRlZFwiLGUpO3ZhciBjPW5ldyB1O2MuZmFpbE1lc3NhZ2U9XCJSZWxvYWQgRmFpbGVkXCIsYy5zdWNjZXNzTWVzc2FnZT1cIlJlbG9hZCBTdWNjZXNzXCIsYy5Mb2FkKG51bGwsZnVuY3Rpb24oKXtpZihvKXRocm93XCJVbmV4cGVjdGVkIHN0YXRlLiBSZXNvdXJjZUxvYWRlci5Mb2FkKCkgZmFpbGVkIGRlc3BpdGUgaW5pdGlhbCBsb2FkIHN1Y2Nlc3MuIFsnXCIrbitcIiddXCI7cyYmKGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9XCIvZXJyb3IuYXNweD9lcnI9NTA0XCIpfSl9LHUuT25FcnJvcj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuc3JjfHxlLmhyZWZ8fFwiXCIsbz1hKCkscz1pKCk7aWYoIWUpdGhyb3dcIlRoZSB0YXJnZXQgZWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBjYW5ub3QgYmUgbnVsbC5cIjtyKFwiWyRMb2FkZXJdOiBGYWlsZWRcIixlKTt2YXIgZD1uZXcgdTtkLmZhaWxNZXNzYWdlPVwiUmVsb2FkIEZhaWxlZFwiLGQuc3VjY2Vzc01lc3NhZ2U9XCJSZWxvYWQgU3VjY2Vzc1wiLGQuQWRkRm9yUmVsb2FkKGUsdCksZC5Mb2FkKG51bGwsZnVuY3Rpb24oKXtpZihvKXRocm93XCJGYWlsZWQgdG8gbG9hZCBleHRlcm5hbCByZXNvdXJjZSBbJ1wiK24rXCInXVwiO3MmJihkb2N1bWVudC5sb2NhdGlvbi5ocmVmPVwiL2Vycm9yLmFzcHg/ZXJyPTUwNFwiKX0pLHUuX1JlcG9ydEZhaWx1cmUoMCxuKX0sdS5fUmVwb3J0RmFpbHVyZT1mdW5jdGlvbihlLHIpe2lmKHMoKSYmIXQoKSl0aHJvd1wiW1JldHJ5IFwiK2UrXCJdIEZhaWxlZCB0byBsb2FkIGV4dGVybmFsIHJlc291cmNlIFsnXCIrcitcIiddLCByZWxvYWRpbmcgZnJvbSBmYWxsYmFjayBDRE4gZW5kcG9pbnRcIn0sbC4kTG9hZGVyPXV9KCl9XSkpOzwvc2NyaXB0PjxsaW5rIHJlbD1cInNob3J0Y3V0IGljb25cIiBocmVmPVwiaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvMTYuMDAwLjMwMjkzLjIvaW1hZ2VzL2Zhdmljb24uaWNvXCIgLz48c3R5bGUgdHlwZT1cInRleHQvY3NzXCIgbm9uY2U9XCJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPVwiPmJvZHl7ZGlzcGxheTpub25lO308L3N0eWxlPjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIG5vbmNlPVwiejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT1cIj5pZiAodG9wICE9IHNlbGYpe3RyeXt0b3AubG9jYXRpb24ucmVwbGFjZShzZWxmLmxvY2F0aW9uLmhyZWYpO31jYXRjaCAoZSl7fX1lbHNle2RvY3VtZW50LndyaXRlKHVuZXNjYXBlKCclM0MlNzMnKSArICd0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiIG5vbmNlPVwiejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT1cIj5ib2R5e2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudDt9PC9zdHlsZT4nKTt9PC9zY3JpcHQ+PG5vc2NyaXB0PjxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIiBub25jZT1cIno4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9XCI+Ym9keXtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7fTwvc3R5bGU+PC9ub3NjcmlwdD48c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIiBub25jZT1cIno4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9XCI+IWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0IGluIHIpZVt0XT1yW3RdfSh0aGlzLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBpPXRbbl09e2V4cG9ydHM6e30saWQ6bixsb2FkZWQ6ITF9O3JldHVybiBlW25dLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLHIpLGkubG9hZGVkPSEwLGkuZXhwb3J0c312YXIgdD17fTtyZXR1cm4gci5tPWUsci5jPXQsci5wPVwiXCIscigwKX0oW2Z1bmN0aW9uKGUscil7dmFyIHQ9d2luZG93LG49dC5uYXZpZ2F0b3I7dC5nX2lTUlNGYWlsZWQ9MCx0Lmdfc1NSU1N1Y2Nlc3M9XCJcIixyLlNSU1JldHJ5PWZ1bmN0aW9uKGUscixpLHMsYSl7dmFyIG89MSxjPXVuZXNjYXBlKFwiJTNDc2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCdcIik7YSYmKGMrPVwiIGNyb3Nzb3JpZ2luPSdhbm9ueW1vdXMnIGludGVncml0eT0nXCIrYStcIidcIiksYys9XCIgc3JjPSdcIjt2YXIgdT11bmVzY2FwZShcIiclM0UlM0Mvc2NyaXB0JTNFXCIpLFM9cjtpZihuJiZuLnVzZXJBZ2VudCYmcyYmcyE9PXIpe3ZhciBkPW4udXNlckFnZW50LnRvTG93ZXJDYXNlKCkscD1kLmluZGV4T2YoXCJlZGdlXCIpPj0wO2lmKCFwKXt2YXIgZj1kLm1hdGNoKC9jaHJvbWVcXC8oWzAtOV0rKVxcLi8pLGc9ZiYmMj09PWYubGVuZ3RoJiYhaXNOYU4oZlsxXSkmJnBhcnNlSW50KGZbMV0pPjU0O2cmJihTPXMpfX10Lmdfc1NSU1N1Y2Nlc3MuaW5kZXhPZihlKT09PS0xJiYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHRbZV0/KHQuZ19pU1JTRmFpbGVkPTEsaTw9byYmZG9jdW1lbnQud3JpdGUoYytTK3UpKTp0Lmdfc1NSU1N1Y2Nlc3MrPWUrXCJ8XCIraStcIixcIil9fV0pKTt2YXIgZ19kdEZpcnN0Qnl0ZT1uZXcgRGF0ZSgpO3ZhciBnX29ialBhZ2VNb2RlID0gbnVsbDs8L3NjcmlwdD48L2hlYWQ+PGJvZHk+PGRpdiBpZD1cInJvb3RcIiAvPjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiIHNyYz1cImh0dHBzOi8vbG9naW5jZG4ubXNmdGF1dGgubmV0L3NoYXJlZC81L2pzL2xvZ2luX2VuX3ZyaGJ2YnI3Y0RhcUZOZVYxazdSVGcyLmpzXCIgY3Jvc3NvcmlnaW49XCJhbm9ueW1vdXNcIiBjbGFzcz1cImhhbmRsZS1lcnJvci10YWdcIi8+PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4ifSwgImhlYWRlcnNTaXplIjogMjI0OCwgImJvZHlTaXplIjogMTA5MjksICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDEzMTc3fSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAwLjE3MywgImNvbm5lY3QiOiA0NC4zMTgsICJzc2wiOiAzMi41NywgInNlbmQiOiAwLCAid2FpdCI6IDE1MC4xMDIsICJyZWNlaXZlIjogNS43NDJ9LCAicGFnZXJlZiI6ICJwYWdlQDgxMTM3Y2YzOWNhMDNlZWVkYTVhYWVjYjczZjBhZmU2IiwgInNlcnZlcklQQWRkcmVzcyI6ICI0MC4xMjYuMzIuMTM0IiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMiIsICJzdWJqZWN0TmFtZSI6ICJsb2dpbi5saXZlLmNvbSIsICJpc3N1ZXIiOiAiRGlnaUNlcnQgU0hBMiBTZWN1cmUgU2VydmVyIENBIiwgInZhbGlkRnJvbSI6IDE3MTYyNDk2MDAsICJ2YWxpZFRvIjogMTc0Nzg3MTk5OX19LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDI0LTA4LTAxVDIwOjMwOjA0Ljc2N1oiLCAidGltZSI6IDcwLjUwNTAwMDAwMDAwMDAxLCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvc2hhcmVkLzUvanMvbG9naW5fZW5fdnJoYnZicjdjRGFxRk5lVjFrN1JUZzIuanMiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiOmF1dGhvcml0eSIsICJ2YWx1ZSI6ICJsb2dpbmNkbi5tc2Z0YXV0aC5uZXQifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvc2hhcmVkLzUvanMvbG9naW5fZW5fdnJoYnZicjdjRGFxRk5lVjFrN1JUZzIuanMifSwgeyJuYW1lIjogIjpzY2hlbWUiLCAidmFsdWUiOiAiaHR0cHMifSwgeyJuYW1lIjogImFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogImFjY2VwdC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciwgenN0ZCJ9LCB7Im5hbWUiOiAiYWNjZXB0LWxhbmd1YWdlIiwgInZhbHVlIjogImVuLVVTLGVuO3E9MC45In0sIHsibmFtZSI6ICJvcmlnaW4iLCAidmFsdWUiOiAiaHR0cHM6Ly9sb2dpbi5saXZlLmNvbSJ9LCB7Im5hbWUiOiAicHJpb3JpdHkiLCAidmFsdWUiOiAidT0xIn0sIHsibmFtZSI6ICJyZWZlcmVyIiwgInZhbHVlIjogImh0dHBzOi8vbG9naW4ubGl2ZS5jb20vIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEiLCAidmFsdWUiOiAiXCJDaHJvbWl1bVwiO3Y9XCIxMjdcIiwgXCJOb3QpQTtCcmFuZFwiO3Y9XCI5OVwiIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtbW9iaWxlIiwgInZhbHVlIjogIj8wIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtcGxhdGZvcm0iLCAidmFsdWUiOiAiXCJXaW5kb3dzXCIifSwgeyJuYW1lIjogInNlYy1mZXRjaC1kZXN0IiwgInZhbHVlIjogInNjcmlwdCJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAiY29ycyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXNlci1hZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI3LjAuNjUzMy4xNyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNjYzLCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJhY2NlcHQtcmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtZXhwb3NlLWhlYWRlcnMiLCAidmFsdWUiOiAieC1tcy1yZXF1ZXN0LWlkLFNlcnZlcix4LW1zLXZlcnNpb24sQ29udGVudC1UeXBlLENvbnRlbnQtRW5jb2RpbmcsQ2FjaGUtQ29udHJvbCxMYXN0LU1vZGlmaWVkLEVUYWcsQ29udGVudC1NRDUseC1tcy1sZWFzZS1zdGF0dXMseC1tcy1ibG9iLXR5cGUsQ29udGVudC1MZW5ndGgsRGF0ZSxUcmFuc2Zlci1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiYWdlIiwgInZhbHVlIjogIjE5MjI0NjEifSwgeyJuYW1lIjogImNhY2hlLWNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwIn0sIHsibmFtZSI6ICJjb250ZW50LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogImNvbnRlbnQtbGVuZ3RoIiwgInZhbHVlIjogIjIzMzUxMyJ9LCB7Im5hbWUiOiAiY29udGVudC1tZDUiLCAidmFsdWUiOiAiczZHNmdGQ0VUMTZHeklPdlU4SjlJQT09In0sIHsibmFtZSI6ICJjb250ZW50LXR5cGUiLCAidmFsdWUiOiAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0In0sIHsibmFtZSI6ICJkYXRlIiwgInZhbHVlIjogIlRodSwgMDEgQXVnIDIwMjQgMjA6MzA6MDQgR01UIn0sIHsibmFtZSI6ICJldGFnIiwgInZhbHVlIjogIjB4OERDQTA3MzY1NUNCMUJBIn0sIHsibmFtZSI6ICJsYXN0LW1vZGlmaWVkIiwgInZhbHVlIjogIldlZCwgMTAgSnVsIDIwMjQgMDA6MDE6MDYgR01UIn0sIHsibmFtZSI6ICJzZXJ2ZXIiLCAidmFsdWUiOiAiRUNBY2MgKGZyYy80Q0Y2KSJ9LCB7Im5hbWUiOiAidmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIngtY2FjaGUiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJ4LW1zLWJsb2ItdHlwZSIsICJ2YWx1ZSI6ICJCbG9ja0Jsb2IifSwgeyJuYW1lIjogIngtbXMtbGVhc2Utc3RhdHVzIiwgInZhbHVlIjogInVubG9ja2VkIn0sIHsibmFtZSI6ICJ4LW1zLXJlcXVlc3QtaWQiLCAidmFsdWUiOiAiMDVkOGMwYWItMjAxZS0wMDk5LTZjZDUtZDJjZTQyMDAwMDAwIn0sIHsibmFtZSI6ICJ4LW1zLXZlcnNpb24iLCAidmFsdWUiOiAiMjAwOS0wOS0xOSJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiA5Mjc2OTIsICJtaW1lVHlwZSI6ICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiLCAiY29tcHJlc3Npb24iOiA2OTM1NjgsICJ0ZXh0IjogIi8qISBGb3IgbGljZW5zZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIGxvZ2luX2VuLmpzLkxJQ0VOU0UudHh0ICovXG4hZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvLGk9ezk3MjA2OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDkzODQpLG89e2NoaWxkQ29udGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAsZ2V0RGVmYXVsdFByb3BzOiEwLGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjohMCxnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxpPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGNhbGxlZTohMCxhcmd1bWVudHM6ITAsYXJpdHk6ITB9LGE9eyQkdHlwZW9mOiEwLGNvbXBhcmU6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxsPXt9O2Z1bmN0aW9uIHMoZSl7cmV0dXJuIHIuaXNNZW1vKGUpP2E6bFtlLiQkdHlwZW9mXXx8b31sW3IuRm9yd2FyZFJlZl09eyQkdHlwZW9mOiEwLHJlbmRlcjohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6ITAscHJvcFR5cGVzOiEwfSxsW3IuTWVtb109YTt2YXIgYz1PYmplY3QuZGVmaW5lUHJvcGVydHksdT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyxkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsZj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHA9T2JqZWN0LmdldFByb3RvdHlwZU9mLGc9T2JqZWN0LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0LG4scil7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIG4pe2lmKGcpe3ZhciBvPXAobik7byYmbyE9PWcmJmUodCxvLHIpfXZhciBhPXUobik7ZCYmKGE9YS5jb25jYXQoZChuKSkpO2Zvcih2YXIgbD1zKHQpLG09cyhuKSxoPTA7aDxhLmxlbmd0aDsrK2gpe3ZhciBiPWFbaF07aWYoIShpW2JdfHxyJiZyW2JdfHxtJiZtW2JdfHxsJiZsW2JdKSl7dmFyIHk9ZihuLGIpO3RyeXtjKHQsYix5KX1jYXRjaCh2KXt9fX19cmV0dXJuIHR9fSwxOTUxOmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxuKGUpfXZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixvPXI/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsaT1yP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsYT1yP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxsPXI/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LHM9cj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsYz1yP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSx1PXI/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsZD1yP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLGY9cj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLHA9cj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIsZz1yP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxtPXI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAsaD1yP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LGI9cj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix5PXI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHY9cj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcsdz1yP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgsUz1yP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtmdW5jdGlvbiBQKGUpe2lmKFwib2JqZWN0XCI9PT1uKGUpJiZudWxsIT09ZSl7dmFyIHQ9ZS4kJHR5cGVvZjtzd2l0Y2godCl7Y2FzZSBvOnN3aXRjaChlPWUudHlwZSl7Y2FzZSBkOmNhc2UgZjpjYXNlIGE6Y2FzZSBzOmNhc2UgbDpjYXNlIGc6cmV0dXJuIGU7ZGVmYXVsdDpzd2l0Y2goZT1lJiZlLiQkdHlwZW9mKXtjYXNlIHU6Y2FzZSBwOmNhc2UgYjpjYXNlIGg6Y2FzZSBjOnJldHVybiBlO2RlZmF1bHQ6cmV0dXJuIHR9fWNhc2UgaTpyZXR1cm4gdH19fWZ1bmN0aW9uIHgoZSl7cmV0dXJuIFAoZSk9PT1mfXQuQXN5bmNNb2RlPWQsdC5Db25jdXJyZW50TW9kZT1mLHQuQ29udGV4dENvbnN1bWVyPXUsdC5Db250ZXh0UHJvdmlkZXI9Yyx0LkVsZW1lbnQ9byx0LkZvcndhcmRSZWY9cCx0LkZyYWdtZW50PWEsdC5MYXp5PWIsdC5NZW1vPWgsdC5Qb3J0YWw9aSx0LlByb2ZpbGVyPXMsdC5TdHJpY3RNb2RlPWwsdC5TdXNwZW5zZT1nLHQuaXNBc3luY01vZGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHgoZSl8fFAoZSk9PT1kfSx0LmlzQ29uY3VycmVudE1vZGU9eCx0LmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGUpe3JldHVybiBQKGUpPT09dX0sdC5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihlKXtyZXR1cm4gUChlKT09PWN9LHQuaXNFbGVtZW50PWZ1bmN0aW9uKGUpe3JldHVyblwib2JqZWN0XCI9PT1uKGUpJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW99LHQuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBQKGUpPT09cH0sdC5pc0ZyYWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBQKGUpPT09YX0sdC5pc0xhenk9ZnVuY3Rpb24oZSl7cmV0dXJuIFAoZSk9PT1ifSx0LmlzTWVtbz1mdW5jdGlvbihlKXtyZXR1cm4gUChlKT09PWh9LHQuaXNQb3J0YWw9ZnVuY3Rpb24oZSl7cmV0dXJuIFAoZSk9PT1pfSx0LmlzUHJvZmlsZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIFAoZSk9PT1zfSx0LmlzU3RyaWN0TW9kZT1mdW5jdGlvbihlKXtyZXR1cm4gUChlKT09PWx9LHQuaXNTdXNwZW5zZT1mdW5jdGlvbihlKXtyZXR1cm4gUChlKT09PWd9LHQuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlfHxlPT09YXx8ZT09PWZ8fGU9PT1zfHxlPT09bHx8ZT09PWd8fGU9PT1tfHxcIm9iamVjdFwiPT09bihlKSYmbnVsbCE9PWUmJihlLiQkdHlwZW9mPT09Ynx8ZS4kJHR5cGVvZj09PWh8fGUuJCR0eXBlb2Y9PT1jfHxlLiQkdHlwZW9mPT09dXx8ZS4kJHR5cGVvZj09PXB8fGUuJCR0eXBlb2Y9PT12fHxlLiQkdHlwZW9mPT09d3x8ZS4kJHR5cGVvZj09PVN8fGUuJCR0eXBlb2Y9PT15KX0sdC50eXBlT2Y9UH0sOTM4NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oMTk1MSl9LDMwMDkwOmZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO3ZhciB0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtmdW5jdGlvbiBvKGUpe2lmKG51bGw9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBPYmplY3QoZSl9ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoXCJhYmNcIik7aWYoZVs1XT1cImRlXCIsXCI1XCI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbXCJfXCIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjtpZihcIjAxMjM0NTY3ODlcIiE9PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19KSkuam9pbihcIlwiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm5cImFiY2RlZmdoaWprbG1ub3BxcnN0XCIuc3BsaXQoXCJcIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cltlXT1lfSkpLFwiYWJjZGVmZ2hpamtsbW5vcHFyc3RcIj09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30scikpLmpvaW4oXCJcIil9Y2F0Y2gobyl7cmV0dXJuITF9fSgpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSxpKXtmb3IodmFyIGEsbCxzPW8oZSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe2Zvcih2YXIgdSBpbiBhPU9iamVjdChhcmd1bWVudHNbY10pKW4uY2FsbChhLHUpJiYoc1t1XT1hW3VdKTtpZih0KXtsPXQoYSk7Zm9yKHZhciBkPTA7ZDxsLmxlbmd0aDtkKyspci5jYWxsKGEsbFtkXSkmJihzW2xbZF1dPWFbbFtkXV0pfX1yZXR1cm4gc319LDQ3MTI3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHIoZSl9dmFyIG89big1OTY1NyksaT1uKDMwMDkwKSxhPW4oODMwMjApO2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0PVwiaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9XCIrZSxuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0Kz1cIiZhcmdzW109XCIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tuXSk7cmV0dXJuXCJNaW5pZmllZCBSZWFjdCBlcnJvciAjXCIrZStcIjsgdmlzaXQgXCIrdCtcIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuXCJ9aWYoIW8pdGhyb3cgRXJyb3IobCgyMjcpKTtmdW5jdGlvbiBzKGUsdCxuLHIsbyxpLGEsbCxzKXt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e3QuYXBwbHkobixjKX1jYXRjaCh1KXt0aGlzLm9uRXJyb3IodSl9fXZhciBjPSExLHU9bnVsbCxkPSExLGY9bnVsbCxwPXtvbkVycm9yOmZ1bmN0aW9uKGUpe2M9ITAsdT1lfX07ZnVuY3Rpb24gZyhlLHQsbixyLG8saSxhLGwsZCl7Yz0hMSx1PW51bGwscy5hcHBseShwLGFyZ3VtZW50cyl9dmFyIG09bnVsbCxoPW51bGwsYj1udWxsO2Z1bmN0aW9uIHkoZSx0LG4pe3ZhciByPWUudHlwZXx8XCJ1bmtub3duLWV2ZW50XCI7ZS5jdXJyZW50VGFyZ2V0PWIobiksZnVuY3Rpb24oZSx0LG4scixvLGksYSxzLHApe2lmKGcuYXBwbHkodGhpcyxhcmd1bWVudHMpLGMpe2lmKCFjKXRocm93IEVycm9yKGwoMTk4KSk7dmFyIG09dTtjPSExLHU9bnVsbCxkfHwoZD0hMCxmPW0pfX0ocix0LHZvaWQgMCxlKSxlLmN1cnJlbnRUYXJnZXQ9bnVsbH12YXIgdj1udWxsLHc9e307ZnVuY3Rpb24gUygpe2lmKHYpZm9yKHZhciBlIGluIHcpe3ZhciB0PXdbZV0sbj12LmluZGV4T2YoZSk7aWYoISgtMTxuKSl0aHJvdyBFcnJvcihsKDk2LGUpKTtpZigheFtuXSl7aWYoIXQuZXh0cmFjdEV2ZW50cyl0aHJvdyBFcnJvcihsKDk3LGUpKTtmb3IodmFyIHIgaW4geFtuXT10LG49dC5ldmVudFR5cGVzKXt2YXIgbz12b2lkIDAsaT1uW3JdLGE9dCxzPXI7aWYoTy5oYXNPd25Qcm9wZXJ0eShzKSl0aHJvdyBFcnJvcihsKDk5LHMpKTtPW3NdPWk7dmFyIGM9aS5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihjKXtmb3IobyBpbiBjKWMuaGFzT3duUHJvcGVydHkobykmJlAoY1tvXSxhLHMpO289ITB9ZWxzZSBpLnJlZ2lzdHJhdGlvbk5hbWU/KFAoaS5yZWdpc3RyYXRpb25OYW1lLGEscyksbz0hMCk6bz0hMTtpZighbyl0aHJvdyBFcnJvcihsKDk4LHIsZSkpfX19fWZ1bmN0aW9uIFAoZSx0LG4pe2lmKF9bZV0pdGhyb3cgRXJyb3IobCgxMDAsZSkpO19bZV09dCxDW2VdPXQuZXZlbnRUeXBlc1tuXS5kZXBlbmRlbmNpZXN9dmFyIHg9W10sTz17fSxfPXt9LEM9e307ZnVuY3Rpb24gayhlKXt2YXIgdCxuPSExO2Zvcih0IGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIHI9ZVt0XTtpZighdy5oYXNPd25Qcm9wZXJ0eSh0KXx8d1t0XSE9PXIpe2lmKHdbdF0pdGhyb3cgRXJyb3IobCgxMDIsdCkpO3dbdF09cixuPSEwfX1uJiZTKCl9dmFyIEE9IShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93fHx2b2lkIDA9PT13aW5kb3cuZG9jdW1lbnR8fHZvaWQgMD09PXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxUPW51bGwsRT1udWxsLGo9bnVsbDtmdW5jdGlvbiBJKGUpe2lmKGU9aChlKSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgVCl0aHJvdyBFcnJvcihsKDI4MCkpO3ZhciB0PWUuc3RhdGVOb2RlO3QmJih0PW0odCksVChlLnN0YXRlTm9kZSxlLnR5cGUsdCkpfX1mdW5jdGlvbiBMKGUpe0U/aj9qLnB1c2goZSk6aj1bZV06RT1lfWZ1bmN0aW9uIEQoKXtpZihFKXt2YXIgZT1FLHQ9ajtpZihqPUU9bnVsbCxJKGUpLHQpZm9yKGU9MDtlPHQubGVuZ3RoO2UrKylJKHRbZV0pfX1mdW5jdGlvbiBOKGUsdCl7cmV0dXJuIGUodCl9ZnVuY3Rpb24gUihlLHQsbixyLG8pe3JldHVybiBlKHQsbixyLG8pfWZ1bmN0aW9uIEIoKXt9dmFyIFU9TixGPSExLE09ITE7ZnVuY3Rpb24geigpe251bGw9PT1FJiZudWxsPT09anx8KEIoKSxEKCkpfWZ1bmN0aW9uIEgoZSx0LG4pe2lmKE0pcmV0dXJuIGUodCxuKTtNPSEwO3RyeXtyZXR1cm4gVShlLHQsbil9ZmluYWxseXtNPSExLHooKX19dmFyIFY9L15bOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkRdWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDBdKiQvLFc9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxHPXt9LCQ9e307ZnVuY3Rpb24gSyhlLHQsbixvKXtpZihudWxsPT10fHxmdW5jdGlvbihlLHQsbixvKXtpZihudWxsIT09biYmMD09PW4udHlwZSlyZXR1cm4hMTtzd2l0Y2gocih0KSl7Y2FzZVwiZnVuY3Rpb25cIjpjYXNlXCJzeW1ib2xcIjpyZXR1cm4hMDtjYXNlXCJib29sZWFuXCI6cmV0dXJuIW8mJihudWxsIT09bj8hbi5hY2NlcHRzQm9vbGVhbnM6XCJkYXRhLVwiIT09KGU9ZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSkpJiZcImFyaWEtXCIhPT1lKTtkZWZhdWx0OnJldHVybiExfX0oZSx0LG4sbykpcmV0dXJuITA7aWYobylyZXR1cm4hMTtpZihudWxsIT09bilzd2l0Y2gobi50eXBlKXtjYXNlIDM6cmV0dXJuIXQ7Y2FzZSA0OnJldHVybiExPT09dDtjYXNlIDU6cmV0dXJuIGlzTmFOKHQpO2Nhc2UgNjpyZXR1cm4gaXNOYU4odCl8fDE+dH1yZXR1cm4hMX1mdW5jdGlvbiBxKGUsdCxuLHIsbyxpKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09dHx8Mz09PXR8fDQ9PT10LHRoaXMuYXR0cmlidXRlTmFtZT1yLHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlPW8sdGhpcy5tdXN0VXNlUHJvcGVydHk9bix0aGlzLnByb3BlcnR5TmFtZT1lLHRoaXMudHlwZT10LHRoaXMuc2FuaXRpemVVUkw9aX12YXIgUT17fTtcImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtRW2VdPW5ldyBxKGUsMCwhMSxlLG51bGwsITEpfSkpLFtbXCJhY2NlcHRDaGFyc2V0XCIsXCJhY2NlcHQtY2hhcnNldFwiXSxbXCJjbGFzc05hbWVcIixcImNsYXNzXCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl1dLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF07UVt0XT1uZXcgcSh0LDEsITEsZVsxXSxudWxsLCExKX0pKSxbXCJjb250ZW50RWRpdGFibGVcIixcImRyYWdnYWJsZVwiLFwic3BlbGxDaGVja1wiLFwidmFsdWVcIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7UVtlXT1uZXcgcShlLDIsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSkpLFtcImF1dG9SZXZlcnNlXCIsXCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXCIsXCJmb2N1c2FibGVcIixcInByZXNlcnZlQWxwaGFcIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7UVtlXT1uZXcgcShlLDIsITEsZSxudWxsLCExKX0pKSxcImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKChmdW5jdGlvbihlKXtRW2VdPW5ldyBxKGUsMywhMSxlLnRvTG93ZXJDYXNlKCksbnVsbCwhMSl9KSksW1wiY2hlY2tlZFwiLFwibXVsdGlwbGVcIixcIm11dGVkXCIsXCJzZWxlY3RlZFwiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtRW2VdPW5ldyBxKGUsMywhMCxlLG51bGwsITEpfSkpLFtcImNhcHR1cmVcIixcImRvd25sb2FkXCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe1FbZV09bmV3IHEoZSw0LCExLGUsbnVsbCwhMSl9KSksW1wiY29sc1wiLFwicm93c1wiLFwic2l6ZVwiLFwic3BhblwiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtRW2VdPW5ldyBxKGUsNiwhMSxlLG51bGwsITEpfSkpLFtcInJvd1NwYW5cIixcInN0YXJ0XCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe1FbZV09bmV3IHEoZSw1LCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExKX0pKTt2YXIgWD0vW1xcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIFkoZSl7cmV0dXJuIGVbMV0udG9VcHBlckNhc2UoKX1cImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0XCIuc3BsaXQoXCIgXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShYLFkpO1FbdF09bmV3IHEodCwxLCExLGUsbnVsbCwhMSl9KSksXCJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKFgsWSk7UVt0XT1uZXcgcSh0LDEsITEsZSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMSl9KSksW1wieG1sOmJhc2VcIixcInhtbDpsYW5nXCIsXCJ4bWw6c3BhY2VcIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKFgsWSk7UVt0XT1uZXcgcSh0LDEsITEsZSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLCExKX0pKSxbXCJ0YWJJbmRleFwiLFwiY3Jvc3NPcmlnaW5cIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7UVtlXT1uZXcgcShlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEpfSkpLFEueGxpbmtIcmVmPW5ldyBxKFwieGxpbmtIcmVmXCIsMSwhMSxcInhsaW5rOmhyZWZcIixcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMCksW1wic3JjXCIsXCJocmVmXCIsXCJhY3Rpb25cIixcImZvcm1BY3Rpb25cIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7UVtlXT1uZXcgcShlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITApfSkpO3ZhciBaPW8uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7ZnVuY3Rpb24gSihlLHQsbixyKXt2YXIgbz1RLmhhc093blByb3BlcnR5KHQpP1FbdF06bnVsbDsobnVsbCE9PW8/MD09PW8udHlwZTohciYmKDI8dC5sZW5ndGgmJihcIm9cIj09PXRbMF18fFwiT1wiPT09dFswXSkmJihcIm5cIj09PXRbMV18fFwiTlwiPT09dFsxXSkpKXx8KEsodCxuLG8scikmJihuPW51bGwpLHJ8fG51bGw9PT1vP2Z1bmN0aW9uKGUpe3JldHVybiEhVy5jYWxsKCQsZSl8fCFXLmNhbGwoRyxlKSYmKFYudGVzdChlKT8kW2VdPSEwOihHW2VdPSEwLCExKSl9KHQpJiYobnVsbD09PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCxcIlwiK24pKTpvLm11c3RVc2VQcm9wZXJ0eT9lW28ucHJvcGVydHlOYW1lXT1udWxsPT09bj8zIT09by50eXBlJiZcIlwiOm46KHQ9by5hdHRyaWJ1dGVOYW1lLHI9by5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG49Mz09PShvPW8udHlwZSl8fDQ9PT1vJiYhMD09PW4/XCJcIjpcIlwiK24scj9lLnNldEF0dHJpYnV0ZU5TKHIsdCxuKTplLnNldEF0dHJpYnV0ZSh0LG4pKSkpfVouaGFzT3duUHJvcGVydHkoXCJSZWFjdEN1cnJlbnREaXNwYXRjaGVyXCIpfHwoWi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyPXtjdXJyZW50Om51bGx9KSxaLmhhc093blByb3BlcnR5KFwiUmVhY3RDdXJyZW50QmF0Y2hDb25maWdcIil8fChaLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnPXtzdXNwZW5zZTpudWxsfSk7dmFyIGVlPS9eKC4qKVtcXFxcXFwvXS8sdGU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLG5lPXRlP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLHJlPXRlP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsb2U9dGU/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGllPXRlP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxhZT10ZT9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsbGU9dGU/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LHNlPXRlP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGNlPXRlP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsdWU9dGU/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLGRlPXRlP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxmZT10ZT9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCxwZT10ZT9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSxnZT10ZT9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNixtZT10ZT9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsaGU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gYmUoZSl7cmV0dXJuIG51bGw9PT1lfHxcIm9iamVjdFwiIT09cihlKT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9aGUmJmVbaGVdfHxlW1wiQEBpdGVyYXRvclwiXSk/ZTpudWxsfWZ1bmN0aW9uIHllKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSlyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBlO3N3aXRjaChlKXtjYXNlIG9lOnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIHJlOnJldHVyblwiUG9ydGFsXCI7Y2FzZSBhZTpyZXR1cm5cIlByb2ZpbGVyXCI7Y2FzZSBpZTpyZXR1cm5cIlN0cmljdE1vZGVcIjtjYXNlIGRlOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIGZlOnJldHVyblwiU3VzcGVuc2VMaXN0XCJ9aWYoXCJvYmplY3RcIj09PXIoZSkpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2Ugc2U6cmV0dXJuXCJDb250ZXh0LkNvbnN1bWVyXCI7Y2FzZSBsZTpyZXR1cm5cIkNvbnRleHQuUHJvdmlkZXJcIjtjYXNlIHVlOnZhciB0PWUucmVuZGVyO3JldHVybiB0PXQuZGlzcGxheU5hbWV8fHQubmFtZXx8XCJcIixlLmRpc3BsYXlOYW1lfHwoXCJcIiE9PXQ/XCJGb3J3YXJkUmVmKFwiK3QrXCIpXCI6XCJGb3J3YXJkUmVmXCIpO2Nhc2UgcGU6cmV0dXJuIHllKGUudHlwZSk7Y2FzZSBtZTpyZXR1cm4geWUoZS5yZW5kZXIpO2Nhc2UgZ2U6aWYoZT0xPT09ZS5fc3RhdHVzP2UuX3Jlc3VsdDpudWxsKXJldHVybiB5ZShlKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiB2ZShlKXt2YXIgdD1cIlwiO2Rve2U6c3dpdGNoKGUudGFnKXtjYXNlIDM6Y2FzZSA0OmNhc2UgNjpjYXNlIDc6Y2FzZSAxMDpjYXNlIDk6dmFyIG49XCJcIjticmVhayBlO2RlZmF1bHQ6dmFyIHI9ZS5fZGVidWdPd25lcixvPWUuX2RlYnVnU291cmNlLGk9eWUoZS50eXBlKTtuPW51bGwsciYmKG49eWUoci50eXBlKSkscj1pLGk9XCJcIixvP2k9XCIgKGF0IFwiK28uZmlsZU5hbWUucmVwbGFjZShlZSxcIlwiKStcIjpcIitvLmxpbmVOdW1iZXIrXCIpXCI6biYmKGk9XCIgKGNyZWF0ZWQgYnkgXCIrbitcIilcIiksbj1cIlxcbiAgICBpbiBcIisocnx8XCJVbmtub3duXCIpK2l9dCs9bixlPWUucmV0dXJufXdoaWxlKGUpO3JldHVybiB0fWZ1bmN0aW9uIHdlKGUpe3N3aXRjaChyKGUpKXtjYXNlXCJib29sZWFuXCI6Y2FzZVwibnVtYmVyXCI6Y2FzZVwib2JqZWN0XCI6Y2FzZVwic3RyaW5nXCI6Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm5cIlwifX1mdW5jdGlvbiBTZShlKXt2YXIgdD1lLnR5cGU7cmV0dXJuKGU9ZS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWUudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PXR8fFwicmFkaW9cIj09PXQpfWZ1bmN0aW9uIFBlKGUpe2UuX3ZhbHVlVHJhY2tlcnx8KGUuX3ZhbHVlVHJhY2tlcj1mdW5jdGlvbihlKXt2YXIgdD1TZShlKT9cImNoZWNrZWRcIjpcInZhbHVlXCIsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLHQpLHI9XCJcIitlW3RdO2lmKCFlLmhhc093blByb3BlcnR5KHQpJiZ2b2lkIDAhPT1uJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmdldCYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5zZXQpe3ZhciBvPW4uZ2V0LGk9bi5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7cj1cIlwiK2UsaS5jYWxsKHRoaXMsZSl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTpuLmVudW1lcmFibGV9KSx7Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0VmFsdWU6ZnVuY3Rpb24oZSl7cj1cIlwiK2V9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2UuX3ZhbHVlVHJhY2tlcj1udWxsLGRlbGV0ZSBlW3RdfX19fShlKSl9ZnVuY3Rpb24geGUoZSl7aWYoIWUpcmV0dXJuITE7dmFyIHQ9ZS5fdmFsdWVUcmFja2VyO2lmKCF0KXJldHVybiEwO3ZhciBuPXQuZ2V0VmFsdWUoKSxyPVwiXCI7cmV0dXJuIGUmJihyPVNlKGUpP2UuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6ZS52YWx1ZSksKGU9cikhPT1uJiYodC5zZXRWYWx1ZShlKSwhMCl9ZnVuY3Rpb24gT2UoZSx0KXt2YXIgbj10LmNoZWNrZWQ7cmV0dXJuIGkoe30sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIF9lKGUsdCl7dmFyIG49bnVsbD09dC5kZWZhdWx0VmFsdWU/XCJcIjp0LmRlZmF1bHRWYWx1ZSxyPW51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hlY2tlZDtuPXdlKG51bGwhPXQudmFsdWU/dC52YWx1ZTpuKSxlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOnIsaW5pdGlhbFZhbHVlOm4sY29udHJvbGxlZDpcImNoZWNrYm94XCI9PT10LnR5cGV8fFwicmFkaW9cIj09PXQudHlwZT9udWxsIT10LmNoZWNrZWQ6bnVsbCE9dC52YWx1ZX19ZnVuY3Rpb24gQ2UoZSx0KXtudWxsIT0odD10LmNoZWNrZWQpJiZKKGUsXCJjaGVja2VkXCIsdCwhMSl9ZnVuY3Rpb24ga2UoZSx0KXtDZShlLHQpO3ZhciBuPXdlKHQudmFsdWUpLHI9dC50eXBlO2lmKG51bGwhPW4pXCJudW1iZXJcIj09PXI/KDA9PT1uJiZcIlwiPT09ZS52YWx1ZXx8ZS52YWx1ZSE9bikmJihlLnZhbHVlPVwiXCIrbik6ZS52YWx1ZSE9PVwiXCIrbiYmKGUudmFsdWU9XCJcIituKTtlbHNlIGlmKFwic3VibWl0XCI9PT1yfHxcInJlc2V0XCI9PT1yKXJldHVybiB2b2lkIGUucmVtb3ZlQXR0cmlidXRlKFwidmFsdWVcIik7dC5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP1RlKGUsdC50eXBlLG4pOnQuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJlRlKGUsdC50eXBlLHdlKHQuZGVmYXVsdFZhbHVlKSksbnVsbD09dC5jaGVja2VkJiZudWxsIT10LmRlZmF1bHRDaGVja2VkJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfWZ1bmN0aW9uIEFlKGUsdCxuKXtpZih0Lmhhc093blByb3BlcnR5KFwidmFsdWVcIil8fHQuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikpe3ZhciByPXQudHlwZTtpZighKFwic3VibWl0XCIhPT1yJiZcInJlc2V0XCIhPT1yfHx2b2lkIDAhPT10LnZhbHVlJiZudWxsIT09dC52YWx1ZSkpcmV0dXJuO3Q9XCJcIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLG58fHQ9PT1lLnZhbHVlfHwoZS52YWx1ZT10KSxlLmRlZmF1bHRWYWx1ZT10fVwiXCIhPT0obj1lLm5hbWUpJiYoZS5uYW1lPVwiXCIpLGUuZGVmYXVsdENoZWNrZWQ9ISFlLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsXCJcIiE9PW4mJihlLm5hbWU9bil9ZnVuY3Rpb24gVGUoZSx0LG4pe1wibnVtYmVyXCI9PT10JiZlLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWV8fChudWxsPT1uP2UuZGVmYXVsdFZhbHVlPVwiXCIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZTplLmRlZmF1bHRWYWx1ZSE9PVwiXCIrbiYmKGUuZGVmYXVsdFZhbHVlPVwiXCIrbikpfWZ1bmN0aW9uIEVlKGUsdCl7cmV0dXJuIGU9aSh7Y2hpbGRyZW46dm9pZCAwfSx0KSwodD1mdW5jdGlvbihlKXt2YXIgdD1cIlwiO3JldHVybiBvLkNoaWxkcmVuLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKHQrPWUpfSkpLHR9KHQuY2hpbGRyZW4pKSYmKGUuY2hpbGRyZW49dCksZX1mdW5jdGlvbiBqZShlLHQsbixyKXtpZihlPWUub3B0aW9ucyx0KXt0PXt9O2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXRbXCIkXCIrbltvXV09ITA7Zm9yKG49MDtuPGUubGVuZ3RoO24rKylvPXQuaGFzT3duUHJvcGVydHkoXCIkXCIrZVtuXS52YWx1ZSksZVtuXS5zZWxlY3RlZCE9PW8mJihlW25dLnNlbGVjdGVkPW8pLG8mJnImJihlW25dLmRlZmF1bHRTZWxlY3RlZD0hMCl9ZWxzZXtmb3Iobj1cIlwiK3dlKG4pLHQ9bnVsbCxvPTA7bzxlLmxlbmd0aDtvKyspe2lmKGVbb10udmFsdWU9PT1uKXJldHVybiBlW29dLnNlbGVjdGVkPSEwLHZvaWQociYmKGVbb10uZGVmYXVsdFNlbGVjdGVkPSEwKSk7bnVsbCE9PXR8fGVbb10uZGlzYWJsZWR8fCh0PWVbb10pfW51bGwhPT10JiYodC5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9uIEllKGUsdCl7aWYobnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCl0aHJvdyBFcnJvcihsKDkxKSk7cmV0dXJuIGkoe30sdCx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46XCJcIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gTGUoZSx0KXt2YXIgbj10LnZhbHVlO2lmKG51bGw9PW4pe2lmKG49dC5jaGlsZHJlbix0PXQuZGVmYXVsdFZhbHVlLG51bGwhPW4pe2lmKG51bGwhPXQpdGhyb3cgRXJyb3IobCg5MikpO2lmKEFycmF5LmlzQXJyYXkobikpe2lmKCEoMT49bi5sZW5ndGgpKXRocm93IEVycm9yKGwoOTMpKTtuPW5bMF19dD1ufW51bGw9PXQmJih0PVwiXCIpLG49dH1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTp3ZShuKX19ZnVuY3Rpb24gRGUoZSx0KXt2YXIgbj13ZSh0LnZhbHVlKSxyPXdlKHQuZGVmYXVsdFZhbHVlKTtudWxsIT1uJiYoKG49XCJcIituKSE9PWUudmFsdWUmJihlLnZhbHVlPW4pLG51bGw9PXQuZGVmYXVsdFZhbHVlJiZlLmRlZmF1bHRWYWx1ZSE9PW4mJihlLmRlZmF1bHRWYWx1ZT1uKSksbnVsbCE9ciYmKGUuZGVmYXVsdFZhbHVlPVwiXCIrcil9ZnVuY3Rpb24gTmUoZSl7dmFyIHQ9ZS50ZXh0Q29udGVudDt0PT09ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmXCJcIiE9PXQmJm51bGwhPT10JiYoZS52YWx1ZT10KX12YXIgUmU9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCIsQmU9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiO2Z1bmN0aW9uIFVlKGUpe3N3aXRjaChlKXtjYXNlXCJzdmdcIjpyZXR1cm5cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI7Y2FzZVwibWF0aFwiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO2RlZmF1bHQ6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJ9fWZ1bmN0aW9uIEZlKGUsdCl7cmV0dXJuIG51bGw9PWV8fFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09ZT9VZSh0KTpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1lJiZcImZvcmVpZ25PYmplY3RcIj09PXQ/XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI6ZX12YXIgTWUsemUsSGU9KHplPWZ1bmN0aW9uKGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1CZXx8XCJpbm5lckhUTUxcImluIGUpZS5pbm5lckhUTUw9dDtlbHNle2ZvcigoTWU9TWV8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLmlubmVySFRNTD1cIjxzdmc+XCIrdC52YWx1ZU9mKCkudG9TdHJpbmcoKStcIjwvc3ZnPlwiLHQ9TWUuZmlyc3RDaGlsZDtlLmZpcnN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKTtmb3IoO3QuZmlyc3RDaGlsZDspZS5hcHBlbmRDaGlsZCh0LmZpcnN0Q2hpbGQpfX0sXCJ1bmRlZmluZWRcIiE9dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbihlLHQsbixyKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbigoZnVuY3Rpb24oKXtyZXR1cm4gemUoZSx0KX0pKX06emUpO2Z1bmN0aW9uIFZlKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fWZ1bmN0aW9uIFdlKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksbltcIldlYmtpdFwiK2VdPVwid2Via2l0XCIrdCxuW1wiTW96XCIrZV09XCJtb3pcIit0LG59dmFyIEdlPXthbmltYXRpb25lbmQ6V2UoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkVuZFwiKSxhbmltYXRpb25pdGVyYXRpb246V2UoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkl0ZXJhdGlvblwiKSxhbmltYXRpb25zdGFydDpXZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uU3RhcnRcIiksdHJhbnNpdGlvbmVuZDpXZShcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25FbmRcIil9LCRlPXt9LEtlPXt9O2Z1bmN0aW9uIHFlKGUpe2lmKCRlW2VdKXJldHVybiAkZVtlXTtpZighR2VbZV0pcmV0dXJuIGU7dmFyIHQsbj1HZVtlXTtmb3IodCBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodCkmJnQgaW4gS2UpcmV0dXJuICRlW2VdPW5bdF07cmV0dXJuIGV9QSYmKEtlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJBbmltYXRpb25FdmVudFwiaW4gd2luZG93fHwoZGVsZXRlIEdlLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIEdlLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIEdlLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXCJUcmFuc2l0aW9uRXZlbnRcImluIHdpbmRvd3x8ZGVsZXRlIEdlLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7dmFyIFFlPXFlKFwiYW5pbWF0aW9uZW5kXCIpLFhlPXFlKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLFllPXFlKFwiYW5pbWF0aW9uc3RhcnRcIiksWmU9cWUoXCJ0cmFuc2l0aW9uZW5kXCIpLEplPVwiYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxldD1uZXcoXCJmdW5jdGlvblwiPT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcCk7ZnVuY3Rpb24gdHQoZSl7dmFyIHQ9ZXQuZ2V0KGUpO3JldHVybiB2b2lkIDA9PT10JiYodD1uZXcgTWFwLGV0LnNldChlLHQpKSx0fWZ1bmN0aW9uIG50KGUpe3ZhciB0PWUsbj1lO2lmKGUuYWx0ZXJuYXRlKWZvcig7dC5yZXR1cm47KXQ9dC5yZXR1cm47ZWxzZXtlPXQ7ZG97MCE9KDEwMjYmKHQ9ZSkuZWZmZWN0VGFnKSYmKG49dC5yZXR1cm4pLGU9dC5yZXR1cm59d2hpbGUoZSl9cmV0dXJuIDM9PT10LnRhZz9uOm51bGx9ZnVuY3Rpb24gcnQoZSl7aWYoMTM9PT1lLnRhZyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT10JiYobnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKHQ9ZS5tZW1vaXplZFN0YXRlKSksbnVsbCE9PXQpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBvdChlKXtpZihudChlKSE9PWUpdGhyb3cgRXJyb3IobCgxODgpKX1mdW5jdGlvbiBpdChlKXtpZihlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO2lmKCF0KXtpZihudWxsPT09KHQ9bnQoZSkpKXRocm93IEVycm9yKGwoMTg4KSk7cmV0dXJuIHQhPT1lP251bGw6ZX1mb3IodmFyIG49ZSxyPXQ7Oyl7dmFyIG89bi5yZXR1cm47aWYobnVsbD09PW8pYnJlYWs7dmFyIGk9by5hbHRlcm5hdGU7aWYobnVsbD09PWkpe2lmKG51bGwhPT0ocj1vLnJldHVybikpe249cjtjb250aW51ZX1icmVha31pZihvLmNoaWxkPT09aS5jaGlsZCl7Zm9yKGk9by5jaGlsZDtpOyl7aWYoaT09PW4pcmV0dXJuIG90KG8pLGU7aWYoaT09PXIpcmV0dXJuIG90KG8pLHQ7aT1pLnNpYmxpbmd9dGhyb3cgRXJyb3IobCgxODgpKX1pZihuLnJldHVybiE9PXIucmV0dXJuKW49byxyPWk7ZWxzZXtmb3IodmFyIGE9ITEscz1vLmNoaWxkO3M7KXtpZihzPT09bil7YT0hMCxuPW8scj1pO2JyZWFrfWlmKHM9PT1yKXthPSEwLHI9byxuPWk7YnJlYWt9cz1zLnNpYmxpbmd9aWYoIWEpe2ZvcihzPWkuY2hpbGQ7czspe2lmKHM9PT1uKXthPSEwLG49aSxyPW87YnJlYWt9aWYocz09PXIpe2E9ITAscj1pLG49bzticmVha31zPXMuc2libGluZ31pZighYSl0aHJvdyBFcnJvcihsKDE4OSkpfX1pZihuLmFsdGVybmF0ZSE9PXIpdGhyb3cgRXJyb3IobCgxOTApKX1pZigzIT09bi50YWcpdGhyb3cgRXJyb3IobCgxODgpKTtyZXR1cm4gbi5zdGF0ZU5vZGUuY3VycmVudD09PW4/ZTp0fShlKSwhZSlyZXR1cm4gbnVsbDtmb3IodmFyIHQ9ZTs7KXtpZig1PT09dC50YWd8fDY9PT10LnRhZylyZXR1cm4gdDtpZih0LmNoaWxkKXQuY2hpbGQucmV0dXJuPXQsdD10LmNoaWxkO2Vsc2V7aWYodD09PWUpYnJlYWs7Zm9yKDshdC5zaWJsaW5nOyl7aWYoIXQucmV0dXJufHx0LnJldHVybj09PWUpcmV0dXJuIG51bGw7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBhdChlLHQpe2lmKG51bGw9PXQpdGhyb3cgRXJyb3IobCgzMCkpO3JldHVybiBudWxsPT1lP3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxlKTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX1mdW5jdGlvbiBsdChlLHQsbil7QXJyYXkuaXNBcnJheShlKT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX12YXIgc3Q9bnVsbDtmdW5jdGlvbiBjdChlKXtpZihlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciByPTA7cjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspeShlLHRbcl0sbltyXSk7ZWxzZSB0JiZ5KGUsdCxuKTtlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwsZS5pc1BlcnNpc3RlbnQoKXx8ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUpfX1mdW5jdGlvbiB1dChlKXtpZihudWxsIT09ZSYmKHN0PWF0KHN0LGUpKSxlPXN0LHN0PW51bGwsZSl7aWYobHQoZSxjdCksc3QpdGhyb3cgRXJyb3IobCg5NSkpO2lmKGQpdGhyb3cgZT1mLGQ9ITEsZj1udWxsLGV9fWZ1bmN0aW9uIGR0KGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfWZ1bmN0aW9uIGZ0KGUpe2lmKCFBKXJldHVybiExO3ZhciB0PShlPVwib25cIitlKWluIGRvY3VtZW50O3JldHVybiB0fHwoKHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuc2V0QXR0cmlidXRlKGUsXCJyZXR1cm47XCIpLHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdFtlXSksdH12YXIgcHQ9W107ZnVuY3Rpb24gZ3QoZSl7ZS50b3BMZXZlbFR5cGU9bnVsbCxlLm5hdGl2ZUV2ZW50PW51bGwsZS50YXJnZXRJbnN0PW51bGwsZS5hbmNlc3RvcnMubGVuZ3RoPTAsMTA+cHQubGVuZ3RoJiZwdC5wdXNoKGUpfWZ1bmN0aW9uIG10KGUsdCxuLHIpe2lmKHB0Lmxlbmd0aCl7dmFyIG89cHQucG9wKCk7cmV0dXJuIG8udG9wTGV2ZWxUeXBlPWUsby5ldmVudFN5c3RlbUZsYWdzPXIsby5uYXRpdmVFdmVudD10LG8udGFyZ2V0SW5zdD1uLG99cmV0dXJue3RvcExldmVsVHlwZTplLGV2ZW50U3lzdGVtRmxhZ3M6cixuYXRpdmVFdmVudDp0LHRhcmdldEluc3Q6bixhbmNlc3RvcnM6W119fWZ1bmN0aW9uIGh0KGUpe3ZhciB0PWUudGFyZ2V0SW5zdCxuPXQ7ZG97aWYoIW4pe2UuYW5jZXN0b3JzLnB1c2gobik7YnJlYWt9dmFyIHI9bjtpZigzPT09ci50YWcpcj1yLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2Vsc2V7Zm9yKDtyLnJldHVybjspcj1yLnJldHVybjtyPTMhPT1yLnRhZz9udWxsOnIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm99aWYoIXIpYnJlYWs7NSE9PSh0PW4udGFnKSYmNiE9PXR8fGUuYW5jZXN0b3JzLnB1c2gobiksbj1MbihyKX13aGlsZShuKTtmb3Iobj0wO248ZS5hbmNlc3RvcnMubGVuZ3RoO24rKyl7dD1lLmFuY2VzdG9yc1tuXTt2YXIgbz1kdChlLm5hdGl2ZUV2ZW50KTtyPWUudG9wTGV2ZWxUeXBlO3ZhciBpPWUubmF0aXZlRXZlbnQsYT1lLmV2ZW50U3lzdGVtRmxhZ3M7MD09PW4mJihhfD02NCk7Zm9yKHZhciBsPW51bGwscz0wO3M8eC5sZW5ndGg7cysrKXt2YXIgYz14W3NdO2MmJihjPWMuZXh0cmFjdEV2ZW50cyhyLHQsaSxvLGEpKSYmKGw9YXQobCxjKSl9dXQobCl9fWZ1bmN0aW9uIGJ0KGUsdCxuKXtpZighbi5oYXMoZSkpe3N3aXRjaChlKXtjYXNlXCJzY3JvbGxcIjpZdCh0LFwic2Nyb2xsXCIsITApO2JyZWFrO2Nhc2VcImZvY3VzXCI6Y2FzZVwiYmx1clwiOll0KHQsXCJmb2N1c1wiLCEwKSxZdCh0LFwiYmx1clwiLCEwKSxuLnNldChcImJsdXJcIixudWxsKSxuLnNldChcImZvY3VzXCIsbnVsbCk7YnJlYWs7Y2FzZVwiY2FuY2VsXCI6Y2FzZVwiY2xvc2VcIjpmdChlKSYmWXQodCxlLCEwKTticmVhaztjYXNlXCJpbnZhbGlkXCI6Y2FzZVwic3VibWl0XCI6Y2FzZVwicmVzZXRcIjpicmVhaztkZWZhdWx0Oi0xPT09SmUuaW5kZXhPZihlKSYmWHQoZSx0KX1uLnNldChlLG51bGwpfX12YXIgeXQsdnQsd3QsU3Q9ITEsUHQ9W10seHQ9bnVsbCxPdD1udWxsLF90PW51bGwsQ3Q9bmV3IE1hcCxrdD1uZXcgTWFwLEF0PVtdLFR0PVwibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY2xvc2UgY2FuY2VsIGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCBzdWJtaXRcIi5zcGxpdChcIiBcIiksRXQ9XCJmb2N1cyBibHVyIGRyYWdlbnRlciBkcmFnbGVhdmUgbW91c2VvdmVyIG1vdXNlb3V0IHBvaW50ZXJvdmVyIHBvaW50ZXJvdXQgZ290cG9pbnRlcmNhcHR1cmUgbG9zdHBvaW50ZXJjYXB0dXJlXCIuc3BsaXQoXCIgXCIpO2Z1bmN0aW9uIGp0KGUsdCxuLHIsbyl7cmV0dXJue2Jsb2NrZWRPbjplLHRvcExldmVsVHlwZTp0LGV2ZW50U3lzdGVtRmxhZ3M6MzJ8bixuYXRpdmVFdmVudDpvLGNvbnRhaW5lcjpyfX1mdW5jdGlvbiBJdChlLHQpe3N3aXRjaChlKXtjYXNlXCJmb2N1c1wiOmNhc2VcImJsdXJcIjp4dD1udWxsO2JyZWFrO2Nhc2VcImRyYWdlbnRlclwiOmNhc2VcImRyYWdsZWF2ZVwiOk90PW51bGw7YnJlYWs7Y2FzZVwibW91c2VvdmVyXCI6Y2FzZVwibW91c2VvdXRcIjpfdD1udWxsO2JyZWFrO2Nhc2VcInBvaW50ZXJvdmVyXCI6Y2FzZVwicG9pbnRlcm91dFwiOkN0LmRlbGV0ZSh0LnBvaW50ZXJJZCk7YnJlYWs7Y2FzZVwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjprdC5kZWxldGUodC5wb2ludGVySWQpfX1mdW5jdGlvbiBMdChlLHQsbixyLG8saSl7cmV0dXJuIG51bGw9PT1lfHxlLm5hdGl2ZUV2ZW50IT09aT8oZT1qdCh0LG4scixvLGkpLG51bGwhPT10JiYobnVsbCE9PSh0PURuKHQpKSYmdnQodCkpLGUpOihlLmV2ZW50U3lzdGVtRmxhZ3N8PXIsZSl9ZnVuY3Rpb24gRHQoZSl7dmFyIHQ9TG4oZS50YXJnZXQpO2lmKG51bGwhPT10KXt2YXIgbj1udCh0KTtpZihudWxsIT09bilpZigxMz09PSh0PW4udGFnKSl7aWYobnVsbCE9PSh0PXJ0KG4pKSlyZXR1cm4gZS5ibG9ja2VkT249dCx2b2lkIGEudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5KGUucHJpb3JpdHksKGZ1bmN0aW9uKCl7d3Qobil9KSl9ZWxzZSBpZigzPT09dCYmbi5zdGF0ZU5vZGUuaHlkcmF0ZSlyZXR1cm4gdm9pZChlLmJsb2NrZWRPbj0zPT09bi50YWc/bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsKX1lLmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIE50KGUpe2lmKG51bGwhPT1lLmJsb2NrZWRPbilyZXR1cm4hMTt2YXIgdD10bihlLnRvcExldmVsVHlwZSxlLmV2ZW50U3lzdGVtRmxhZ3MsZS5jb250YWluZXIsZS5uYXRpdmVFdmVudCk7aWYobnVsbCE9PXQpe3ZhciBuPURuKHQpO3JldHVybiBudWxsIT09biYmdnQobiksZS5ibG9ja2VkT249dCwhMX1yZXR1cm4hMH1mdW5jdGlvbiBSdChlLHQsbil7TnQoZSkmJm4uZGVsZXRlKHQpfWZ1bmN0aW9uIEJ0KCl7Zm9yKFN0PSExOzA8UHQubGVuZ3RoOyl7dmFyIGU9UHRbMF07aWYobnVsbCE9PWUuYmxvY2tlZE9uKXtudWxsIT09KGU9RG4oZS5ibG9ja2VkT24pKSYmeXQoZSk7YnJlYWt9dmFyIHQ9dG4oZS50b3BMZXZlbFR5cGUsZS5ldmVudFN5c3RlbUZsYWdzLGUuY29udGFpbmVyLGUubmF0aXZlRXZlbnQpO251bGwhPT10P2UuYmxvY2tlZE9uPXQ6UHQuc2hpZnQoKX1udWxsIT09eHQmJk50KHh0KSYmKHh0PW51bGwpLG51bGwhPT1PdCYmTnQoT3QpJiYoT3Q9bnVsbCksbnVsbCE9PV90JiZOdChfdCkmJihfdD1udWxsKSxDdC5mb3JFYWNoKFJ0KSxrdC5mb3JFYWNoKFJ0KX1mdW5jdGlvbiBVdChlLHQpe2UuYmxvY2tlZE9uPT09dCYmKGUuYmxvY2tlZE9uPW51bGwsU3R8fChTdD0hMCxhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxCdCkpKX1mdW5jdGlvbiBGdChlKXtmdW5jdGlvbiB0KHQpe3JldHVybiBVdCh0LGUpfWlmKDA8UHQubGVuZ3RoKXtVdChQdFswXSxlKTtmb3IodmFyIG49MTtuPFB0Lmxlbmd0aDtuKyspe3ZhciByPVB0W25dO3IuYmxvY2tlZE9uPT09ZSYmKHIuYmxvY2tlZE9uPW51bGwpfX1mb3IobnVsbCE9PXh0JiZVdCh4dCxlKSxudWxsIT09T3QmJlV0KE90LGUpLG51bGwhPT1fdCYmVXQoX3QsZSksQ3QuZm9yRWFjaCh0KSxrdC5mb3JFYWNoKHQpLG49MDtuPEF0Lmxlbmd0aDtuKyspKHI9QXRbbl0pLmJsb2NrZWRPbj09PWUmJihyLmJsb2NrZWRPbj1udWxsKTtmb3IoOzA8QXQubGVuZ3RoJiZudWxsPT09KG49QXRbMF0pLmJsb2NrZWRPbjspRHQobiksbnVsbD09PW4uYmxvY2tlZE9uJiZBdC5zaGlmdCgpfXZhciBNdD17fSx6dD1uZXcgTWFwLEh0PW5ldyBNYXAsVnQ9W1wiYWJvcnRcIixcImFib3J0XCIsUWUsXCJhbmltYXRpb25FbmRcIixYZSxcImFuaW1hdGlvbkl0ZXJhdGlvblwiLFllLFwiYW5pbWF0aW9uU3RhcnRcIixcImNhbnBsYXlcIixcImNhblBsYXlcIixcImNhbnBsYXl0aHJvdWdoXCIsXCJjYW5QbGF5VGhyb3VnaFwiLFwiZHVyYXRpb25jaGFuZ2VcIixcImR1cmF0aW9uQ2hhbmdlXCIsXCJlbXB0aWVkXCIsXCJlbXB0aWVkXCIsXCJlbmNyeXB0ZWRcIixcImVuY3J5cHRlZFwiLFwiZW5kZWRcIixcImVuZGVkXCIsXCJlcnJvclwiLFwiZXJyb3JcIixcImdvdHBvaW50ZXJjYXB0dXJlXCIsXCJnb3RQb2ludGVyQ2FwdHVyZVwiLFwibG9hZFwiLFwibG9hZFwiLFwibG9hZGVkZGF0YVwiLFwibG9hZGVkRGF0YVwiLFwibG9hZGVkbWV0YWRhdGFcIixcImxvYWRlZE1ldGFkYXRhXCIsXCJsb2Fkc3RhcnRcIixcImxvYWRTdGFydFwiLFwibG9zdHBvaW50ZXJjYXB0dXJlXCIsXCJsb3N0UG9pbnRlckNhcHR1cmVcIixcInBsYXlpbmdcIixcInBsYXlpbmdcIixcInByb2dyZXNzXCIsXCJwcm9ncmVzc1wiLFwic2Vla2luZ1wiLFwic2Vla2luZ1wiLFwic3RhbGxlZFwiLFwic3RhbGxlZFwiLFwic3VzcGVuZFwiLFwic3VzcGVuZFwiLFwidGltZXVwZGF0ZVwiLFwidGltZVVwZGF0ZVwiLFplLFwidHJhbnNpdGlvbkVuZFwiLFwid2FpdGluZ1wiLFwid2FpdGluZ1wiXTtmdW5jdGlvbiBXdChlLHQpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bis9Mil7dmFyIHI9ZVtuXSxvPWVbbisxXSxpPVwib25cIisob1swXS50b1VwcGVyQ2FzZSgpK28uc2xpY2UoMSkpO2k9e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmksY2FwdHVyZWQ6aStcIkNhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOltyXSxldmVudFByaW9yaXR5OnR9LEh0LnNldChyLHQpLHp0LnNldChyLGkpLE10W29dPWl9fVd0KFwiYmx1ciBibHVyIGNhbmNlbCBjYW5jZWwgY2xpY2sgY2xpY2sgY2xvc2UgY2xvc2UgY29udGV4dG1lbnUgY29udGV4dE1lbnUgY29weSBjb3B5IGN1dCBjdXQgYXV4Y2xpY2sgYXV4Q2xpY2sgZGJsY2xpY2sgZG91YmxlQ2xpY2sgZHJhZ2VuZCBkcmFnRW5kIGRyYWdzdGFydCBkcmFnU3RhcnQgZHJvcCBkcm9wIGZvY3VzIGZvY3VzIGlucHV0IGlucHV0IGludmFsaWQgaW52YWxpZCBrZXlkb3duIGtleURvd24ga2V5cHJlc3Mga2V5UHJlc3Mga2V5dXAga2V5VXAgbW91c2Vkb3duIG1vdXNlRG93biBtb3VzZXVwIG1vdXNlVXAgcGFzdGUgcGFzdGUgcGF1c2UgcGF1c2UgcGxheSBwbGF5IHBvaW50ZXJjYW5jZWwgcG9pbnRlckNhbmNlbCBwb2ludGVyZG93biBwb2ludGVyRG93biBwb2ludGVydXAgcG9pbnRlclVwIHJhdGVjaGFuZ2UgcmF0ZUNoYW5nZSByZXNldCByZXNldCBzZWVrZWQgc2Vla2VkIHN1Ym1pdCBzdWJtaXQgdG91Y2hjYW5jZWwgdG91Y2hDYW5jZWwgdG91Y2hlbmQgdG91Y2hFbmQgdG91Y2hzdGFydCB0b3VjaFN0YXJ0IHZvbHVtZWNoYW5nZSB2b2x1bWVDaGFuZ2VcIi5zcGxpdChcIiBcIiksMCksV3QoXCJkcmFnIGRyYWcgZHJhZ2VudGVyIGRyYWdFbnRlciBkcmFnZXhpdCBkcmFnRXhpdCBkcmFnbGVhdmUgZHJhZ0xlYXZlIGRyYWdvdmVyIGRyYWdPdmVyIG1vdXNlbW92ZSBtb3VzZU1vdmUgbW91c2VvdXQgbW91c2VPdXQgbW91c2VvdmVyIG1vdXNlT3ZlciBwb2ludGVybW92ZSBwb2ludGVyTW92ZSBwb2ludGVyb3V0IHBvaW50ZXJPdXQgcG9pbnRlcm92ZXIgcG9pbnRlck92ZXIgc2Nyb2xsIHNjcm9sbCB0b2dnbGUgdG9nZ2xlIHRvdWNobW92ZSB0b3VjaE1vdmUgd2hlZWwgd2hlZWxcIi5zcGxpdChcIiBcIiksMSksV3QoVnQsMik7Zm9yKHZhciBHdD1cImNoYW5nZSBzZWxlY3Rpb25jaGFuZ2UgdGV4dElucHV0IGNvbXBvc2l0aW9uc3RhcnQgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb251cGRhdGVcIi5zcGxpdChcIiBcIiksJHQ9MDskdDxHdC5sZW5ndGg7JHQrKylIdC5zZXQoR3RbJHRdLDApO3ZhciBLdD1hLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LHF0PWEudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5LFF0PSEwO2Z1bmN0aW9uIFh0KGUsdCl7WXQodCxlLCExKX1mdW5jdGlvbiBZdChlLHQsbil7dmFyIHI9SHQuZ2V0KHQpO3N3aXRjaCh2b2lkIDA9PT1yPzI6cil7Y2FzZSAwOnI9WnQuYmluZChudWxsLHQsMSxlKTticmVhaztjYXNlIDE6cj1KdC5iaW5kKG51bGwsdCwxLGUpO2JyZWFrO2RlZmF1bHQ6cj1lbi5iaW5kKG51bGwsdCwxLGUpfW4/ZS5hZGRFdmVudExpc3RlbmVyKHQsciwhMCk6ZS5hZGRFdmVudExpc3RlbmVyKHQsciwhMSl9ZnVuY3Rpb24gWnQoZSx0LG4scil7Rnx8QigpO3ZhciBvPWVuLGk9RjtGPSEwO3RyeXtSKG8sZSx0LG4scil9ZmluYWxseXsoRj1pKXx8eigpfX1mdW5jdGlvbiBKdChlLHQsbixyKXtxdChLdCxlbi5iaW5kKG51bGwsZSx0LG4scikpfWZ1bmN0aW9uIGVuKGUsdCxuLHIpe2lmKFF0KWlmKDA8UHQubGVuZ3RoJiYtMTxUdC5pbmRleE9mKGUpKWU9anQobnVsbCxlLHQsbixyKSxQdC5wdXNoKGUpO2Vsc2V7dmFyIG89dG4oZSx0LG4scik7aWYobnVsbD09PW8pSXQoZSxyKTtlbHNlIGlmKC0xPFR0LmluZGV4T2YoZSkpZT1qdChvLGUsdCxuLHIpLFB0LnB1c2goZSk7ZWxzZSBpZighZnVuY3Rpb24oZSx0LG4scixvKXtzd2l0Y2godCl7Y2FzZVwiZm9jdXNcIjpyZXR1cm4geHQ9THQoeHQsZSx0LG4scixvKSwhMDtjYXNlXCJkcmFnZW50ZXJcIjpyZXR1cm4gT3Q9THQoT3QsZSx0LG4scixvKSwhMDtjYXNlXCJtb3VzZW92ZXJcIjpyZXR1cm4gX3Q9THQoX3QsZSx0LG4scixvKSwhMDtjYXNlXCJwb2ludGVyb3ZlclwiOnZhciBpPW8ucG9pbnRlcklkO3JldHVybiBDdC5zZXQoaSxMdChDdC5nZXQoaSl8fG51bGwsZSx0LG4scixvKSksITA7Y2FzZVwiZ290cG9pbnRlcmNhcHR1cmVcIjpyZXR1cm4gaT1vLnBvaW50ZXJJZCxrdC5zZXQoaSxMdChrdC5nZXQoaSl8fG51bGwsZSx0LG4scixvKSksITB9cmV0dXJuITF9KG8sZSx0LG4scikpe0l0KGUsciksZT1tdChlLHIsbnVsbCx0KTt0cnl7SChodCxlKX1maW5hbGx5e2d0KGUpfX19fWZ1bmN0aW9uIHRuKGUsdCxuLHIpe2lmKG51bGwhPT0obj1MbihuPWR0KHIpKSkpe3ZhciBvPW50KG4pO2lmKG51bGw9PT1vKW49bnVsbDtlbHNle3ZhciBpPW8udGFnO2lmKDEzPT09aSl7aWYobnVsbCE9PShuPXJ0KG8pKSlyZXR1cm4gbjtuPW51bGx9ZWxzZSBpZigzPT09aSl7aWYoby5zdGF0ZU5vZGUuaHlkcmF0ZSlyZXR1cm4gMz09PW8udGFnP28uc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtuPW51bGx9ZWxzZSBvIT09biYmKG49bnVsbCl9fWU9bXQoZSxyLG4sdCk7dHJ5e0goaHQsZSl9ZmluYWxseXtndChlKX1yZXR1cm4gbnVsbH12YXIgbm49e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LHJuPVtcIldlYmtpdFwiLFwibXNcIixcIk1velwiLFwiT1wiXTtmdW5jdGlvbiBvbihlLHQsbil7cmV0dXJuIG51bGw9PXR8fFwiYm9vbGVhblwiPT10eXBlb2YgdHx8XCJcIj09PXQ/XCJcIjpufHxcIm51bWJlclwiIT10eXBlb2YgdHx8MD09PXR8fG5uLmhhc093blByb3BlcnR5KGUpJiZubltlXT8oXCJcIit0KS50cmltKCk6dCtcInB4XCJ9ZnVuY3Rpb24gYW4oZSx0KXtmb3IodmFyIG4gaW4gZT1lLnN0eWxlLHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9MD09PW4uaW5kZXhPZihcIi0tXCIpLG89b24obix0W25dLHIpO1wiZmxvYXRcIj09PW4mJihuPVwiY3NzRmxvYXRcIikscj9lLnNldFByb3BlcnR5KG4sbyk6ZVtuXT1vfX1PYmplY3Qua2V5cyhubikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cm4uZm9yRWFjaCgoZnVuY3Rpb24odCl7dD10K2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSksbm5bdF09bm5bZV19KSl9KSk7dmFyIGxuPWkoe21lbnVpdGVtOiEwfSx7YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSk7ZnVuY3Rpb24gc24oZSx0KXtpZih0KXtpZihsbltlXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpKXRocm93IEVycm9yKGwoMTM3LGUsXCJcIikpO2lmKG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpe2lmKG51bGwhPXQuY2hpbGRyZW4pdGhyb3cgRXJyb3IobCg2MCkpO2lmKFwib2JqZWN0XCIhPT1yKHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpfHwhKFwiX19odG1sXCJpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihsKDYxKSl9aWYobnVsbCE9dC5zdHlsZSYmXCJvYmplY3RcIiE9PXIodC5zdHlsZSkpdGhyb3cgRXJyb3IobCg2MixcIlwiKSl9fWZ1bmN0aW9uIGNuKGUsdCl7aWYoLTE9PT1lLmluZGV4T2YoXCItXCIpKXJldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0LmlzO3N3aXRjaChlKXtjYXNlXCJhbm5vdGF0aW9uLXhtbFwiOmNhc2VcImNvbG9yLXByb2ZpbGVcIjpjYXNlXCJmb250LWZhY2VcIjpjYXNlXCJmb250LWZhY2Utc3JjXCI6Y2FzZVwiZm9udC1mYWNlLXVyaVwiOmNhc2VcImZvbnQtZmFjZS1mb3JtYXRcIjpjYXNlXCJmb250LWZhY2UtbmFtZVwiOmNhc2VcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgdW49UmU7ZnVuY3Rpb24gZG4oZSx0KXt2YXIgbj10dChlPTk9PT1lLm5vZGVUeXBlfHwxMT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQpO3Q9Q1t0XTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKylidCh0W3JdLGUsbil9ZnVuY3Rpb24gZm4oKXt9ZnVuY3Rpb24gcG4oZSl7aWYodm9pZCAwPT09KGU9ZXx8KFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApKSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5fWNhdGNoKHQpe3JldHVybiBlLmJvZHl9fWZ1bmN0aW9uIGduKGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlvbiBtbihlLHQpe3ZhciBuLHI9Z24oZSk7Zm9yKGU9MDtyOyl7aWYoMz09PXIubm9kZVR5cGUpe2lmKG49ZStyLnRleHRDb250ZW50Lmxlbmd0aCxlPD10JiZuPj10KXJldHVybntub2RlOnIsb2Zmc2V0OnQtZX07ZT1ufWU6e2Zvcig7cjspe2lmKHIubmV4dFNpYmxpbmcpe3I9ci5uZXh0U2libGluZzticmVhayBlfXI9ci5wYXJlbnROb2RlfXI9dm9pZCAwfXI9Z24ocil9fWZ1bmN0aW9uIGhuKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCghZXx8MyE9PWUubm9kZVR5cGUpJiYodCYmMz09PXQubm9kZVR5cGU/aG4oZSx0LnBhcmVudE5vZGUpOlwiY29udGFpbnNcImluIGU/ZS5jb250YWlucyh0KTohIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEhKDE2JmUuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpKSl9ZnVuY3Rpb24gYm4oKXtmb3IodmFyIGU9d2luZG93LHQ9cG4oKTt0IGluc3RhbmNlb2YgZS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgbj1cInN0cmluZ1wiPT10eXBlb2YgdC5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2gocil7bj0hMX1pZighbilicmVhazt0PXBuKChlPXQuY29udGVudFdpbmRvdykuZG9jdW1lbnQpfXJldHVybiB0fWZ1bmN0aW9uIHluKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKFwiaW5wdXRcIj09PXQmJihcInRleHRcIj09PWUudHlwZXx8XCJzZWFyY2hcIj09PWUudHlwZXx8XCJ0ZWxcIj09PWUudHlwZXx8XCJ1cmxcIj09PWUudHlwZXx8XCJwYXNzd29yZFwiPT09ZS50eXBlKXx8XCJ0ZXh0YXJlYVwiPT09dHx8XCJ0cnVlXCI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9dmFyIHZuPVwiJD9cIix3bj1cIiQhXCIsU249bnVsbCxQbj1udWxsO2Z1bmN0aW9uIHhuKGUsdCl7c3dpdGNoKGUpe2Nhc2VcImJ1dHRvblwiOmNhc2VcImlucHV0XCI6Y2FzZVwic2VsZWN0XCI6Y2FzZVwidGV4dGFyZWFcIjpyZXR1cm4hIXQuYXV0b0ZvY3VzfXJldHVybiExfWZ1bmN0aW9uIE9uKGUsdCl7cmV0dXJuXCJ0ZXh0YXJlYVwiPT09ZXx8XCJvcHRpb25cIj09PWV8fFwibm9zY3JpcHRcIj09PWV8fFwic3RyaW5nXCI9PXR5cGVvZiB0LmNoaWxkcmVufHxcIm51bWJlclwiPT10eXBlb2YgdC5jaGlsZHJlbnx8XCJvYmplY3RcIj09PXIodC5kYW5nZXJvdXNseVNldElubmVySFRNTCkmJm51bGwhPT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbH12YXIgX249XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0OnZvaWQgMCxDbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMDtmdW5jdGlvbiBrbihlKXtmb3IoO251bGwhPWU7ZT1lLm5leHRTaWJsaW5nKXt2YXIgdD1lLm5vZGVUeXBlO2lmKDE9PT10fHwzPT09dClicmVha31yZXR1cm4gZX1mdW5jdGlvbiBBbihlKXtlPWUucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgdD0wO2U7KXtpZig4PT09ZS5ub2RlVHlwZSl7dmFyIG49ZS5kYXRhO2lmKFwiJFwiPT09bnx8bj09PXdufHxuPT09dm4pe2lmKDA9PT10KXJldHVybiBlO3QtLX1lbHNlXCIvJFwiPT09biYmdCsrfWU9ZS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIFRuPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLEVuPVwiX19yZWFjdEludGVybmFsSW5zdGFuY2UkXCIrVG4sam49XCJfX3JlYWN0RXZlbnRIYW5kbGVycyRcIitUbixJbj1cIl9fcmVhY3RDb250YWluZXJlJFwiK1RuO2Z1bmN0aW9uIExuKGUpe3ZhciB0PWVbRW5dO2lmKHQpcmV0dXJuIHQ7Zm9yKHZhciBuPWUucGFyZW50Tm9kZTtuOyl7aWYodD1uW0luXXx8bltFbl0pe2lmKG49dC5hbHRlcm5hdGUsbnVsbCE9PXQuY2hpbGR8fG51bGwhPT1uJiZudWxsIT09bi5jaGlsZClmb3IoZT1BbihlKTtudWxsIT09ZTspe2lmKG49ZVtFbl0pcmV0dXJuIG47ZT1BbihlKX1yZXR1cm4gdH1uPShlPW4pLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gRG4oZSl7cmV0dXJuIShlPWVbRW5dfHxlW0luXSl8fDUhPT1lLnRhZyYmNiE9PWUudGFnJiYxMyE9PWUudGFnJiYzIT09ZS50YWc/bnVsbDplfWZ1bmN0aW9uIE5uKGUpe2lmKDU9PT1lLnRhZ3x8Nj09PWUudGFnKXJldHVybiBlLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihsKDMzKSl9ZnVuY3Rpb24gUm4oZSl7cmV0dXJuIGVbam5dfHxudWxsfWZ1bmN0aW9uIEJuKGUpe2Rve2U9ZS5yZXR1cm59d2hpbGUoZSYmNSE9PWUudGFnKTtyZXR1cm4gZXx8bnVsbH1mdW5jdGlvbiBVbihlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO2lmKCFuKXJldHVybiBudWxsO3ZhciBvPW0obik7aWYoIW8pcmV0dXJuIG51bGw7bj1vW3RdO2U6c3dpdGNoKHQpe2Nhc2VcIm9uQ2xpY2tcIjpjYXNlXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2VcIm9uRG91YmxlQ2xpY2tcIjpjYXNlXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2VcIm9uTW91c2VEb3duXCI6Y2FzZVwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZVwib25Nb3VzZU1vdmVcIjpjYXNlXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlXCJvbk1vdXNlVXBcIjpjYXNlXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZVwib25Nb3VzZUVudGVyXCI6KG89IW8uZGlzYWJsZWQpfHwobz0hKFwiYnV0dG9uXCI9PT0oZT1lLnR5cGUpfHxcImlucHV0XCI9PT1lfHxcInNlbGVjdFwiPT09ZXx8XCJ0ZXh0YXJlYVwiPT09ZSkpLGU9IW87YnJlYWsgZTtkZWZhdWx0OmU9ITF9aWYoZSlyZXR1cm4gbnVsbDtpZihuJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXRocm93IEVycm9yKGwoMjMxLHQscihuKSkpO3JldHVybiBufWZ1bmN0aW9uIEZuKGUsdCxuKXsodD1VbihlLG4uZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbdF0pKSYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPWF0KG4uX2Rpc3BhdGNoTGlzdGVuZXJzLHQpLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPWF0KG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBNbihlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXtmb3IodmFyIHQ9ZS5fdGFyZ2V0SW5zdCxuPVtdO3Q7KW4ucHVzaCh0KSx0PUJuKHQpO2Zvcih0PW4ubGVuZ3RoOzA8dC0tOylGbihuW3RdLFwiY2FwdHVyZWRcIixlKTtmb3IodD0wO3Q8bi5sZW5ndGg7dCsrKUZuKG5bdF0sXCJidWJibGVkXCIsZSl9fWZ1bmN0aW9uIHpuKGUsdCxuKXtlJiZuJiZuLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJih0PVVuKGUsbi5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSkmJihuLl9kaXNwYXRjaExpc3RlbmVycz1hdChuLl9kaXNwYXRjaExpc3RlbmVycyx0KSxuLl9kaXNwYXRjaEluc3RhbmNlcz1hdChuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9ZnVuY3Rpb24gSG4oZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZ6bihlLl90YXJnZXRJbnN0LG51bGwsZSl9ZnVuY3Rpb24gVm4oZSl7bHQoZSxNbil9dmFyIFduPW51bGwsR249bnVsbCwkbj1udWxsO2Z1bmN0aW9uIEtuKCl7aWYoJG4pcmV0dXJuICRuO3ZhciBlLHQsbj1HbixyPW4ubGVuZ3RoLG89XCJ2YWx1ZVwiaW4gV24/V24udmFsdWU6V24udGV4dENvbnRlbnQsaT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgYT1yLWU7Zm9yKHQ9MTt0PD1hJiZuW3ItdF09PT1vW2ktdF07dCsrKTtyZXR1cm4gJG49by5zbGljZShlLDE8dD8xLXQ6dm9pZCAwKX1mdW5jdGlvbiBxbigpe3JldHVybiEwfWZ1bmN0aW9uIFFuKCl7cmV0dXJuITF9ZnVuY3Rpb24gWG4oZSx0LG4scil7Zm9yKHZhciBvIGluIHRoaXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1uLGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2UpZS5oYXNPd25Qcm9wZXJ0eShvKSYmKCh0PWVbb10pP3RoaXNbb109dChuKTpcInRhcmdldFwiPT09bz90aGlzLnRhcmdldD1yOnRoaXNbb109bltvXSk7cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPShudWxsIT1uLmRlZmF1bHRQcmV2ZW50ZWQ/bi5kZWZhdWx0UHJldmVudGVkOiExPT09bi5yZXR1cm5WYWx1ZSk/cW46UW4sdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1Rbix0aGlzfWZ1bmN0aW9uIFluKGUsdCxuLHIpe2lmKHRoaXMuZXZlbnRQb29sLmxlbmd0aCl7dmFyIG89dGhpcy5ldmVudFBvb2wucG9wKCk7cmV0dXJuIHRoaXMuY2FsbChvLGUsdCxuLHIpLG99cmV0dXJuIG5ldyB0aGlzKGUsdCxuLHIpfWZ1bmN0aW9uIFpuKGUpe2lmKCEoZSBpbnN0YW5jZW9mIHRoaXMpKXRocm93IEVycm9yKGwoMjc5KSk7ZS5kZXN0cnVjdG9yKCksMTA+dGhpcy5ldmVudFBvb2wubGVuZ3RoJiZ0aGlzLmV2ZW50UG9vbC5wdXNoKGUpfWZ1bmN0aW9uIEpuKGUpe2UuZXZlbnRQb29sPVtdLGUuZ2V0UG9vbGVkPVluLGUucmVsZWFzZT1abn1pKFhuLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6XCJ1bmtub3duXCIhPXR5cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cW4pfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOlwidW5rbm93blwiIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1xbil9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1xbn0saXNQZXJzaXN0ZW50OlFuLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2ZvcihlIGluIHQpdGhpc1tlXT1udWxsO3RoaXMubmF0aXZlRXZlbnQ9dGhpcy5fdGFyZ2V0SW5zdD10aGlzLmRpc3BhdGNoQ29uZmlnPW51bGwsdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1Rbix0aGlzLl9kaXNwYXRjaEluc3RhbmNlcz10aGlzLl9kaXNwYXRjaExpc3RlbmVycz1udWxsfX0pLFhuLkludGVyZmFjZT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGltZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfSxYbi5leHRlbmQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe31mdW5jdGlvbiBuKCl7cmV0dXJuIHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciByPXRoaXM7dC5wcm90b3R5cGU9ci5wcm90b3R5cGU7dmFyIG89bmV3IHQ7cmV0dXJuIGkobyxuLnByb3RvdHlwZSksbi5wcm90b3R5cGU9byxuLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1uLG4uSW50ZXJmYWNlPWkoe30sci5JbnRlcmZhY2UsZSksbi5leHRlbmQ9ci5leHRlbmQsSm4obiksbn0sSm4oWG4pO3ZhciBlcj1Ybi5leHRlbmQoe2RhdGE6bnVsbH0pLHRyPVhuLmV4dGVuZCh7ZGF0YTpudWxsfSksbnI9WzksMTMsMjcsMzJdLHJyPUEmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LG9yPW51bGw7QSYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYob3I9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgaXI9QSYmXCJUZXh0RXZlbnRcImluIHdpbmRvdyYmIW9yLGFyPUEmJighcnJ8fG9yJiY4PG9yJiYxMT49b3IpLGxyPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLHNyPXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkJlZm9yZUlucHV0XCIsY2FwdHVyZWQ6XCJvbkJlZm9yZUlucHV0Q2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6W1wiY29tcG9zaXRpb25lbmRcIixcImtleXByZXNzXCIsXCJ0ZXh0SW5wdXRcIixcInBhc3RlXCJdfSxjb21wb3NpdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6XCJvbkNvbXBvc2l0aW9uRW5kXCIsY2FwdHVyZWQ6XCJvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbXBvc2l0aW9uZW5kIGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpfSxjb21wb3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ29tcG9zaXRpb25TdGFydFwiLGNhcHR1cmVkOlwib25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIil9LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uQ29tcG9zaXRpb25VcGRhdGVcIixjYXB0dXJlZDpcIm9uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJlXCJ9LGRlcGVuZGVuY2llczpcImJsdXIgY29tcG9zaXRpb251cGRhdGUga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIil9fSxjcj0hMTtmdW5jdGlvbiB1cihlLHQpe3N3aXRjaChlKXtjYXNlXCJrZXl1cFwiOnJldHVybi0xIT09bnIuaW5kZXhPZih0LmtleUNvZGUpO2Nhc2VcImtleWRvd25cIjpyZXR1cm4gMjI5IT09dC5rZXlDb2RlO2Nhc2VcImtleXByZXNzXCI6Y2FzZVwibW91c2Vkb3duXCI6Y2FzZVwiYmx1clwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGRyKGUpe3JldHVyblwib2JqZWN0XCI9PT1yKGU9ZS5kZXRhaWwpJiZcImRhdGFcImluIGU/ZS5kYXRhOm51bGx9dmFyIGZyPSExO3ZhciBwcj17ZXZlbnRUeXBlczpzcixleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvO2lmKHJyKWU6e3N3aXRjaChlKXtjYXNlXCJjb21wb3NpdGlvbnN0YXJ0XCI6dmFyIGk9c3IuY29tcG9zaXRpb25TdGFydDticmVhayBlO2Nhc2VcImNvbXBvc2l0aW9uZW5kXCI6aT1zci5jb21wb3NpdGlvbkVuZDticmVhayBlO2Nhc2VcImNvbXBvc2l0aW9udXBkYXRlXCI6aT1zci5jb21wb3NpdGlvblVwZGF0ZTticmVhayBlfWk9dm9pZCAwfWVsc2UgZnI/dXIoZSxuKSYmKGk9c3IuY29tcG9zaXRpb25FbmQpOlwia2V5ZG93blwiPT09ZSYmMjI5PT09bi5rZXlDb2RlJiYoaT1zci5jb21wb3NpdGlvblN0YXJ0KTtyZXR1cm4gaT8oYXImJlwia29cIiE9PW4ubG9jYWxlJiYoZnJ8fGkhPT1zci5jb21wb3NpdGlvblN0YXJ0P2k9PT1zci5jb21wb3NpdGlvbkVuZCYmZnImJihvPUtuKCkpOihHbj1cInZhbHVlXCJpbihXbj1yKT9Xbi52YWx1ZTpXbi50ZXh0Q29udGVudCxmcj0hMCkpLGk9ZXIuZ2V0UG9vbGVkKGksdCxuLHIpLG8/aS5kYXRhPW86bnVsbCE9PShvPWRyKG4pKSYmKGkuZGF0YT1vKSxWbihpKSxvPWkpOm89bnVsbCwoZT1pcj9mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBkcih0KTtjYXNlXCJrZXlwcmVzc1wiOnJldHVybiAzMiE9PXQud2hpY2g/bnVsbDooY3I9ITAsbHIpO2Nhc2VcInRleHRJbnB1dFwiOnJldHVybihlPXQuZGF0YSk9PT1sciYmY3I/bnVsbDplO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShlLG4pOmZ1bmN0aW9uKGUsdCl7aWYoZnIpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09ZXx8IXJyJiZ1cihlLHQpPyhlPUtuKCksJG49R249V249bnVsbCxmcj0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlXCJwYXN0ZVwiOmRlZmF1bHQ6cmV0dXJuIG51bGw7Y2FzZVwia2V5cHJlc3NcIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBhciYmXCJrb1wiIT09dC5sb2NhbGU/bnVsbDp0LmRhdGF9fShlLG4pKT8oKHQ9dHIuZ2V0UG9vbGVkKHNyLmJlZm9yZUlucHV0LHQsbixyKSkuZGF0YT1lLFZuKHQpKTp0PW51bGwsbnVsbD09PW8/dDpudWxsPT09dD9vOltvLHRdfX0sZ3I9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsXCJkYXRldGltZS1sb2NhbFwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gbXIoZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PXQ/ISFncltlLnR5cGVdOlwidGV4dGFyZWFcIj09PXR9dmFyIGhyPXtjaGFuZ2U6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlwib25DaGFuZ2VcIixjYXB0dXJlZDpcIm9uQ2hhbmdlQ2FwdHVyZVwifSxkZXBlbmRlbmNpZXM6XCJibHVyIGNoYW5nZSBjbGljayBmb2N1cyBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKX19O2Z1bmN0aW9uIGJyKGUsdCxuKXtyZXR1cm4oZT1Ybi5nZXRQb29sZWQoaHIuY2hhbmdlLGUsdCxuKSkudHlwZT1cImNoYW5nZVwiLEwobiksVm4oZSksZX12YXIgeXI9bnVsbCx2cj1udWxsO2Z1bmN0aW9uIHdyKGUpe3V0KGUpfWZ1bmN0aW9uIFNyKGUpe2lmKHhlKE5uKGUpKSlyZXR1cm4gZX1mdW5jdGlvbiBQcihlLHQpe2lmKFwiY2hhbmdlXCI9PT1lKXJldHVybiB0fXZhciB4cj0hMTtmdW5jdGlvbiBPcigpe3lyJiYoeXIuZGV0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsX3IpLHZyPXlyPW51bGwpfWZ1bmN0aW9uIF9yKGUpe2lmKFwidmFsdWVcIj09PWUucHJvcGVydHlOYW1lJiZTcih2cikpaWYoZT1icih2cixlLGR0KGUpKSxGKXV0KGUpO2Vsc2V7Rj0hMDt0cnl7Tih3cixlKX1maW5hbGx5e0Y9ITEseigpfX19ZnVuY3Rpb24gQ3IoZSx0LG4pe1wiZm9jdXNcIj09PWU/KE9yKCksdnI9biwoeXI9dCkuYXR0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsX3IpKTpcImJsdXJcIj09PWUmJk9yKCl9ZnVuY3Rpb24ga3IoZSl7aWYoXCJzZWxlY3Rpb25jaGFuZ2VcIj09PWV8fFwia2V5dXBcIj09PWV8fFwia2V5ZG93blwiPT09ZSlyZXR1cm4gU3IodnIpfWZ1bmN0aW9uIEFyKGUsdCl7aWYoXCJjbGlja1wiPT09ZSlyZXR1cm4gU3IodCl9ZnVuY3Rpb24gVHIoZSx0KXtpZihcImlucHV0XCI9PT1lfHxcImNoYW5nZVwiPT09ZSlyZXR1cm4gU3IodCl9QSYmKHhyPWZ0KFwiaW5wdXRcIikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSkpO3ZhciBFcj17ZXZlbnRUeXBlczpocixfaXNJbnB1dEV2ZW50U3VwcG9ydGVkOnhyLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dD9Obih0KTp3aW5kb3csaT1vLm5vZGVOYW1lJiZvLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoXCJzZWxlY3RcIj09PWl8fFwiaW5wdXRcIj09PWkmJlwiZmlsZVwiPT09by50eXBlKXZhciBhPVByO2Vsc2UgaWYobXIobykpaWYoeHIpYT1UcjtlbHNle2E9a3I7dmFyIGw9Q3J9ZWxzZShpPW8ubm9kZU5hbWUpJiZcImlucHV0XCI9PT1pLnRvTG93ZXJDYXNlKCkmJihcImNoZWNrYm94XCI9PT1vLnR5cGV8fFwicmFkaW9cIj09PW8udHlwZSkmJihhPUFyKTtpZihhJiYoYT1hKGUsdCkpKXJldHVybiBicihhLG4scik7bCYmbChlLG8sdCksXCJibHVyXCI9PT1lJiYoZT1vLl93cmFwcGVyU3RhdGUpJiZlLmNvbnRyb2xsZWQmJlwibnVtYmVyXCI9PT1vLnR5cGUmJlRlKG8sXCJudW1iZXJcIixvLnZhbHVlKX19LGpyPVhuLmV4dGVuZCh7dmlldzpudWxsLGRldGFpbDpudWxsfSksSXI9e0FsdDpcImFsdEtleVwiLENvbnRyb2w6XCJjdHJsS2V5XCIsTWV0YTpcIm1ldGFLZXlcIixTaGlmdDpcInNoaWZ0S2V5XCJ9O2Z1bmN0aW9uIExyKGUpe3ZhciB0PXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIHQuZ2V0TW9kaWZpZXJTdGF0ZT90LmdldE1vZGlmaWVyU3RhdGUoZSk6ISEoZT1JcltlXSkmJiEhdFtlXX1mdW5jdGlvbiBEcigpe3JldHVybiBMcn12YXIgTnI9MCxScj0wLEJyPSExLFVyPSExLEZyPWpyLmV4dGVuZCh7c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGllbnRYOm51bGwsY2xpZW50WTpudWxsLHBhZ2VYOm51bGwscGFnZVk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTpEcixidXR0b246bnVsbCxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21FbGVtZW50KX0sbW92ZW1lbnRYOmZ1bmN0aW9uKGUpe2lmKFwibW92ZW1lbnRYXCJpbiBlKXJldHVybiBlLm1vdmVtZW50WDt2YXIgdD1OcjtyZXR1cm4gTnI9ZS5zY3JlZW5YLEJyP1wibW91c2Vtb3ZlXCI9PT1lLnR5cGU/ZS5zY3JlZW5YLXQ6MDooQnI9ITAsMCl9LG1vdmVtZW50WTpmdW5jdGlvbihlKXtpZihcIm1vdmVtZW50WVwiaW4gZSlyZXR1cm4gZS5tb3ZlbWVudFk7dmFyIHQ9UnI7cmV0dXJuIFJyPWUuc2NyZWVuWSxVcj9cIm1vdXNlbW92ZVwiPT09ZS50eXBlP2Uuc2NyZWVuWS10OjA6KFVyPSEwLDApfX0pLE1yPUZyLmV4dGVuZCh7cG9pbnRlcklkOm51bGwsd2lkdGg6bnVsbCxoZWlnaHQ6bnVsbCxwcmVzc3VyZTpudWxsLHRhbmdlbnRpYWxQcmVzc3VyZTpudWxsLHRpbHRYOm51bGwsdGlsdFk6bnVsbCx0d2lzdDpudWxsLHBvaW50ZXJUeXBlOm51bGwsaXNQcmltYXJ5Om51bGx9KSx6cj17bW91c2VFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uTW91c2VFbnRlclwiLGRlcGVuZGVuY2llczpbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdfSxtb3VzZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOlwib25Nb3VzZUxlYXZlXCIsZGVwZW5kZW5jaWVzOltcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl19LHBvaW50ZXJFbnRlcjp7cmVnaXN0cmF0aW9uTmFtZTpcIm9uUG9pbnRlckVudGVyXCIsZGVwZW5kZW5jaWVzOltcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdfSxwb2ludGVyTGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6XCJvblBvaW50ZXJMZWF2ZVwiLGRlcGVuZGVuY2llczpbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXX19LEhyPXtldmVudFR5cGVzOnpyLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1cIm1vdXNlb3ZlclwiPT09ZXx8XCJwb2ludGVyb3ZlclwiPT09ZSxhPVwibW91c2VvdXRcIj09PWV8fFwicG9pbnRlcm91dFwiPT09ZTtpZihpJiYwPT0oMzImbykmJihuLnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpfHwhYSYmIWkpcmV0dXJuIG51bGw7KGk9ci53aW5kb3c9PT1yP3I6KGk9ci5vd25lckRvY3VtZW50KT9pLmRlZmF1bHRWaWV3fHxpLnBhcmVudFdpbmRvdzp3aW5kb3csYSk/KGE9dCxudWxsIT09KHQ9KHQ9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudCk/TG4odCk6bnVsbCkmJih0IT09bnQodCl8fDUhPT10LnRhZyYmNiE9PXQudGFnKSYmKHQ9bnVsbCkpOmE9bnVsbDtpZihhPT09dClyZXR1cm4gbnVsbDtpZihcIm1vdXNlb3V0XCI9PT1lfHxcIm1vdXNlb3ZlclwiPT09ZSl2YXIgbD1GcixzPXpyLm1vdXNlTGVhdmUsYz16ci5tb3VzZUVudGVyLHU9XCJtb3VzZVwiO2Vsc2VcInBvaW50ZXJvdXRcIiE9PWUmJlwicG9pbnRlcm92ZXJcIiE9PWV8fChsPU1yLHM9enIucG9pbnRlckxlYXZlLGM9enIucG9pbnRlckVudGVyLHU9XCJwb2ludGVyXCIpO2lmKGU9bnVsbD09YT9pOk5uKGEpLGk9bnVsbD09dD9pOk5uKHQpLChzPWwuZ2V0UG9vbGVkKHMsYSxuLHIpKS50eXBlPXUrXCJsZWF2ZVwiLHMudGFyZ2V0PWUscy5yZWxhdGVkVGFyZ2V0PWksKG49bC5nZXRQb29sZWQoYyx0LG4scikpLnR5cGU9dStcImVudGVyXCIsbi50YXJnZXQ9aSxuLnJlbGF0ZWRUYXJnZXQ9ZSx1PXQsKHI9YSkmJnUpZTp7Zm9yKGM9dSxhPTAsZT1sPXI7ZTtlPUJuKGUpKWErKztmb3IoZT0wLHQ9Yzt0O3Q9Qm4odCkpZSsrO2Zvcig7MDxhLWU7KWw9Qm4obCksYS0tO2Zvcig7MDxlLWE7KWM9Qm4oYyksZS0tO2Zvcig7YS0tOyl7aWYobD09PWN8fGw9PT1jLmFsdGVybmF0ZSlicmVhayBlO2w9Qm4obCksYz1CbihjKX1sPW51bGx9ZWxzZSBsPW51bGw7Zm9yKGM9bCxsPVtdO3ImJnIhPT1jJiYobnVsbD09PShhPXIuYWx0ZXJuYXRlKXx8YSE9PWMpOylsLnB1c2gocikscj1CbihyKTtmb3Iocj1bXTt1JiZ1IT09YyYmKG51bGw9PT0oYT11LmFsdGVybmF0ZSl8fGEhPT1jKTspci5wdXNoKHUpLHU9Qm4odSk7Zm9yKHU9MDt1PGwubGVuZ3RoO3UrKyl6bihsW3VdLFwiYnViYmxlZFwiLHMpO2Zvcih1PXIubGVuZ3RoOzA8dS0tOyl6bihyW3VdLFwiY2FwdHVyZWRcIixuKTtyZXR1cm4gMD09KDY0Jm8pP1tzXTpbcyxuXX19O3ZhciBWcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYoMCE9PWV8fDEvZT09MS90KXx8ZSE9ZSYmdCE9dH0sV3I9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBHcihlLHQpe2lmKFZyKGUsdCkpcmV0dXJuITA7aWYoXCJvYmplY3RcIiE9PXIoZSl8fG51bGw9PT1lfHxcIm9iamVjdFwiIT09cih0KXx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PW8ubGVuZ3RoKXJldHVybiExO2ZvcihvPTA7bzxuLmxlbmd0aDtvKyspaWYoIVdyLmNhbGwodCxuW29dKXx8IVZyKGVbbltvXV0sdFtuW29dXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyICRyPUEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSxLcj17c2VsZWN0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpcIm9uU2VsZWN0XCIsY2FwdHVyZWQ6XCJvblNlbGVjdENhcHR1cmVcIn0sZGVwZW5kZW5jaWVzOlwiYmx1ciBjb250ZXh0bWVudSBkcmFnZW5kIGZvY3VzIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpfX0scXI9bnVsbCxRcj1udWxsLFhyPW51bGwsWXI9ITE7ZnVuY3Rpb24gWnIoZSx0KXt2YXIgbj10LndpbmRvdz09PXQ/dC5kb2N1bWVudDo5PT09dC5ub2RlVHlwZT90OnQub3duZXJEb2N1bWVudDtyZXR1cm4gWXJ8fG51bGw9PXFyfHxxciE9PXBuKG4pP251bGw6KFwic2VsZWN0aW9uU3RhcnRcImluKG49cXIpJiZ5bihuKT9uPXtzdGFydDpuLnNlbGVjdGlvblN0YXJ0LGVuZDpuLnNlbGVjdGlvbkVuZH06bj17YW5jaG9yTm9kZToobj0obi5vd25lckRvY3VtZW50JiZuLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCkpLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0Om4uYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpuLmZvY3VzTm9kZSxmb2N1c09mZnNldDpuLmZvY3VzT2Zmc2V0fSxYciYmR3IoWHIsbik/bnVsbDooWHI9biwoZT1Ybi5nZXRQb29sZWQoS3Iuc2VsZWN0LFFyLGUsdCkpLnR5cGU9XCJzZWxlY3RcIixlLnRhcmdldD1xcixWbihlKSxlKSl9dmFyIEpyPXtldmVudFR5cGVzOktyLGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scixvLGkpe2lmKCEoaT0hKG89aXx8KHIud2luZG93PT09cj9yLmRvY3VtZW50Ojk9PT1yLm5vZGVUeXBlP3I6ci5vd25lckRvY3VtZW50KSkpKXtlOntvPXR0KG8pLGk9Qy5vblNlbGVjdDtmb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKylpZighby5oYXMoaVthXSkpe289ITE7YnJlYWsgZX1vPSEwfWk9IW99aWYoaSlyZXR1cm4gbnVsbDtzd2l0Y2gobz10P05uKHQpOndpbmRvdyxlKXtjYXNlXCJmb2N1c1wiOihtcihvKXx8XCJ0cnVlXCI9PT1vLmNvbnRlbnRFZGl0YWJsZSkmJihxcj1vLFFyPXQsWHI9bnVsbCk7YnJlYWs7Y2FzZVwiYmx1clwiOlhyPVFyPXFyPW51bGw7YnJlYWs7Y2FzZVwibW91c2Vkb3duXCI6WXI9ITA7YnJlYWs7Y2FzZVwiY29udGV4dG1lbnVcIjpjYXNlXCJtb3VzZXVwXCI6Y2FzZVwiZHJhZ2VuZFwiOnJldHVybiBZcj0hMSxacihuLHIpO2Nhc2VcInNlbGVjdGlvbmNoYW5nZVwiOmlmKCRyKWJyZWFrO2Nhc2VcImtleWRvd25cIjpjYXNlXCJrZXl1cFwiOnJldHVybiBacihuLHIpfXJldHVybiBudWxsfX0sZW89WG4uZXh0ZW5kKHthbmltYXRpb25OYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVtZW50Om51bGx9KSx0bz1Ybi5leHRlbmQoe2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBlP2UuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSxubz1qci5leHRlbmQoe3JlbGF0ZWRUYXJnZXQ6bnVsbH0pO2Z1bmN0aW9uIHJvKGUpe3ZhciB0PWUua2V5Q29kZTtyZXR1cm5cImNoYXJDb2RlXCJpbiBlPzA9PT0oZT1lLmNoYXJDb2RlKSYmMTM9PT10JiYoZT0xMyk6ZT10LDEwPT09ZSYmKGU9MTMpLDMyPD1lfHwxMz09PWU/ZTowfXZhciBvbz17RXNjOlwiRXNjYXBlXCIsU3BhY2ViYXI6XCIgXCIsTGVmdDpcIkFycm93TGVmdFwiLFVwOlwiQXJyb3dVcFwiLFJpZ2h0OlwiQXJyb3dSaWdodFwiLERvd246XCJBcnJvd0Rvd25cIixEZWw6XCJEZWxldGVcIixXaW46XCJPU1wiLE1lbnU6XCJDb250ZXh0TWVudVwiLEFwcHM6XCJDb250ZXh0TWVudVwiLFNjcm9sbDpcIlNjcm9sbExvY2tcIixNb3pQcmludGFibGVLZXk6XCJVbmlkZW50aWZpZWRcIn0saW89ezg6XCJCYWNrc3BhY2VcIiw5OlwiVGFiXCIsMTI6XCJDbGVhclwiLDEzOlwiRW50ZXJcIiwxNjpcIlNoaWZ0XCIsMTc6XCJDb250cm9sXCIsMTg6XCJBbHRcIiwxOTpcIlBhdXNlXCIsMjA6XCJDYXBzTG9ja1wiLDI3OlwiRXNjYXBlXCIsMzI6XCIgXCIsMzM6XCJQYWdlVXBcIiwzNDpcIlBhZ2VEb3duXCIsMzU6XCJFbmRcIiwzNjpcIkhvbWVcIiwzNzpcIkFycm93TGVmdFwiLDM4OlwiQXJyb3dVcFwiLDM5OlwiQXJyb3dSaWdodFwiLDQwOlwiQXJyb3dEb3duXCIsNDU6XCJJbnNlcnRcIiw0NjpcIkRlbGV0ZVwiLDExMjpcIkYxXCIsMTEzOlwiRjJcIiwxMTQ6XCJGM1wiLDExNTpcIkY0XCIsMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsMTE5OlwiRjhcIiwxMjA6XCJGOVwiLDEyMTpcIkYxMFwiLDEyMjpcIkYxMVwiLDEyMzpcIkYxMlwiLDE0NDpcIk51bUxvY2tcIiwxNDU6XCJTY3JvbGxMb2NrXCIsMjI0OlwiTWV0YVwifSxhbz1qci5leHRlbmQoe2tleTpmdW5jdGlvbihlKXtpZihlLmtleSl7dmFyIHQ9b29bZS5rZXldfHxlLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09dClyZXR1cm4gdH1yZXR1cm5cImtleXByZXNzXCI9PT1lLnR5cGU/MTM9PT0oZT1ybyhlKSk/XCJFbnRlclwiOlN0cmluZy5mcm9tQ2hhckNvZGUoZSk6XCJrZXlkb3duXCI9PT1lLnR5cGV8fFwia2V5dXBcIj09PWUudHlwZT9pb1tlLmtleUNvZGVdfHxcIlVuaWRlbnRpZmllZFwiOlwiXCJ9LGxvY2F0aW9uOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLHJlcGVhdDpudWxsLGxvY2FsZTpudWxsLGdldE1vZGlmaWVyU3RhdGU6RHIsY2hhckNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09ZS50eXBlP3JvKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuXCJrZXlkb3duXCI9PT1lLnR5cGV8fFwia2V5dXBcIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuXCJrZXlwcmVzc1wiPT09ZS50eXBlP3JvKGUpOlwia2V5ZG93blwiPT09ZS50eXBlfHxcImtleXVwXCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9fSksbG89RnIuZXh0ZW5kKHtkYXRhVHJhbnNmZXI6bnVsbH0pLHNvPWpyLmV4dGVuZCh7dG91Y2hlczpudWxsLHRhcmdldFRvdWNoZXM6bnVsbCxjaGFuZ2VkVG91Y2hlczpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOkRyfSksY289WG4uZXh0ZW5kKHtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH0pLHVvPUZyLmV4dGVuZCh7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVyblwiZGVsdGFYXCJpbiBlP2UuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGUpe3JldHVyblwiZGVsdGFZXCJpbiBlP2UuZGVsdGFZOlwid2hlZWxEZWx0YVlcImluIGU/LWUud2hlZWxEZWx0YVk6XCJ3aGVlbERlbHRhXCJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOm51bGwsZGVsdGFNb2RlOm51bGx9KSxmbz17ZXZlbnRUeXBlczpNdCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXp0LmdldChlKTtpZighbylyZXR1cm4gbnVsbDtzd2l0Y2goZSl7Y2FzZVwia2V5cHJlc3NcIjppZigwPT09cm8obikpcmV0dXJuIG51bGw7Y2FzZVwia2V5ZG93blwiOmNhc2VcImtleXVwXCI6ZT1hbzticmVhaztjYXNlXCJibHVyXCI6Y2FzZVwiZm9jdXNcIjplPW5vO2JyZWFrO2Nhc2VcImNsaWNrXCI6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2VcImF1eGNsaWNrXCI6Y2FzZVwiZGJsY2xpY2tcIjpjYXNlXCJtb3VzZWRvd25cIjpjYXNlXCJtb3VzZW1vdmVcIjpjYXNlXCJtb3VzZXVwXCI6Y2FzZVwibW91c2VvdXRcIjpjYXNlXCJtb3VzZW92ZXJcIjpjYXNlXCJjb250ZXh0bWVudVwiOmU9RnI7YnJlYWs7Y2FzZVwiZHJhZ1wiOmNhc2VcImRyYWdlbmRcIjpjYXNlXCJkcmFnZW50ZXJcIjpjYXNlXCJkcmFnZXhpdFwiOmNhc2VcImRyYWdsZWF2ZVwiOmNhc2VcImRyYWdvdmVyXCI6Y2FzZVwiZHJhZ3N0YXJ0XCI6Y2FzZVwiZHJvcFwiOmU9bG87YnJlYWs7Y2FzZVwidG91Y2hjYW5jZWxcIjpjYXNlXCJ0b3VjaGVuZFwiOmNhc2VcInRvdWNobW92ZVwiOmNhc2VcInRvdWNoc3RhcnRcIjplPXNvO2JyZWFrO2Nhc2UgUWU6Y2FzZSBYZTpjYXNlIFllOmU9ZW87YnJlYWs7Y2FzZSBaZTplPWNvO2JyZWFrO2Nhc2VcInNjcm9sbFwiOmU9anI7YnJlYWs7Y2FzZVwid2hlZWxcIjplPXVvO2JyZWFrO2Nhc2VcImNvcHlcIjpjYXNlXCJjdXRcIjpjYXNlXCJwYXN0ZVwiOmU9dG87YnJlYWs7Y2FzZVwiZ290cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlXCJwb2ludGVyY2FuY2VsXCI6Y2FzZVwicG9pbnRlcmRvd25cIjpjYXNlXCJwb2ludGVybW92ZVwiOmNhc2VcInBvaW50ZXJvdXRcIjpjYXNlXCJwb2ludGVyb3ZlclwiOmNhc2VcInBvaW50ZXJ1cFwiOmU9TXI7YnJlYWs7ZGVmYXVsdDplPVhufXJldHVybiBWbih0PWUuZ2V0UG9vbGVkKG8sdCxuLHIpKSx0fX07aWYodil0aHJvdyBFcnJvcihsKDEwMSkpO3Y9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoXCJSZXNwb25kZXJFdmVudFBsdWdpbiBTaW1wbGVFdmVudFBsdWdpbiBFbnRlckxlYXZlRXZlbnRQbHVnaW4gQ2hhbmdlRXZlbnRQbHVnaW4gU2VsZWN0RXZlbnRQbHVnaW4gQmVmb3JlSW5wdXRFdmVudFBsdWdpblwiLnNwbGl0KFwiIFwiKSksUygpLG09Um4saD1EbixiPU5uLGsoe1NpbXBsZUV2ZW50UGx1Z2luOmZvLEVudGVyTGVhdmVFdmVudFBsdWdpbjpIcixDaGFuZ2VFdmVudFBsdWdpbjpFcixTZWxlY3RFdmVudFBsdWdpbjpKcixCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOnByfSk7dmFyIHBvPVtdLGdvPS0xO2Z1bmN0aW9uIG1vKGUpezA+Z298fChlLmN1cnJlbnQ9cG9bZ29dLHBvW2dvXT1udWxsLGdvLS0pfWZ1bmN0aW9uIGhvKGUsdCl7Z28rKyxwb1tnb109ZS5jdXJyZW50LGUuY3VycmVudD10fXZhciBibz17fSx5bz17Y3VycmVudDpib30sdm89e2N1cnJlbnQ6ITF9LHdvPWJvO2Z1bmN0aW9uIFNvKGUsdCl7dmFyIG49ZS50eXBlLmNvbnRleHRUeXBlcztpZighbilyZXR1cm4gYm87dmFyIHI9ZS5zdGF0ZU5vZGU7aWYociYmci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PT09dClyZXR1cm4gci5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dDt2YXIgbyxpPXt9O2ZvcihvIGluIG4paVtvXT10W29dO3JldHVybiByJiYoKGU9ZS5zdGF0ZU5vZGUpLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9dCxlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWkpLGl9ZnVuY3Rpb24gUG8oZSl7cmV0dXJuIG51bGwhPShlPWUuY2hpbGRDb250ZXh0VHlwZXMpfWZ1bmN0aW9uIHhvKCl7bW8odm8pLG1vKHlvKX1mdW5jdGlvbiBPbyhlLHQsbil7aWYoeW8uY3VycmVudCE9PWJvKXRocm93IEVycm9yKGwoMTY4KSk7aG8oeW8sdCksaG8odm8sbil9ZnVuY3Rpb24gX28oZSx0LG4pe3ZhciByPWUuc3RhdGVOb2RlO2lmKGU9dC5jaGlsZENvbnRleHRUeXBlcyxcImZ1bmN0aW9uXCIhPXR5cGVvZiByLmdldENoaWxkQ29udGV4dClyZXR1cm4gbjtmb3IodmFyIG8gaW4gcj1yLmdldENoaWxkQ29udGV4dCgpKWlmKCEobyBpbiBlKSl0aHJvdyBFcnJvcihsKDEwOCx5ZSh0KXx8XCJVbmtub3duXCIsbykpO3JldHVybiBpKHt9LG4se30scil9ZnVuY3Rpb24gQ28oZSl7cmV0dXJuIGU9KGU9ZS5zdGF0ZU5vZGUpJiZlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxibyx3bz15by5jdXJyZW50LGhvKHlvLGUpLGhvKHZvLHZvLmN1cnJlbnQpLCEwfWZ1bmN0aW9uIGtvKGUsdCxuKXt2YXIgcj1lLnN0YXRlTm9kZTtpZighcil0aHJvdyBFcnJvcihsKDE2OSkpO24/KGU9X28oZSx0LHdvKSxyLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWUsbW8odm8pLG1vKHlvKSxobyh5byxlKSk6bW8odm8pLGhvKHZvLG4pfXZhciBBbz1hLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSxUbz1hLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssRW89YS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxqbz1hLnVuc3RhYmxlX3JlcXVlc3RQYWludCxJbz1hLnVuc3RhYmxlX25vdyxMbz1hLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLERvPWEudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksTm89YS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxSbz1hLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LEJvPWEudW5zdGFibGVfTG93UHJpb3JpdHksVW89YS51bnN0YWJsZV9JZGxlUHJpb3JpdHksRm89e30sTW89YS51bnN0YWJsZV9zaG91bGRZaWVsZCx6bz12b2lkIDAhPT1qbz9qbzpmdW5jdGlvbigpe30sSG89bnVsbCxWbz1udWxsLFdvPSExLEdvPUlvKCksJG89MWU0PkdvP0lvOmZ1bmN0aW9uKCl7cmV0dXJuIElvKCktR299O2Z1bmN0aW9uIEtvKCl7c3dpdGNoKExvKCkpe2Nhc2UgRG86cmV0dXJuIDk5O2Nhc2UgTm86cmV0dXJuIDk4O2Nhc2UgUm86cmV0dXJuIDk3O2Nhc2UgQm86cmV0dXJuIDk2O2Nhc2UgVW86cmV0dXJuIDk1O2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzMzIpKX19ZnVuY3Rpb24gcW8oZSl7c3dpdGNoKGUpe2Nhc2UgOTk6cmV0dXJuIERvO2Nhc2UgOTg6cmV0dXJuIE5vO2Nhc2UgOTc6cmV0dXJuIFJvO2Nhc2UgOTY6cmV0dXJuIEJvO2Nhc2UgOTU6cmV0dXJuIFVvO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzMzIpKX19ZnVuY3Rpb24gUW8oZSx0KXtyZXR1cm4gZT1xbyhlKSxBbyhlLHQpfWZ1bmN0aW9uIFhvKGUsdCxuKXtyZXR1cm4gZT1xbyhlKSxUbyhlLHQsbil9ZnVuY3Rpb24gWW8oZSl7cmV0dXJuIG51bGw9PT1Ibz8oSG89W2VdLFZvPVRvKERvLEpvKSk6SG8ucHVzaChlKSxGb31mdW5jdGlvbiBabygpe2lmKG51bGwhPT1Wbyl7dmFyIGU9Vm87Vm89bnVsbCxFbyhlKX1KbygpfWZ1bmN0aW9uIEpvKCl7aWYoIVdvJiZudWxsIT09SG8pe1dvPSEwO3ZhciBlPTA7dHJ5e3ZhciB0PUhvO1FvKDk5LChmdW5jdGlvbigpe2Zvcig7ZTx0Lmxlbmd0aDtlKyspe3ZhciBuPXRbZV07ZG97bj1uKCEwKX13aGlsZShudWxsIT09bil9fSkpLEhvPW51bGx9Y2F0Y2gobil7dGhyb3cgbnVsbCE9PUhvJiYoSG89SG8uc2xpY2UoZSsxKSksVG8oRG8sWm8pLG59ZmluYWxseXtXbz0hMX19fWZ1bmN0aW9uIGVpKGUsdCxuKXtyZXR1cm4gMTA3Mzc0MTgyMS0oMSsoKDEwNzM3NDE4MjEtZSt0LzEwKS8obi89MTApfDApKSpufWZ1bmN0aW9uIHRpKGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHZhciBuIGluIHQ9aSh7fSx0KSxlPWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PXRbbl0mJih0W25dPWVbbl0pO3JldHVybiB0fXZhciBuaT17Y3VycmVudDpudWxsfSxyaT1udWxsLG9pPW51bGwsaWk9bnVsbDtmdW5jdGlvbiBhaSgpe2lpPW9pPXJpPW51bGx9ZnVuY3Rpb24gbGkoZSl7dmFyIHQ9bmkuY3VycmVudDttbyhuaSksZS50eXBlLl9jb250ZXh0Ll9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiBzaShlLHQpe2Zvcig7bnVsbCE9PWU7KXt2YXIgbj1lLmFsdGVybmF0ZTtpZihlLmNoaWxkRXhwaXJhdGlvblRpbWU8dCllLmNoaWxkRXhwaXJhdGlvblRpbWU9dCxudWxsIT09biYmbi5jaGlsZEV4cGlyYXRpb25UaW1lPHQmJihuLmNoaWxkRXhwaXJhdGlvblRpbWU9dCk7ZWxzZXtpZighKG51bGwhPT1uJiZuLmNoaWxkRXhwaXJhdGlvblRpbWU8dCkpYnJlYWs7bi5jaGlsZEV4cGlyYXRpb25UaW1lPXR9ZT1lLnJldHVybn19ZnVuY3Rpb24gY2koZSx0KXtyaT1lLGlpPW9pPW51bGwsbnVsbCE9PShlPWUuZGVwZW5kZW5jaWVzKSYmbnVsbCE9PWUuZmlyc3RDb250ZXh0JiYoZS5leHBpcmF0aW9uVGltZT49dCYmKFJhPSEwKSxlLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiB1aShlLHQpe2lmKGlpIT09ZSYmITEhPT10JiYwIT09dClpZihcIm51bWJlclwiPT10eXBlb2YgdCYmMTA3Mzc0MTgyMyE9PXR8fChpaT1lLHQ9MTA3Mzc0MTgyMyksdD17Y29udGV4dDplLG9ic2VydmVkQml0czp0LG5leHQ6bnVsbH0sbnVsbD09PW9pKXtpZihudWxsPT09cmkpdGhyb3cgRXJyb3IobCgzMDgpKTtvaT10LHJpLmRlcGVuZGVuY2llcz17ZXhwaXJhdGlvblRpbWU6MCxmaXJzdENvbnRleHQ6dCxyZXNwb25kZXJzOm51bGx9fWVsc2Ugb2k9b2kubmV4dD10O3JldHVybiBlLl9jdXJyZW50VmFsdWV9dmFyIGRpPSExO2Z1bmN0aW9uIGZpKGUpe2UudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTplLm1lbW9pemVkU3RhdGUsYmFzZVF1ZXVlOm51bGwsc2hhcmVkOntwZW5kaW5nOm51bGx9LGVmZmVjdHM6bnVsbH19ZnVuY3Rpb24gcGkoZSx0KXtlPWUudXBkYXRlUXVldWUsdC51cGRhdGVRdWV1ZT09PWUmJih0LnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6ZS5iYXNlU3RhdGUsYmFzZVF1ZXVlOmUuYmFzZVF1ZXVlLHNoYXJlZDplLnNoYXJlZCxlZmZlY3RzOmUuZWZmZWN0c30pfWZ1bmN0aW9uIGdpKGUsdCl7cmV0dXJuKGU9e2V4cGlyYXRpb25UaW1lOmUsc3VzcGVuc2VDb25maWc6dCx0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9KS5uZXh0PWV9ZnVuY3Rpb24gbWkoZSx0KXtpZihudWxsIT09KGU9ZS51cGRhdGVRdWV1ZSkpe3ZhciBuPShlPWUuc2hhcmVkKS5wZW5kaW5nO251bGw9PT1uP3QubmV4dD10Oih0Lm5leHQ9bi5uZXh0LG4ubmV4dD10KSxlLnBlbmRpbmc9dH19ZnVuY3Rpb24gaGkoZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtudWxsIT09biYmcGkobixlKSxudWxsPT09KG49KGU9ZS51cGRhdGVRdWV1ZSkuYmFzZVF1ZXVlKT8oZS5iYXNlUXVldWU9dC5uZXh0PXQsdC5uZXh0PXQpOih0Lm5leHQ9bi5uZXh0LG4ubmV4dD10KX1mdW5jdGlvbiBiaShlLHQsbixyKXt2YXIgbz1lLnVwZGF0ZVF1ZXVlO2RpPSExO3ZhciBhPW8uYmFzZVF1ZXVlLGw9by5zaGFyZWQucGVuZGluZztpZihudWxsIT09bCl7aWYobnVsbCE9PWEpe3ZhciBzPWEubmV4dDthLm5leHQ9bC5uZXh0LGwubmV4dD1zfWE9bCxvLnNoYXJlZC5wZW5kaW5nPW51bGwsbnVsbCE9PShzPWUuYWx0ZXJuYXRlKSYmKG51bGwhPT0ocz1zLnVwZGF0ZVF1ZXVlKSYmKHMuYmFzZVF1ZXVlPWwpKX1pZihudWxsIT09YSl7cz1hLm5leHQ7dmFyIGM9by5iYXNlU3RhdGUsdT0wLGQ9bnVsbCxmPW51bGwscD1udWxsO2lmKG51bGwhPT1zKWZvcih2YXIgZz1zOzspe2lmKChsPWcuZXhwaXJhdGlvblRpbWUpPHIpe3ZhciBtPXtleHBpcmF0aW9uVGltZTpnLmV4cGlyYXRpb25UaW1lLHN1c3BlbnNlQ29uZmlnOmcuc3VzcGVuc2VDb25maWcsdGFnOmcudGFnLHBheWxvYWQ6Zy5wYXlsb2FkLGNhbGxiYWNrOmcuY2FsbGJhY2ssbmV4dDpudWxsfTtudWxsPT09cD8oZj1wPW0sZD1jKTpwPXAubmV4dD1tLGw+dSYmKHU9bCl9ZWxzZXtudWxsIT09cCYmKHA9cC5uZXh0PXtleHBpcmF0aW9uVGltZToxMDczNzQxODIzLHN1c3BlbnNlQ29uZmlnOmcuc3VzcGVuc2VDb25maWcsdGFnOmcudGFnLHBheWxvYWQ6Zy5wYXlsb2FkLGNhbGxiYWNrOmcuY2FsbGJhY2ssbmV4dDpudWxsfSksbXMobCxnLnN1c3BlbnNlQ29uZmlnKTtlOnt2YXIgaD1lLGI9Zztzd2l0Y2gobD10LG09bixiLnRhZyl7Y2FzZSAxOmlmKFwiZnVuY3Rpb25cIj09dHlwZW9mKGg9Yi5wYXlsb2FkKSl7Yz1oLmNhbGwobSxjLGwpO2JyZWFrIGV9Yz1oO2JyZWFrIGU7Y2FzZSAzOmguZWZmZWN0VGFnPS00MDk3JmguZWZmZWN0VGFnfDY0O2Nhc2UgMDppZihudWxsPT0obD1cImZ1bmN0aW9uXCI9PXR5cGVvZihoPWIucGF5bG9hZCk/aC5jYWxsKG0sYyxsKTpoKSlicmVhayBlO2M9aSh7fSxjLGwpO2JyZWFrIGU7Y2FzZSAyOmRpPSEwfX1udWxsIT09Zy5jYWxsYmFjayYmKGUuZWZmZWN0VGFnfD0zMixudWxsPT09KGw9by5lZmZlY3RzKT9vLmVmZmVjdHM9W2ddOmwucHVzaChnKSl9aWYobnVsbD09PShnPWcubmV4dCl8fGc9PT1zKXtpZihudWxsPT09KGw9by5zaGFyZWQucGVuZGluZykpYnJlYWs7Zz1hLm5leHQ9bC5uZXh0LGwubmV4dD1zLG8uYmFzZVF1ZXVlPWE9bCxvLnNoYXJlZC5wZW5kaW5nPW51bGx9fW51bGw9PT1wP2Q9YzpwLm5leHQ9ZixvLmJhc2VTdGF0ZT1kLG8uYmFzZVF1ZXVlPXAsaHModSksZS5leHBpcmF0aW9uVGltZT11LGUubWVtb2l6ZWRTdGF0ZT1jfX1mdW5jdGlvbiB5aShlLHQsbil7aWYoZT10LmVmZmVjdHMsdC5lZmZlY3RzPW51bGwsbnVsbCE9PWUpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIHI9ZVt0XSxvPXIuY2FsbGJhY2s7aWYobnVsbCE9PW8pe2lmKHIuY2FsbGJhY2s9bnVsbCxyPW8sbz1uLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHIpdGhyb3cgRXJyb3IobCgxOTEscikpO3IuY2FsbChvKX19fXZhciB2aT1aLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLHdpPShuZXcgby5Db21wb25lbnQpLnJlZnM7ZnVuY3Rpb24gU2koZSx0LG4scil7bj1udWxsPT0obj1uKHIsdD1lLm1lbW9pemVkU3RhdGUpKT90Omkoe30sdCxuKSxlLm1lbW9pemVkU3RhdGU9biwwPT09ZS5leHBpcmF0aW9uVGltZSYmKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlPW4pfXZhciBQaT17aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3JldHVybiEhKGU9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyKSYmbnQoZSk9PT1lfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0LG4pe2U9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciByPW5zKCksbz12aS5zdXNwZW5zZTsobz1naShyPXJzKHIsZSxvKSxvKSkucGF5bG9hZD10LG51bGwhPW4mJihvLmNhbGxiYWNrPW4pLG1pKGUsbyksb3MoZSxyKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsRmliZXI7dmFyIHI9bnMoKSxvPXZpLnN1c3BlbnNlOyhvPWdpKHI9cnMocixlLG8pLG8pKS50YWc9MSxvLnBheWxvYWQ9dCxudWxsIT1uJiYoby5jYWxsYmFjaz1uKSxtaShlLG8pLG9zKGUscil9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlLHQpe2U9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO3ZhciBuPW5zKCkscj12aS5zdXNwZW5zZTsocj1naShuPXJzKG4sZSxyKSxyKSkudGFnPTIsbnVsbCE9dCYmKHIuY2FsbGJhY2s9dCksbWkoZSxyKSxvcyhlLG4pfX07ZnVuY3Rpb24geGkoZSx0LG4scixvLGksYSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YoZT1lLnN0YXRlTm9kZSkuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Uuc2hvdWxkQ29tcG9uZW50VXBkYXRlKHIsaSxhKTohdC5wcm90b3R5cGV8fCF0LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudHx8KCFHcihuLHIpfHwhR3IobyxpKSl9ZnVuY3Rpb24gT2koZSx0LG4pe3ZhciBvPSExLGk9Ym8sYT10LmNvbnRleHRUeXBlO3JldHVyblwib2JqZWN0XCI9PT1yKGEpJiZudWxsIT09YT9hPXVpKGEpOihpPVBvKHQpP3dvOnlvLmN1cnJlbnQsYT0obz1udWxsIT0obz10LmNvbnRleHRUeXBlcykpP1NvKGUsaSk6Ym8pLHQ9bmV3IHQobixhKSxlLm1lbW9pemVkU3RhdGU9bnVsbCE9PXQuc3RhdGUmJnZvaWQgMCE9PXQuc3RhdGU/dC5zdGF0ZTpudWxsLHQudXBkYXRlcj1QaSxlLnN0YXRlTm9kZT10LHQuX3JlYWN0SW50ZXJuYWxGaWJlcj1lLG8mJigoZT1lLnN0YXRlTm9kZSkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1pLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9YSksdH1mdW5jdGlvbiBfaShlLHQsbixyKXtlPXQuc3RhdGUsXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZ0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobixyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZ0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4sciksdC5zdGF0ZSE9PWUmJlBpLmVucXVldWVSZXBsYWNlU3RhdGUodCx0LnN0YXRlLG51bGwpfWZ1bmN0aW9uIENpKGUsdCxuLG8pe3ZhciBpPWUuc3RhdGVOb2RlO2kucHJvcHM9bixpLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxpLnJlZnM9d2ksZmkoZSk7dmFyIGE9dC5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT09cihhKSYmbnVsbCE9PWE/aS5jb250ZXh0PXVpKGEpOihhPVBvKHQpP3dvOnlvLmN1cnJlbnQsaS5jb250ZXh0PVNvKGUsYSkpLGJpKGUsbixpLG8pLGkuc3RhdGU9ZS5tZW1vaXplZFN0YXRlLFwiZnVuY3Rpb25cIj09dHlwZW9mKGE9dC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpJiYoU2koZSx0LGEsbiksaS5zdGF0ZT1lLm1lbW9pemVkU3RhdGUpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBpLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50fHwodD1pLnN0YXRlLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50V2lsbE1vdW50JiZpLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGkuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmaS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksdCE9PWkuc3RhdGUmJlBpLmVucXVldWVSZXBsYWNlU3RhdGUoaSxpLnN0YXRlLG51bGwpLGJpKGUsbixpLG8pLGkuc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBpLmNvbXBvbmVudERpZE1vdW50JiYoZS5lZmZlY3RUYWd8PTQpfXZhciBraT1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIEFpKGUsdCxuKXtpZihudWxsIT09KGU9bi5yZWYpJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZcIm9iamVjdFwiIT09cihlKSl7aWYobi5fb3duZXIpe2lmKG49bi5fb3duZXIpe2lmKDEhPT1uLnRhZyl0aHJvdyBFcnJvcihsKDMwOSkpO3ZhciBvPW4uc3RhdGVOb2RlfWlmKCFvKXRocm93IEVycm9yKGwoMTQ3LGUpKTt2YXIgaT1cIlwiK2U7cmV0dXJuIG51bGwhPT10JiZudWxsIT09dC5yZWYmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVmJiZ0LnJlZi5fc3RyaW5nUmVmPT09aT90LnJlZjoodD1mdW5jdGlvbihlKXt2YXIgdD1vLnJlZnM7dD09PXdpJiYodD1vLnJlZnM9e30pLG51bGw9PT1lP2RlbGV0ZSB0W2ldOnRbaV09ZX0sdC5fc3RyaW5nUmVmPWksdCl9aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpdGhyb3cgRXJyb3IobCgyODQpKTtpZighbi5fb3duZXIpdGhyb3cgRXJyb3IobCgyOTAsZSkpfXJldHVybiBlfWZ1bmN0aW9uIFRpKGUsdCl7aWYoXCJ0ZXh0YXJlYVwiIT09ZS50eXBlKXRocm93IEVycm9yKGwoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKHQpLmpvaW4oXCIsIFwiKStcIn1cIjp0LFwiXCIpKX1mdW5jdGlvbiBFaShlKXtmdW5jdGlvbiB0KHQsbil7aWYoZSl7dmFyIHI9dC5sYXN0RWZmZWN0O251bGwhPT1yPyhyLm5leHRFZmZlY3Q9bix0Lmxhc3RFZmZlY3Q9bik6dC5maXJzdEVmZmVjdD10Lmxhc3RFZmZlY3Q9bixuLm5leHRFZmZlY3Q9bnVsbCxuLmVmZmVjdFRhZz04fX1mdW5jdGlvbiBuKG4scil7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDtudWxsIT09cjspdChuLHIpLHI9ci5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0KXtmb3IoZT1uZXcgTWFwO251bGwhPT10OyludWxsIT09dC5rZXk/ZS5zZXQodC5rZXksdCk6ZS5zZXQodC5pbmRleCx0KSx0PXQuc2libGluZztyZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuKGU9UnMoZSx0KSkuaW5kZXg9MCxlLnNpYmxpbmc9bnVsbCxlfWZ1bmN0aW9uIGEodCxuLHIpe3JldHVybiB0LmluZGV4PXIsZT9udWxsIT09KHI9dC5hbHRlcm5hdGUpPyhyPXIuaW5kZXgpPG4/KHQuZWZmZWN0VGFnPTIsbik6cjoodC5lZmZlY3RUYWc9MixuKTpufWZ1bmN0aW9uIHModCl7cmV0dXJuIGUmJm51bGw9PT10LmFsdGVybmF0ZSYmKHQuZWZmZWN0VGFnPTIpLHR9ZnVuY3Rpb24gYyhlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDYhPT10LnRhZz8oKHQ9RnMobixlLm1vZGUscikpLnJldHVybj1lLHQpOigodD1pKHQsbikpLnJldHVybj1lLHQpfWZ1bmN0aW9uIHUoZSx0LG4scil7cmV0dXJuIG51bGwhPT10JiZ0LmVsZW1lbnRUeXBlPT09bi50eXBlPygocj1pKHQsbi5wcm9wcykpLnJlZj1BaShlLHQsbiksci5yZXR1cm49ZSxyKTooKHI9QnMobi50eXBlLG4ua2V5LG4ucHJvcHMsbnVsbCxlLm1vZGUscikpLnJlZj1BaShlLHQsbiksci5yZXR1cm49ZSxyKX1mdW5jdGlvbiBkKGUsdCxuLHIpe3JldHVybiBudWxsPT09dHx8NCE9PXQudGFnfHx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvIT09bi5jb250YWluZXJJbmZvfHx0LnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbiE9PW4uaW1wbGVtZW50YXRpb24/KCh0PU1zKG4sZS5tb2RlLHIpKS5yZXR1cm49ZSx0KTooKHQ9aSh0LG4uY2hpbGRyZW58fFtdKSkucmV0dXJuPWUsdCl9ZnVuY3Rpb24gZihlLHQsbixyLG8pe3JldHVybiBudWxsPT09dHx8NyE9PXQudGFnPygodD1VcyhuLGUubW9kZSxyLG8pKS5yZXR1cm49ZSx0KTooKHQ9aSh0LG4pKS5yZXR1cm49ZSx0KX1mdW5jdGlvbiBwKGUsdCxuKXtpZihcInN0cmluZ1wiPT10eXBlb2YgdHx8XCJudW1iZXJcIj09dHlwZW9mIHQpcmV0dXJuKHQ9RnMoXCJcIit0LGUubW9kZSxuKSkucmV0dXJuPWUsdDtpZihcIm9iamVjdFwiPT09cih0KSYmbnVsbCE9PXQpe3N3aXRjaCh0LiQkdHlwZW9mKXtjYXNlIG5lOnJldHVybihuPUJzKHQudHlwZSx0LmtleSx0LnByb3BzLG51bGwsZS5tb2RlLG4pKS5yZWY9QWkoZSxudWxsLHQpLG4ucmV0dXJuPWUsbjtjYXNlIHJlOnJldHVybih0PU1zKHQsZS5tb2RlLG4pKS5yZXR1cm49ZSx0fWlmKGtpKHQpfHxiZSh0KSlyZXR1cm4odD1Vcyh0LGUubW9kZSxuLG51bGwpKS5yZXR1cm49ZSx0O1RpKGUsdCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZyhlLHQsbixvKXt2YXIgaT1udWxsIT09dD90LmtleTpudWxsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBufHxcIm51bWJlclwiPT10eXBlb2YgbilyZXR1cm4gbnVsbCE9PWk/bnVsbDpjKGUsdCxcIlwiK24sbyk7aWYoXCJvYmplY3RcIj09PXIobikmJm51bGwhPT1uKXtzd2l0Y2gobi4kJHR5cGVvZil7Y2FzZSBuZTpyZXR1cm4gbi5rZXk9PT1pP24udHlwZT09PW9lP2YoZSx0LG4ucHJvcHMuY2hpbGRyZW4sbyxpKTp1KGUsdCxuLG8pOm51bGw7Y2FzZSByZTpyZXR1cm4gbi5rZXk9PT1pP2QoZSx0LG4sbyk6bnVsbH1pZihraShuKXx8YmUobikpcmV0dXJuIG51bGwhPT1pP251bGw6ZihlLHQsbixvLG51bGwpO1RpKGUsbil9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbShlLHQsbixvLGkpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBvfHxcIm51bWJlclwiPT10eXBlb2YgbylyZXR1cm4gYyh0LGU9ZS5nZXQobil8fG51bGwsXCJcIitvLGkpO2lmKFwib2JqZWN0XCI9PT1yKG8pJiZudWxsIT09byl7c3dpdGNoKG8uJCR0eXBlb2Ype2Nhc2UgbmU6cmV0dXJuIGU9ZS5nZXQobnVsbD09PW8ua2V5P246by5rZXkpfHxudWxsLG8udHlwZT09PW9lP2YodCxlLG8ucHJvcHMuY2hpbGRyZW4saSxvLmtleSk6dSh0LGUsbyxpKTtjYXNlIHJlOnJldHVybiBkKHQsZT1lLmdldChudWxsPT09by5rZXk/bjpvLmtleSl8fG51bGwsbyxpKX1pZihraShvKXx8YmUobykpcmV0dXJuIGYodCxlPWUuZ2V0KG4pfHxudWxsLG8saSxudWxsKTtUaSh0LG8pfXJldHVybiBudWxsfWZ1bmN0aW9uIGgocixpLGwscyl7Zm9yKHZhciBjPW51bGwsdT1udWxsLGQ9aSxmPWk9MCxoPW51bGw7bnVsbCE9PWQmJmY8bC5sZW5ndGg7ZisrKXtkLmluZGV4PmY/KGg9ZCxkPW51bGwpOmg9ZC5zaWJsaW5nO3ZhciBiPWcocixkLGxbZl0scyk7aWYobnVsbD09PWIpe251bGw9PT1kJiYoZD1oKTticmVha31lJiZkJiZudWxsPT09Yi5hbHRlcm5hdGUmJnQocixkKSxpPWEoYixpLGYpLG51bGw9PT11P2M9Yjp1LnNpYmxpbmc9Yix1PWIsZD1ofWlmKGY9PT1sLmxlbmd0aClyZXR1cm4gbihyLGQpLGM7aWYobnVsbD09PWQpe2Zvcig7ZjxsLmxlbmd0aDtmKyspbnVsbCE9PShkPXAocixsW2ZdLHMpKSYmKGk9YShkLGksZiksbnVsbD09PXU/Yz1kOnUuc2libGluZz1kLHU9ZCk7cmV0dXJuIGN9Zm9yKGQ9byhyLGQpO2Y8bC5sZW5ndGg7ZisrKW51bGwhPT0oaD1tKGQscixmLGxbZl0scykpJiYoZSYmbnVsbCE9PWguYWx0ZXJuYXRlJiZkLmRlbGV0ZShudWxsPT09aC5rZXk/ZjpoLmtleSksaT1hKGgsaSxmKSxudWxsPT09dT9jPWg6dS5zaWJsaW5nPWgsdT1oKTtyZXR1cm4gZSYmZC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gdChyLGUpfSkpLGN9ZnVuY3Rpb24gYihyLGkscyxjKXt2YXIgdT1iZShzKTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB1KXRocm93IEVycm9yKGwoMTUwKSk7aWYobnVsbD09KHM9dS5jYWxsKHMpKSl0aHJvdyBFcnJvcihsKDE1MSkpO2Zvcih2YXIgZD11PW51bGwsZj1pLGg9aT0wLGI9bnVsbCx5PXMubmV4dCgpO251bGwhPT1mJiYheS5kb25lO2grKyx5PXMubmV4dCgpKXtmLmluZGV4Pmg/KGI9ZixmPW51bGwpOmI9Zi5zaWJsaW5nO3ZhciB2PWcocixmLHkudmFsdWUsYyk7aWYobnVsbD09PXYpe251bGw9PT1mJiYoZj1iKTticmVha31lJiZmJiZudWxsPT09di5hbHRlcm5hdGUmJnQocixmKSxpPWEodixpLGgpLG51bGw9PT1kP3U9djpkLnNpYmxpbmc9dixkPXYsZj1ifWlmKHkuZG9uZSlyZXR1cm4gbihyLGYpLHU7aWYobnVsbD09PWYpe2Zvcig7IXkuZG9uZTtoKysseT1zLm5leHQoKSludWxsIT09KHk9cChyLHkudmFsdWUsYykpJiYoaT1hKHksaSxoKSxudWxsPT09ZD91PXk6ZC5zaWJsaW5nPXksZD15KTtyZXR1cm4gdX1mb3IoZj1vKHIsZik7IXkuZG9uZTtoKysseT1zLm5leHQoKSludWxsIT09KHk9bShmLHIsaCx5LnZhbHVlLGMpKSYmKGUmJm51bGwhPT15LmFsdGVybmF0ZSYmZi5kZWxldGUobnVsbD09PXkua2V5P2g6eS5rZXkpLGk9YSh5LGksaCksbnVsbD09PWQ/dT15OmQuc2libGluZz15LGQ9eSk7cmV0dXJuIGUmJmYuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQocixlKX0pKSx1fXJldHVybiBmdW5jdGlvbihlLG8sYSxjKXt2YXIgdT1cIm9iamVjdFwiPT09cihhKSYmbnVsbCE9PWEmJmEudHlwZT09PW9lJiZudWxsPT09YS5rZXk7dSYmKGE9YS5wcm9wcy5jaGlsZHJlbik7dmFyIGQ9XCJvYmplY3RcIj09PXIoYSkmJm51bGwhPT1hO2lmKGQpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgbmU6ZTp7Zm9yKGQ9YS5rZXksdT1vO251bGwhPT11Oyl7aWYodS5rZXk9PT1kKXtpZig3PT09dS50YWcpe2lmKGEudHlwZT09PW9lKXtuKGUsdS5zaWJsaW5nKSwobz1pKHUsYS5wcm9wcy5jaGlsZHJlbikpLnJldHVybj1lLGU9bzticmVhayBlfX1lbHNlIGlmKHUuZWxlbWVudFR5cGU9PT1hLnR5cGUpe24oZSx1LnNpYmxpbmcpLChvPWkodSxhLnByb3BzKSkucmVmPUFpKGUsdSxhKSxvLnJldHVybj1lLGU9bzticmVhayBlfW4oZSx1KTticmVha310KGUsdSksdT11LnNpYmxpbmd9YS50eXBlPT09b2U/KChvPVVzKGEucHJvcHMuY2hpbGRyZW4sZS5tb2RlLGMsYS5rZXkpKS5yZXR1cm49ZSxlPW8pOigoYz1CcyhhLnR5cGUsYS5rZXksYS5wcm9wcyxudWxsLGUubW9kZSxjKSkucmVmPUFpKGUsbyxhKSxjLnJldHVybj1lLGU9Yyl9cmV0dXJuIHMoZSk7Y2FzZSByZTplOntmb3IodT1hLmtleTtudWxsIT09bzspe2lmKG8ua2V5PT09dSl7aWYoND09PW8udGFnJiZvLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09YS5jb250YWluZXJJbmZvJiZvLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWEuaW1wbGVtZW50YXRpb24pe24oZSxvLnNpYmxpbmcpLChvPWkobyxhLmNoaWxkcmVufHxbXSkpLnJldHVybj1lLGU9bzticmVhayBlfW4oZSxvKTticmVha310KGUsbyksbz1vLnNpYmxpbmd9KG89TXMoYSxlLm1vZGUsYykpLnJldHVybj1lLGU9b31yZXR1cm4gcyhlKX1pZihcInN0cmluZ1wiPT10eXBlb2YgYXx8XCJudW1iZXJcIj09dHlwZW9mIGEpcmV0dXJuIGE9XCJcIithLG51bGwhPT1vJiY2PT09by50YWc/KG4oZSxvLnNpYmxpbmcpLChvPWkobyxhKSkucmV0dXJuPWUsZT1vKToobihlLG8pLChvPUZzKGEsZS5tb2RlLGMpKS5yZXR1cm49ZSxlPW8pLHMoZSk7aWYoa2koYSkpcmV0dXJuIGgoZSxvLGEsYyk7aWYoYmUoYSkpcmV0dXJuIGIoZSxvLGEsYyk7aWYoZCYmVGkoZSxhKSx2b2lkIDA9PT1hJiYhdSlzd2l0Y2goZS50YWcpe2Nhc2UgMTpjYXNlIDA6dGhyb3cgZT1lLnR5cGUsRXJyb3IobCgxNTIsZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxcIkNvbXBvbmVudFwiKSl9cmV0dXJuIG4oZSxvKX19dmFyIGppPUVpKCEwKSxJaT1FaSghMSksTGk9e30sRGk9e2N1cnJlbnQ6TGl9LE5pPXtjdXJyZW50OkxpfSxSaT17Y3VycmVudDpMaX07ZnVuY3Rpb24gQmkoZSl7aWYoZT09PUxpKXRocm93IEVycm9yKGwoMTc0KSk7cmV0dXJuIGV9ZnVuY3Rpb24gVWkoZSx0KXtzd2l0Y2goaG8oUmksdCksaG8oTmksZSksaG8oRGksTGkpLGU9dC5ub2RlVHlwZSl7Y2FzZSA5OmNhc2UgMTE6dD0odD10LmRvY3VtZW50RWxlbWVudCk/dC5uYW1lc3BhY2VVUkk6RmUobnVsbCxcIlwiKTticmVhaztkZWZhdWx0OnQ9RmUodD0oZT04PT09ZT90LnBhcmVudE5vZGU6dCkubmFtZXNwYWNlVVJJfHxudWxsLGU9ZS50YWdOYW1lKX1tbyhEaSksaG8oRGksdCl9ZnVuY3Rpb24gRmkoKXttbyhEaSksbW8oTmkpLG1vKFJpKX1mdW5jdGlvbiBNaShlKXtCaShSaS5jdXJyZW50KTt2YXIgdD1CaShEaS5jdXJyZW50KSxuPUZlKHQsZS50eXBlKTt0IT09biYmKGhvKE5pLGUpLGhvKERpLG4pKX1mdW5jdGlvbiB6aShlKXtOaS5jdXJyZW50PT09ZSYmKG1vKERpKSxtbyhOaSkpfXZhciBIaT17Y3VycmVudDowfTtmdW5jdGlvbiBWaShlKXtmb3IodmFyIHQ9ZTtudWxsIT09dDspe2lmKDEzPT09dC50YWcpe3ZhciBuPXQubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09biYmKG51bGw9PT0obj1uLmRlaHlkcmF0ZWQpfHxuLmRhdGE9PT12bnx8bi5kYXRhPT09d24pKXJldHVybiB0fWVsc2UgaWYoMTk9PT10LnRhZyYmdm9pZCAwIT09dC5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKXtpZigwIT0oNjQmdC5lZmZlY3RUYWcpKXJldHVybiB0fWVsc2UgaWYobnVsbCE9PXQuY2hpbGQpe3QuY2hpbGQucmV0dXJuPXQsdD10LmNoaWxkO2NvbnRpbnVlfWlmKHQ9PT1lKWJyZWFrO2Zvcig7bnVsbD09PXQuc2libGluZzspe2lmKG51bGw9PT10LnJldHVybnx8dC5yZXR1cm49PT1lKXJldHVybiBudWxsO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ31yZXR1cm4gbnVsbH1mdW5jdGlvbiBXaShlLHQpe3JldHVybntyZXNwb25kZXI6ZSxwcm9wczp0fX12YXIgR2k9Wi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLCRpPVouUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsS2k9MCxxaT1udWxsLFFpPW51bGwsWGk9bnVsbCxZaT0hMTtmdW5jdGlvbiBaaSgpe3Rocm93IEVycm9yKGwoMzIxKSl9ZnVuY3Rpb24gSmkoZSx0KXtpZihudWxsPT09dClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoJiZuPGUubGVuZ3RoO24rKylpZighVnIoZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBlYShlLHQsbixyLG8saSl7aWYoS2k9aSxxaT10LHQubWVtb2l6ZWRTdGF0ZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbCx0LmV4cGlyYXRpb25UaW1lPTAsR2kuY3VycmVudD1udWxsPT09ZXx8bnVsbD09PWUubWVtb2l6ZWRTdGF0ZT94YTpPYSxlPW4ocixvKSx0LmV4cGlyYXRpb25UaW1lPT09S2kpe2k9MDtkb3tpZih0LmV4cGlyYXRpb25UaW1lPTAsISgyNT5pKSl0aHJvdyBFcnJvcihsKDMwMSkpO2krPTEsWGk9UWk9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGwsR2kuY3VycmVudD1fYSxlPW4ocixvKX13aGlsZSh0LmV4cGlyYXRpb25UaW1lPT09S2kpfWlmKEdpLmN1cnJlbnQ9UGEsdD1udWxsIT09UWkmJm51bGwhPT1RaS5uZXh0LEtpPTAsWGk9UWk9cWk9bnVsbCxZaT0hMSx0KXRocm93IEVycm9yKGwoMzAwKSk7cmV0dXJuIGV9ZnVuY3Rpb24gdGEoKXt2YXIgZT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtyZXR1cm4gbnVsbD09PVhpP3FpLm1lbW9pemVkU3RhdGU9WGk9ZTpYaT1YaS5uZXh0PWUsWGl9ZnVuY3Rpb24gbmEoKXtpZihudWxsPT09UWkpe3ZhciBlPXFpLmFsdGVybmF0ZTtlPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgZT1RaS5uZXh0O3ZhciB0PW51bGw9PT1YaT9xaS5tZW1vaXplZFN0YXRlOlhpLm5leHQ7aWYobnVsbCE9PXQpWGk9dCxRaT1lO2Vsc2V7aWYobnVsbD09PWUpdGhyb3cgRXJyb3IobCgzMTApKTtlPXttZW1vaXplZFN0YXRlOihRaT1lKS5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpRaS5iYXNlU3RhdGUsYmFzZVF1ZXVlOlFpLmJhc2VRdWV1ZSxxdWV1ZTpRaS5xdWV1ZSxuZXh0Om51bGx9LG51bGw9PT1YaT9xaS5tZW1vaXplZFN0YXRlPVhpPWU6WGk9WGkubmV4dD1lfXJldHVybiBYaX1mdW5jdGlvbiByYShlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChlKTp0fWZ1bmN0aW9uIG9hKGUpe3ZhciB0PW5hKCksbj10LnF1ZXVlO2lmKG51bGw9PT1uKXRocm93IEVycm9yKGwoMzExKSk7bi5sYXN0UmVuZGVyZWRSZWR1Y2VyPWU7dmFyIHI9UWksbz1yLmJhc2VRdWV1ZSxpPW4ucGVuZGluZztpZihudWxsIT09aSl7aWYobnVsbCE9PW8pe3ZhciBhPW8ubmV4dDtvLm5leHQ9aS5uZXh0LGkubmV4dD1hfXIuYmFzZVF1ZXVlPW89aSxuLnBlbmRpbmc9bnVsbH1pZihudWxsIT09byl7bz1vLm5leHQscj1yLmJhc2VTdGF0ZTt2YXIgcz1hPWk9bnVsbCxjPW87ZG97dmFyIHU9Yy5leHBpcmF0aW9uVGltZTtpZih1PEtpKXt2YXIgZD17ZXhwaXJhdGlvblRpbWU6Yy5leHBpcmF0aW9uVGltZSxzdXNwZW5zZUNvbmZpZzpjLnN1c3BlbnNlQ29uZmlnLGFjdGlvbjpjLmFjdGlvbixlYWdlclJlZHVjZXI6Yy5lYWdlclJlZHVjZXIsZWFnZXJTdGF0ZTpjLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09cz8oYT1zPWQsaT1yKTpzPXMubmV4dD1kLHU+cWkuZXhwaXJhdGlvblRpbWUmJihxaS5leHBpcmF0aW9uVGltZT11LGhzKHUpKX1lbHNlIG51bGwhPT1zJiYocz1zLm5leHQ9e2V4cGlyYXRpb25UaW1lOjEwNzM3NDE4MjMsc3VzcGVuc2VDb25maWc6Yy5zdXNwZW5zZUNvbmZpZyxhY3Rpb246Yy5hY3Rpb24sZWFnZXJSZWR1Y2VyOmMuZWFnZXJSZWR1Y2VyLGVhZ2VyU3RhdGU6Yy5lYWdlclN0YXRlLG5leHQ6bnVsbH0pLG1zKHUsYy5zdXNwZW5zZUNvbmZpZykscj1jLmVhZ2VyUmVkdWNlcj09PWU/Yy5lYWdlclN0YXRlOmUocixjLmFjdGlvbik7Yz1jLm5leHR9d2hpbGUobnVsbCE9PWMmJmMhPT1vKTtudWxsPT09cz9pPXI6cy5uZXh0PWEsVnIocix0Lm1lbW9pemVkU3RhdGUpfHwoUmE9ITApLHQubWVtb2l6ZWRTdGF0ZT1yLHQuYmFzZVN0YXRlPWksdC5iYXNlUXVldWU9cyxuLmxhc3RSZW5kZXJlZFN0YXRlPXJ9cmV0dXJuW3QubWVtb2l6ZWRTdGF0ZSxuLmRpc3BhdGNoXX1mdW5jdGlvbiBpYShlKXt2YXIgdD1uYSgpLG49dC5xdWV1ZTtpZihudWxsPT09bil0aHJvdyBFcnJvcihsKDMxMSkpO24ubGFzdFJlbmRlcmVkUmVkdWNlcj1lO3ZhciByPW4uZGlzcGF0Y2gsbz1uLnBlbmRpbmcsaT10Lm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PW8pe24ucGVuZGluZz1udWxsO3ZhciBhPW89by5uZXh0O2Rve2k9ZShpLGEuYWN0aW9uKSxhPWEubmV4dH13aGlsZShhIT09byk7VnIoaSx0Lm1lbW9pemVkU3RhdGUpfHwoUmE9ITApLHQubWVtb2l6ZWRTdGF0ZT1pLG51bGw9PT10LmJhc2VRdWV1ZSYmKHQuYmFzZVN0YXRlPWkpLG4ubGFzdFJlbmRlcmVkU3RhdGU9aX1yZXR1cm5baSxyXX1mdW5jdGlvbiBhYShlKXt2YXIgdD10YSgpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJihlPWUoKSksdC5tZW1vaXplZFN0YXRlPXQuYmFzZVN0YXRlPWUsZT0oZT10LnF1ZXVlPXtwZW5kaW5nOm51bGwsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOnJhLGxhc3RSZW5kZXJlZFN0YXRlOmV9KS5kaXNwYXRjaD1TYS5iaW5kKG51bGwscWksZSksW3QubWVtb2l6ZWRTdGF0ZSxlXX1mdW5jdGlvbiBsYShlLHQsbixyKXtyZXR1cm4gZT17dGFnOmUsY3JlYXRlOnQsZGVzdHJveTpuLGRlcHM6cixuZXh0Om51bGx9LG51bGw9PT0odD1xaS51cGRhdGVRdWV1ZSk/KHQ9e2xhc3RFZmZlY3Q6bnVsbH0scWkudXBkYXRlUXVldWU9dCx0Lmxhc3RFZmZlY3Q9ZS5uZXh0PWUpOm51bGw9PT0obj10Lmxhc3RFZmZlY3QpP3QubGFzdEVmZmVjdD1lLm5leHQ9ZToocj1uLm5leHQsbi5uZXh0PWUsZS5uZXh0PXIsdC5sYXN0RWZmZWN0PWUpLGV9ZnVuY3Rpb24gc2EoKXtyZXR1cm4gbmEoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGNhKGUsdCxuLHIpe3ZhciBvPXRhKCk7cWkuZWZmZWN0VGFnfD1lLG8ubWVtb2l6ZWRTdGF0ZT1sYSgxfHQsbix2b2lkIDAsdm9pZCAwPT09cj9udWxsOnIpfWZ1bmN0aW9uIHVhKGUsdCxuLHIpe3ZhciBvPW5hKCk7cj12b2lkIDA9PT1yP251bGw6cjt2YXIgaT12b2lkIDA7aWYobnVsbCE9PVFpKXt2YXIgYT1RaS5tZW1vaXplZFN0YXRlO2lmKGk9YS5kZXN0cm95LG51bGwhPT1yJiZKaShyLGEuZGVwcykpcmV0dXJuIHZvaWQgbGEodCxuLGkscil9cWkuZWZmZWN0VGFnfD1lLG8ubWVtb2l6ZWRTdGF0ZT1sYSgxfHQsbixpLHIpfWZ1bmN0aW9uIGRhKGUsdCl7cmV0dXJuIGNhKDUxNiw0LGUsdCl9ZnVuY3Rpb24gZmEoZSx0KXtyZXR1cm4gdWEoNTE2LDQsZSx0KX1mdW5jdGlvbiBwYShlLHQpe3JldHVybiB1YSg0LDIsZSx0KX1mdW5jdGlvbiBnYShlLHQpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/KGU9ZSgpLHQoZSksZnVuY3Rpb24oKXt0KG51bGwpfSk6bnVsbCE9dD8oZT1lKCksdC5jdXJyZW50PWUsZnVuY3Rpb24oKXt0LmN1cnJlbnQ9bnVsbH0pOnZvaWQgMH1mdW5jdGlvbiBtYShlLHQsbil7cmV0dXJuIG49bnVsbCE9bj9uLmNvbmNhdChbZV0pOm51bGwsdWEoNCwyLGdhLmJpbmQobnVsbCx0LGUpLG4pfWZ1bmN0aW9uIGhhKCl7fWZ1bmN0aW9uIGJhKGUsdCl7cmV0dXJuIHRhKCkubWVtb2l6ZWRTdGF0ZT1bZSx2b2lkIDA9PT10P251bGw6dF0sZX1mdW5jdGlvbiB5YShlLHQpe3ZhciBuPW5hKCk7dD12b2lkIDA9PT10P251bGw6dDt2YXIgcj1uLm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGwhPT1yJiZudWxsIT09dCYmSmkodCxyWzFdKT9yWzBdOihuLm1lbW9pemVkU3RhdGU9W2UsdF0sZSl9ZnVuY3Rpb24gdmEoZSx0KXt2YXIgbj1uYSgpO3Q9dm9pZCAwPT09dD9udWxsOnQ7dmFyIHI9bi5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsIT09ciYmbnVsbCE9PXQmJkppKHQsclsxXSk/clswXTooZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGUpfWZ1bmN0aW9uIHdhKGUsdCxuKXt2YXIgcj1LbygpO1FvKDk4PnI/OTg6ciwoZnVuY3Rpb24oKXtlKCEwKX0pKSxRbyg5NzxyPzk3OnIsKGZ1bmN0aW9uKCl7dmFyIHI9JGkuc3VzcGVuc2U7JGkuc3VzcGVuc2U9dm9pZCAwPT09dD9udWxsOnQ7dHJ5e2UoITEpLG4oKX1maW5hbGx5eyRpLnN1c3BlbnNlPXJ9fSkpfWZ1bmN0aW9uIFNhKGUsdCxuKXt2YXIgcj1ucygpLG89dmkuc3VzcGVuc2U7bz17ZXhwaXJhdGlvblRpbWU6cj1ycyhyLGUsbyksc3VzcGVuc2VDb25maWc6byxhY3Rpb246bixlYWdlclJlZHVjZXI6bnVsbCxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTt2YXIgaT10LnBlbmRpbmc7aWYobnVsbD09PWk/by5uZXh0PW86KG8ubmV4dD1pLm5leHQsaS5uZXh0PW8pLHQucGVuZGluZz1vLGk9ZS5hbHRlcm5hdGUsZT09PXFpfHxudWxsIT09aSYmaT09PXFpKVlpPSEwLG8uZXhwaXJhdGlvblRpbWU9S2kscWkuZXhwaXJhdGlvblRpbWU9S2k7ZWxzZXtpZigwPT09ZS5leHBpcmF0aW9uVGltZSYmKG51bGw9PT1pfHwwPT09aS5leHBpcmF0aW9uVGltZSkmJm51bGwhPT0oaT10Lmxhc3RSZW5kZXJlZFJlZHVjZXIpKXRyeXt2YXIgYT10Lmxhc3RSZW5kZXJlZFN0YXRlLGw9aShhLG4pO2lmKG8uZWFnZXJSZWR1Y2VyPWksby5lYWdlclN0YXRlPWwsVnIobCxhKSlyZXR1cm59Y2F0Y2gocyl7fW9zKGUscil9fXZhciBQYT17cmVhZENvbnRleHQ6dWksdXNlQ2FsbGJhY2s6WmksdXNlQ29udGV4dDpaaSx1c2VFZmZlY3Q6WmksdXNlSW1wZXJhdGl2ZUhhbmRsZTpaaSx1c2VMYXlvdXRFZmZlY3Q6WmksdXNlTWVtbzpaaSx1c2VSZWR1Y2VyOlppLHVzZVJlZjpaaSx1c2VTdGF0ZTpaaSx1c2VEZWJ1Z1ZhbHVlOlppLHVzZVJlc3BvbmRlcjpaaSx1c2VEZWZlcnJlZFZhbHVlOlppLHVzZVRyYW5zaXRpb246Wml9LHhhPXtyZWFkQ29udGV4dDp1aSx1c2VDYWxsYmFjazpiYSx1c2VDb250ZXh0OnVpLHVzZUVmZmVjdDpkYSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj1udWxsIT1uP24uY29uY2F0KFtlXSk6bnVsbCxjYSg0LDIsZ2EuYmluZChudWxsLHQsZSksbil9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBjYSg0LDIsZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPXRhKCk7cmV0dXJuIHQ9dm9pZCAwPT09dD9udWxsOnQsZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGV9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRhKCk7cmV0dXJuIHQ9dm9pZCAwIT09bj9uKHQpOnQsci5tZW1vaXplZFN0YXRlPXIuYmFzZVN0YXRlPXQsZT0oZT1yLnF1ZXVlPXtwZW5kaW5nOm51bGwsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmUsbGFzdFJlbmRlcmVkU3RhdGU6dH0pLmRpc3BhdGNoPVNhLmJpbmQobnVsbCxxaSxlKSxbci5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9e2N1cnJlbnQ6ZX0sdGEoKS5tZW1vaXplZFN0YXRlPWV9LHVzZVN0YXRlOmFhLHVzZURlYnVnVmFsdWU6aGEsdXNlUmVzcG9uZGVyOldpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hYShlKSxyPW5bMF0sbz1uWzFdO3JldHVybiBkYSgoZnVuY3Rpb24oKXt2YXIgbj0kaS5zdXNwZW5zZTskaS5zdXNwZW5zZT12b2lkIDA9PT10P251bGw6dDt0cnl7byhlKX1maW5hbGx5eyRpLnN1c3BlbnNlPW59fSksW2UsdF0pLHJ9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9YWEoITEpLG49dFswXTtyZXR1cm4gdD10WzFdLFtiYSh3YS5iaW5kKG51bGwsdCxlKSxbdCxlXSksbl19fSxPYT17cmVhZENvbnRleHQ6dWksdXNlQ2FsbGJhY2s6eWEsdXNlQ29udGV4dDp1aSx1c2VFZmZlY3Q6ZmEsdXNlSW1wZXJhdGl2ZUhhbmRsZTptYSx1c2VMYXlvdXRFZmZlY3Q6cGEsdXNlTWVtbzp2YSx1c2VSZWR1Y2VyOm9hLHVzZVJlZjpzYSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBvYShyYSl9LHVzZURlYnVnVmFsdWU6aGEsdXNlUmVzcG9uZGVyOldpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vYShyYSkscj1uWzBdLG89blsxXTtyZXR1cm4gZmEoKGZ1bmN0aW9uKCl7dmFyIG49JGkuc3VzcGVuc2U7JGkuc3VzcGVuc2U9dm9pZCAwPT09dD9udWxsOnQ7dHJ5e28oZSl9ZmluYWxseXskaS5zdXNwZW5zZT1ufX0pLFtlLHRdKSxyfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PW9hKHJhKSxuPXRbMF07cmV0dXJuIHQ9dFsxXSxbeWEod2EuYmluZChudWxsLHQsZSksW3QsZV0pLG5dfX0sX2E9e3JlYWRDb250ZXh0OnVpLHVzZUNhbGxiYWNrOnlhLHVzZUNvbnRleHQ6dWksdXNlRWZmZWN0OmZhLHVzZUltcGVyYXRpdmVIYW5kbGU6bWEsdXNlTGF5b3V0RWZmZWN0OnBhLHVzZU1lbW86dmEsdXNlUmVkdWNlcjppYSx1c2VSZWY6c2EsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaWEocmEpfSx1c2VEZWJ1Z1ZhbHVlOmhhLHVzZVJlc3BvbmRlcjpXaSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aWEocmEpLHI9blswXSxvPW5bMV07cmV0dXJuIGZhKChmdW5jdGlvbigpe3ZhciBuPSRpLnN1c3BlbnNlOyRpLnN1c3BlbnNlPXZvaWQgMD09PXQ/bnVsbDp0O3RyeXtvKGUpfWZpbmFsbHl7JGkuc3VzcGVuc2U9bn19KSxbZSx0XSkscn0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1pYShyYSksbj10WzBdO3JldHVybiB0PXRbMV0sW3lhKHdhLmJpbmQobnVsbCx0LGUpLFt0LGVdKSxuXX19LENhPW51bGwsa2E9bnVsbCxBYT0hMTtmdW5jdGlvbiBUYShlLHQpe3ZhciBuPURzKDUsbnVsbCxudWxsLDApO24uZWxlbWVudFR5cGU9XCJERUxFVEVEXCIsbi50eXBlPVwiREVMRVRFRFwiLG4uc3RhdGVOb2RlPXQsbi5yZXR1cm49ZSxuLmVmZmVjdFRhZz04LG51bGwhPT1lLmxhc3RFZmZlY3Q/KGUubGFzdEVmZmVjdC5uZXh0RWZmZWN0PW4sZS5sYXN0RWZmZWN0PW4pOmUuZmlyc3RFZmZlY3Q9ZS5sYXN0RWZmZWN0PW59ZnVuY3Rpb24gRWEoZSx0KXtzd2l0Y2goZS50YWcpe2Nhc2UgNTp2YXIgbj1lLnR5cGU7cmV0dXJuIG51bGwhPT0odD0xIT09dC5ub2RlVHlwZXx8bi50b0xvd2VyQ2FzZSgpIT09dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6dCkmJihlLnN0YXRlTm9kZT10LCEwKTtjYXNlIDY6cmV0dXJuIG51bGwhPT0odD1cIlwiPT09ZS5wZW5kaW5nUHJvcHN8fDMhPT10Lm5vZGVUeXBlP251bGw6dCkmJihlLnN0YXRlTm9kZT10LCEwKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBqYShlKXtpZihBYSl7dmFyIHQ9a2E7aWYodCl7dmFyIG49dDtpZighRWEoZSx0KSl7aWYoISh0PWtuKG4ubmV4dFNpYmxpbmcpKXx8IUVhKGUsdCkpcmV0dXJuIGUuZWZmZWN0VGFnPS0xMDI1JmUuZWZmZWN0VGFnfDIsQWE9ITEsdm9pZChDYT1lKTtUYShDYSxuKX1DYT1lLGthPWtuKHQuZmlyc3RDaGlsZCl9ZWxzZSBlLmVmZmVjdFRhZz0tMTAyNSZlLmVmZmVjdFRhZ3wyLEFhPSExLENhPWV9fWZ1bmN0aW9uIElhKGUpe2ZvcihlPWUucmV0dXJuO251bGwhPT1lJiY1IT09ZS50YWcmJjMhPT1lLnRhZyYmMTMhPT1lLnRhZzspZT1lLnJldHVybjtDYT1lfWZ1bmN0aW9uIExhKGUpe2lmKGUhPT1DYSlyZXR1cm4hMTtpZighQWEpcmV0dXJuIElhKGUpLEFhPSEwLCExO3ZhciB0PWUudHlwZTtpZig1IT09ZS50YWd8fFwiaGVhZFwiIT09dCYmXCJib2R5XCIhPT10JiYhT24odCxlLm1lbW9pemVkUHJvcHMpKWZvcih0PWthO3Q7KVRhKGUsdCksdD1rbih0Lm5leHRTaWJsaW5nKTtpZihJYShlKSwxMz09PWUudGFnKXtpZighKGU9bnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGwoMzE3KSk7ZTp7Zm9yKGU9ZS5uZXh0U2libGluZyx0PTA7ZTspe2lmKDg9PT1lLm5vZGVUeXBlKXt2YXIgbj1lLmRhdGE7aWYoXCIvJFwiPT09bil7aWYoMD09PXQpe2thPWtuKGUubmV4dFNpYmxpbmcpO2JyZWFrIGV9dC0tfWVsc2VcIiRcIiE9PW4mJm4hPT13biYmbiE9PXZufHx0Kyt9ZT1lLm5leHRTaWJsaW5nfWthPW51bGx9fWVsc2Uga2E9Q2E/a24oZS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gRGEoKXtrYT1DYT1udWxsLEFhPSExfXZhciBOYT1aLlJlYWN0Q3VycmVudE93bmVyLFJhPSExO2Z1bmN0aW9uIEJhKGUsdCxuLHIpe3QuY2hpbGQ9bnVsbD09PWU/SWkodCxudWxsLG4scik6amkodCxlLmNoaWxkLG4scil9ZnVuY3Rpb24gVWEoZSx0LG4scixvKXtuPW4ucmVuZGVyO3ZhciBpPXQucmVmO3JldHVybiBjaSh0LG8pLHI9ZWEoZSx0LG4scixpLG8pLG51bGw9PT1lfHxSYT8odC5lZmZlY3RUYWd8PTEsQmEoZSx0LHIsbyksdC5jaGlsZCk6KHQudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmVmZmVjdFRhZyY9LTUxNyxlLmV4cGlyYXRpb25UaW1lPD1vJiYoZS5leHBpcmF0aW9uVGltZT0wKSxlbChlLHQsbykpfWZ1bmN0aW9uIEZhKGUsdCxuLHIsbyxpKXtpZihudWxsPT09ZSl7dmFyIGE9bi50eXBlO3JldHVyblwiZnVuY3Rpb25cIiE9dHlwZW9mIGF8fE5zKGEpfHx2b2lkIDAhPT1hLmRlZmF1bHRQcm9wc3x8bnVsbCE9PW4uY29tcGFyZXx8dm9pZCAwIT09bi5kZWZhdWx0UHJvcHM/KChlPUJzKG4udHlwZSxudWxsLHIsbnVsbCx0Lm1vZGUsaSkpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSk6KHQudGFnPTE1LHQudHlwZT1hLE1hKGUsdCxhLHIsbyxpKSl9cmV0dXJuIGE9ZS5jaGlsZCxvPGkmJihvPWEubWVtb2l6ZWRQcm9wcywobj1udWxsIT09KG49bi5jb21wYXJlKT9uOkdyKShvLHIpJiZlLnJlZj09PXQucmVmKT9lbChlLHQsaSk6KHQuZWZmZWN0VGFnfD0xLChlPVJzKGEscikpLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSl9ZnVuY3Rpb24gTWEoZSx0LG4scixvLGkpe3JldHVybiBudWxsIT09ZSYmR3IoZS5tZW1vaXplZFByb3BzLHIpJiZlLnJlZj09PXQucmVmJiYoUmE9ITEsbzxpKT8odC5leHBpcmF0aW9uVGltZT1lLmV4cGlyYXRpb25UaW1lLGVsKGUsdCxpKSk6SGEoZSx0LG4scixpKX1mdW5jdGlvbiB6YShlLHQpe3ZhciBuPXQucmVmOyhudWxsPT09ZSYmbnVsbCE9PW58fG51bGwhPT1lJiZlLnJlZiE9PW4pJiYodC5lZmZlY3RUYWd8PTEyOCl9ZnVuY3Rpb24gSGEoZSx0LG4scixvKXt2YXIgaT1QbyhuKT93bzp5by5jdXJyZW50O3JldHVybiBpPVNvKHQsaSksY2kodCxvKSxuPWVhKGUsdCxuLHIsaSxvKSxudWxsPT09ZXx8UmE/KHQuZWZmZWN0VGFnfD0xLEJhKGUsdCxuLG8pLHQuY2hpbGQpOih0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdC5lZmZlY3RUYWcmPS01MTcsZS5leHBpcmF0aW9uVGltZTw9byYmKGUuZXhwaXJhdGlvblRpbWU9MCksZWwoZSx0LG8pKX1mdW5jdGlvbiBWYShlLHQsbixvLGkpe2lmKFBvKG4pKXt2YXIgYT0hMDtDbyh0KX1lbHNlIGE9ITE7aWYoY2kodCxpKSxudWxsPT09dC5zdGF0ZU5vZGUpbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLE9pKHQsbixvKSxDaSh0LG4sbyxpKSxvPSEwO2Vsc2UgaWYobnVsbD09PWUpe3ZhciBsPXQuc3RhdGVOb2RlLHM9dC5tZW1vaXplZFByb3BzO2wucHJvcHM9czt2YXIgYz1sLmNvbnRleHQsdT1uLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT1yKHUpJiZudWxsIT09dT91PXVpKHUpOnU9U28odCx1PVBvKG4pP3dvOnlvLmN1cnJlbnQpO3ZhciBkPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLGY9XCJmdW5jdGlvblwiPT10eXBlb2YgZHx8XCJmdW5jdGlvblwiPT10eXBlb2YgbC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtmfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChzIT09b3x8YyE9PXUpJiZfaSh0LGwsbyx1KSxkaT0hMTt2YXIgcD10Lm1lbW9pemVkU3RhdGU7bC5zdGF0ZT1wLGJpKHQsbyxsLGkpLGM9dC5tZW1vaXplZFN0YXRlLHMhPT1vfHxwIT09Y3x8dm8uY3VycmVudHx8ZGk/KFwiZnVuY3Rpb25cIj09dHlwZW9mIGQmJihTaSh0LG4sZCxvKSxjPXQubWVtb2l6ZWRTdGF0ZSksKHM9ZGl8fHhpKHQsbixzLG8scCxjLHUpKT8oZnx8XCJmdW5jdGlvblwiIT10eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLmNvbXBvbmVudFdpbGxNb3VudHx8KFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuY29tcG9uZW50V2lsbE1vdW50JiZsLmNvbXBvbmVudFdpbGxNb3VudCgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmbC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuY29tcG9uZW50RGlkTW91bnQmJih0LmVmZmVjdFRhZ3w9NCkpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiBsLmNvbXBvbmVudERpZE1vdW50JiYodC5lZmZlY3RUYWd8PTQpLHQubWVtb2l6ZWRQcm9wcz1vLHQubWVtb2l6ZWRTdGF0ZT1jKSxsLnByb3BzPW8sbC5zdGF0ZT1jLGwuY29udGV4dD11LG89cyk6KFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuY29tcG9uZW50RGlkTW91bnQmJih0LmVmZmVjdFRhZ3w9NCksbz0hMSl9ZWxzZSBsPXQuc3RhdGVOb2RlLHBpKGUsdCkscz10Lm1lbW9pemVkUHJvcHMsbC5wcm9wcz10LnR5cGU9PT10LmVsZW1lbnRUeXBlP3M6dGkodC50eXBlLHMpLGM9bC5jb250ZXh0LFwib2JqZWN0XCI9PT1yKHU9bi5jb250ZXh0VHlwZSkmJm51bGwhPT11P3U9dWkodSk6dT1Tbyh0LHU9UG8obik/d286eW8uY3VycmVudCksKGY9XCJmdW5jdGlvblwiPT10eXBlb2YoZD1uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChzIT09b3x8YyE9PXUpJiZfaSh0LGwsbyx1KSxkaT0hMSxjPXQubWVtb2l6ZWRTdGF0ZSxsLnN0YXRlPWMsYmkodCxvLGwsaSkscD10Lm1lbW9pemVkU3RhdGUscyE9PW98fGMhPT1wfHx2by5jdXJyZW50fHxkaT8oXCJmdW5jdGlvblwiPT10eXBlb2YgZCYmKFNpKHQsbixkLG8pLHA9dC5tZW1vaXplZFN0YXRlKSwoZD1kaXx8eGkodCxuLHMsbyxjLHAsdSkpPyhmfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLmNvbXBvbmVudFdpbGxVcGRhdGV8fChcImZ1bmN0aW9uXCI9PXR5cGVvZiBsLmNvbXBvbmVudFdpbGxVcGRhdGUmJmwuY29tcG9uZW50V2lsbFVwZGF0ZShvLHAsdSksXCJmdW5jdGlvblwiPT10eXBlb2YgbC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmbC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShvLHAsdSkpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuY29tcG9uZW50RGlkVXBkYXRlJiYodC5lZmZlY3RUYWd8PTQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGwuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJih0LmVmZmVjdFRhZ3w9MjU2KSk6KFwiZnVuY3Rpb25cIiE9dHlwZW9mIGwuY29tcG9uZW50RGlkVXBkYXRlfHxzPT09ZS5tZW1vaXplZFByb3BzJiZjPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTQpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGwuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fHM9PT1lLm1lbW9pemVkUHJvcHMmJmM9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmVmZmVjdFRhZ3w9MjU2KSx0Lm1lbW9pemVkUHJvcHM9byx0Lm1lbW9pemVkU3RhdGU9cCksbC5wcm9wcz1vLGwuc3RhdGU9cCxsLmNvbnRleHQ9dSxvPWQpOihcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLmNvbXBvbmVudERpZFVwZGF0ZXx8cz09PWUubWVtb2l6ZWRQcm9wcyYmYz09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZWZmZWN0VGFnfD00KSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBsLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxzPT09ZS5tZW1vaXplZFByb3BzJiZjPT09ZS5tZW1vaXplZFN0YXRlfHwodC5lZmZlY3RUYWd8PTI1Niksbz0hMSk7cmV0dXJuIFdhKGUsdCxuLG8sYSxpKX1mdW5jdGlvbiBXYShlLHQsbixyLG8saSl7emEoZSx0KTt2YXIgYT0wIT0oNjQmdC5lZmZlY3RUYWcpO2lmKCFyJiYhYSlyZXR1cm4gbyYma28odCxuLCExKSxlbChlLHQsaSk7cj10LnN0YXRlTm9kZSxOYS5jdXJyZW50PXQ7dmFyIGw9YSYmXCJmdW5jdGlvblwiIT10eXBlb2Ygbi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I/bnVsbDpyLnJlbmRlcigpO3JldHVybiB0LmVmZmVjdFRhZ3w9MSxudWxsIT09ZSYmYT8odC5jaGlsZD1qaSh0LGUuY2hpbGQsbnVsbCxpKSx0LmNoaWxkPWppKHQsbnVsbCxsLGkpKTpCYShlLHQsbCxpKSx0Lm1lbW9pemVkU3RhdGU9ci5zdGF0ZSxvJiZrbyh0LG4sITApLHQuY2hpbGR9ZnVuY3Rpb24gR2EoZSl7dmFyIHQ9ZS5zdGF0ZU5vZGU7dC5wZW5kaW5nQ29udGV4dD9PbygwLHQucGVuZGluZ0NvbnRleHQsdC5wZW5kaW5nQ29udGV4dCE9PXQuY29udGV4dCk6dC5jb250ZXh0JiZPbygwLHQuY29udGV4dCwhMSksVWkoZSx0LmNvbnRhaW5lckluZm8pfXZhciAkYSxLYSxxYSxRYT17ZGVoeWRyYXRlZDpudWxsLHJldHJ5VGltZTowfTtmdW5jdGlvbiBYYShlLHQsbil7dmFyIHIsbz10Lm1vZGUsaT10LnBlbmRpbmdQcm9wcyxhPUhpLmN1cnJlbnQsbD0hMTtpZigocj0wIT0oNjQmdC5lZmZlY3RUYWcpKXx8KHI9MCE9KDImYSkmJihudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSkpLHI/KGw9ITAsdC5lZmZlY3RUYWcmPS02NSk6bnVsbCE9PWUmJm51bGw9PT1lLm1lbW9pemVkU3RhdGV8fHZvaWQgMD09PWkuZmFsbGJhY2t8fCEwPT09aS51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFja3x8KGF8PTEpLGhvKEhpLDEmYSksbnVsbD09PWUpe2lmKHZvaWQgMCE9PWkuZmFsbGJhY2smJmphKHQpLGwpe2lmKGw9aS5mYWxsYmFjaywoaT1VcyhudWxsLG8sMCxudWxsKSkucmV0dXJuPXQsMD09KDImdC5tb2RlKSlmb3IoZT1udWxsIT09dC5tZW1vaXplZFN0YXRlP3QuY2hpbGQuY2hpbGQ6dC5jaGlsZCxpLmNoaWxkPWU7bnVsbCE9PWU7KWUucmV0dXJuPWksZT1lLnNpYmxpbmc7cmV0dXJuKG49VXMobCxvLG4sbnVsbCkpLnJldHVybj10LGkuc2libGluZz1uLHQubWVtb2l6ZWRTdGF0ZT1RYSx0LmNoaWxkPWksbn1yZXR1cm4gbz1pLmNoaWxkcmVuLHQubWVtb2l6ZWRTdGF0ZT1udWxsLHQuY2hpbGQ9SWkodCxudWxsLG8sbil9aWYobnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSl7aWYobz0oZT1lLmNoaWxkKS5zaWJsaW5nLGwpe2lmKGk9aS5mYWxsYmFjaywobj1ScyhlLGUucGVuZGluZ1Byb3BzKSkucmV0dXJuPXQsMD09KDImdC5tb2RlKSYmKGw9bnVsbCE9PXQubWVtb2l6ZWRTdGF0ZT90LmNoaWxkLmNoaWxkOnQuY2hpbGQpIT09ZS5jaGlsZClmb3Iobi5jaGlsZD1sO251bGwhPT1sOylsLnJldHVybj1uLGw9bC5zaWJsaW5nO3JldHVybihvPVJzKG8saSkpLnJldHVybj10LG4uc2libGluZz1vLG4uY2hpbGRFeHBpcmF0aW9uVGltZT0wLHQubWVtb2l6ZWRTdGF0ZT1RYSx0LmNoaWxkPW4sb31yZXR1cm4gbj1qaSh0LGUuY2hpbGQsaS5jaGlsZHJlbixuKSx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LmNoaWxkPW59aWYoZT1lLmNoaWxkLGwpe2lmKGw9aS5mYWxsYmFjaywoaT1VcyhudWxsLG8sMCxudWxsKSkucmV0dXJuPXQsaS5jaGlsZD1lLG51bGwhPT1lJiYoZS5yZXR1cm49aSksMD09KDImdC5tb2RlKSlmb3IoZT1udWxsIT09dC5tZW1vaXplZFN0YXRlP3QuY2hpbGQuY2hpbGQ6dC5jaGlsZCxpLmNoaWxkPWU7bnVsbCE9PWU7KWUucmV0dXJuPWksZT1lLnNpYmxpbmc7cmV0dXJuKG49VXMobCxvLG4sbnVsbCkpLnJldHVybj10LGkuc2libGluZz1uLG4uZWZmZWN0VGFnfD0yLGkuY2hpbGRFeHBpcmF0aW9uVGltZT0wLHQubWVtb2l6ZWRTdGF0ZT1RYSx0LmNoaWxkPWksbn1yZXR1cm4gdC5tZW1vaXplZFN0YXRlPW51bGwsdC5jaGlsZD1qaSh0LGUsaS5jaGlsZHJlbixuKX1mdW5jdGlvbiBZYShlLHQpe2UuZXhwaXJhdGlvblRpbWU8dCYmKGUuZXhwaXJhdGlvblRpbWU9dCk7dmFyIG49ZS5hbHRlcm5hdGU7bnVsbCE9PW4mJm4uZXhwaXJhdGlvblRpbWU8dCYmKG4uZXhwaXJhdGlvblRpbWU9dCksc2koZS5yZXR1cm4sdCl9ZnVuY3Rpb24gWmEoZSx0LG4scixvLGkpe3ZhciBhPWUubWVtb2l6ZWRTdGF0ZTtudWxsPT09YT9lLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOnQscmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpyLHRhaWw6bix0YWlsRXhwaXJhdGlvbjowLHRhaWxNb2RlOm8sbGFzdEVmZmVjdDppfTooYS5pc0JhY2t3YXJkcz10LGEucmVuZGVyaW5nPW51bGwsYS5yZW5kZXJpbmdTdGFydFRpbWU9MCxhLmxhc3Q9cixhLnRhaWw9bixhLnRhaWxFeHBpcmF0aW9uPTAsYS50YWlsTW9kZT1vLGEubGFzdEVmZmVjdD1pKX1mdW5jdGlvbiBKYShlLHQsbil7dmFyIHI9dC5wZW5kaW5nUHJvcHMsbz1yLnJldmVhbE9yZGVyLGk9ci50YWlsO2lmKEJhKGUsdCxyLmNoaWxkcmVuLG4pLDAhPSgyJihyPUhpLmN1cnJlbnQpKSlyPTEmcnwyLHQuZWZmZWN0VGFnfD02NDtlbHNle2lmKG51bGwhPT1lJiYwIT0oNjQmZS5lZmZlY3RUYWcpKWU6Zm9yKGU9dC5jaGlsZDtudWxsIT09ZTspe2lmKDEzPT09ZS50YWcpbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmWWEoZSxuKTtlbHNlIGlmKDE5PT09ZS50YWcpWWEoZSxuKTtlbHNlIGlmKG51bGwhPT1lLmNoaWxkKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX1pZihlPT09dClicmVhayBlO2Zvcig7bnVsbD09PWUuc2libGluZzspe2lmKG51bGw9PT1lLnJldHVybnx8ZS5yZXR1cm49PT10KWJyZWFrIGU7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfXImPTF9aWYoaG8oSGksciksMD09KDImdC5tb2RlKSl0Lm1lbW9pemVkU3RhdGU9bnVsbDtlbHNlIHN3aXRjaChvKXtjYXNlXCJmb3J3YXJkc1wiOmZvcihuPXQuY2hpbGQsbz1udWxsO251bGwhPT1uOyludWxsIT09KGU9bi5hbHRlcm5hdGUpJiZudWxsPT09VmkoZSkmJihvPW4pLG49bi5zaWJsaW5nO251bGw9PT0obj1vKT8obz10LmNoaWxkLHQuY2hpbGQ9bnVsbCk6KG89bi5zaWJsaW5nLG4uc2libGluZz1udWxsKSxaYSh0LCExLG8sbixpLHQubGFzdEVmZmVjdCk7YnJlYWs7Y2FzZVwiYmFja3dhcmRzXCI6Zm9yKG49bnVsbCxvPXQuY2hpbGQsdC5jaGlsZD1udWxsO251bGwhPT1vOyl7aWYobnVsbCE9PShlPW8uYWx0ZXJuYXRlKSYmbnVsbD09PVZpKGUpKXt0LmNoaWxkPW87YnJlYWt9ZT1vLnNpYmxpbmcsby5zaWJsaW5nPW4sbj1vLG89ZX1aYSh0LCEwLG4sbnVsbCxpLHQubGFzdEVmZmVjdCk7YnJlYWs7Y2FzZVwidG9nZXRoZXJcIjpaYSh0LCExLG51bGwsbnVsbCx2b2lkIDAsdC5sYXN0RWZmZWN0KTticmVhaztkZWZhdWx0OnQubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uIGVsKGUsdCxuKXtudWxsIT09ZSYmKHQuZGVwZW5kZW5jaWVzPWUuZGVwZW5kZW5jaWVzKTt2YXIgcj10LmV4cGlyYXRpb25UaW1lO2lmKDAhPT1yJiZocyhyKSx0LmNoaWxkRXhwaXJhdGlvblRpbWU8bilyZXR1cm4gbnVsbDtpZihudWxsIT09ZSYmdC5jaGlsZCE9PWUuY2hpbGQpdGhyb3cgRXJyb3IobCgxNTMpKTtpZihudWxsIT09dC5jaGlsZCl7Zm9yKG49UnMoZT10LmNoaWxkLGUucGVuZGluZ1Byb3BzKSx0LmNoaWxkPW4sbi5yZXR1cm49dDtudWxsIT09ZS5zaWJsaW5nOyllPWUuc2libGluZywobj1uLnNpYmxpbmc9UnMoZSxlLnBlbmRpbmdQcm9wcykpLnJldHVybj10O24uc2libGluZz1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uIHRsKGUsdCl7c3dpdGNoKGUudGFpbE1vZGUpe2Nhc2VcImhpZGRlblwiOnQ9ZS50YWlsO2Zvcih2YXIgbj1udWxsO251bGwhPT10OyludWxsIT09dC5hbHRlcm5hdGUmJihuPXQpLHQ9dC5zaWJsaW5nO251bGw9PT1uP2UudGFpbD1udWxsOm4uc2libGluZz1udWxsO2JyZWFrO2Nhc2VcImNvbGxhcHNlZFwiOm49ZS50YWlsO2Zvcih2YXIgcj1udWxsO251bGwhPT1uOyludWxsIT09bi5hbHRlcm5hdGUmJihyPW4pLG49bi5zaWJsaW5nO251bGw9PT1yP3R8fG51bGw9PT1lLnRhaWw/ZS50YWlsPW51bGw6ZS50YWlsLnNpYmxpbmc9bnVsbDpyLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24gbmwoZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzO3N3aXRjaCh0LnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIG51bGw7Y2FzZSAxOmNhc2UgMTc6cmV0dXJuIFBvKHQudHlwZSkmJnhvKCksbnVsbDtjYXNlIDM6cmV0dXJuIEZpKCksbW8odm8pLG1vKHlvKSwobj10LnN0YXRlTm9kZSkucGVuZGluZ0NvbnRleHQmJihuLmNvbnRleHQ9bi5wZW5kaW5nQ29udGV4dCxuLnBlbmRpbmdDb250ZXh0PW51bGwpLG51bGwhPT1lJiZudWxsIT09ZS5jaGlsZHx8IUxhKHQpfHwodC5lZmZlY3RUYWd8PTQpLG51bGw7Y2FzZSA1OnppKHQpLG49QmkoUmkuY3VycmVudCk7dmFyIG89dC50eXBlO2lmKG51bGwhPT1lJiZudWxsIT10LnN0YXRlTm9kZSlLYShlLHQsbyxyLG4pLGUucmVmIT09dC5yZWYmJih0LmVmZmVjdFRhZ3w9MTI4KTtlbHNle2lmKCFyKXtpZihudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobCgxNjYpKTtyZXR1cm4gbnVsbH1pZihlPUJpKERpLmN1cnJlbnQpLExhKHQpKXtyPXQuc3RhdGVOb2RlLG89dC50eXBlO3ZhciBhPXQubWVtb2l6ZWRQcm9wcztzd2l0Y2gocltFbl09dCxyW2puXT1hLG8pe2Nhc2VcImlmcmFtZVwiOmNhc2VcIm9iamVjdFwiOmNhc2VcImVtYmVkXCI6WHQoXCJsb2FkXCIscik7YnJlYWs7Y2FzZVwidmlkZW9cIjpjYXNlXCJhdWRpb1wiOmZvcihlPTA7ZTxKZS5sZW5ndGg7ZSsrKVh0KEplW2VdLHIpO2JyZWFrO2Nhc2VcInNvdXJjZVwiOlh0KFwiZXJyb3JcIixyKTticmVhaztjYXNlXCJpbWdcIjpjYXNlXCJpbWFnZVwiOmNhc2VcImxpbmtcIjpYdChcImVycm9yXCIsciksWHQoXCJsb2FkXCIscik7YnJlYWs7Y2FzZVwiZm9ybVwiOlh0KFwicmVzZXRcIixyKSxYdChcInN1Ym1pdFwiLHIpO2JyZWFrO2Nhc2VcImRldGFpbHNcIjpYdChcInRvZ2dsZVwiLHIpO2JyZWFrO2Nhc2VcImlucHV0XCI6X2UocixhKSxYdChcImludmFsaWRcIixyKSxkbihuLFwib25DaGFuZ2VcIik7YnJlYWs7Y2FzZVwic2VsZWN0XCI6ci5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWEubXVsdGlwbGV9LFh0KFwiaW52YWxpZFwiLHIpLGRuKG4sXCJvbkNoYW5nZVwiKTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOkxlKHIsYSksWHQoXCJpbnZhbGlkXCIsciksZG4obixcIm9uQ2hhbmdlXCIpfWZvcih2YXIgcyBpbiBzbihvLGEpLGU9bnVsbCxhKWlmKGEuaGFzT3duUHJvcGVydHkocykpe3ZhciBjPWFbc107XCJjaGlsZHJlblwiPT09cz9cInN0cmluZ1wiPT10eXBlb2YgYz9yLnRleHRDb250ZW50IT09YyYmKGU9W1wiY2hpbGRyZW5cIixjXSk6XCJudW1iZXJcIj09dHlwZW9mIGMmJnIudGV4dENvbnRlbnQhPT1cIlwiK2MmJihlPVtcImNoaWxkcmVuXCIsXCJcIitjXSk6Xy5oYXNPd25Qcm9wZXJ0eShzKSYmbnVsbCE9YyYmZG4obixzKX1zd2l0Y2gobyl7Y2FzZVwiaW5wdXRcIjpQZShyKSxBZShyLGEsITApO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6UGUociksTmUocik7YnJlYWs7Y2FzZVwic2VsZWN0XCI6Y2FzZVwib3B0aW9uXCI6YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLm9uQ2xpY2smJihyLm9uY2xpY2s9Zm4pfW49ZSx0LnVwZGF0ZVF1ZXVlPW4sbnVsbCE9PW4mJih0LmVmZmVjdFRhZ3w9NCl9ZWxzZXtzd2l0Y2gocz05PT09bi5ub2RlVHlwZT9uOm4ub3duZXJEb2N1bWVudCxlPT09dW4mJihlPVVlKG8pKSxlPT09dW4/XCJzY3JpcHRcIj09PW8/KChlPXMuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuaW5uZXJIVE1MPVwiPHNjcmlwdD48XFwvc2NyaXB0PlwiLGU9ZS5yZW1vdmVDaGlsZChlLmZpcnN0Q2hpbGQpKTpcInN0cmluZ1wiPT10eXBlb2Ygci5pcz9lPXMuY3JlYXRlRWxlbWVudChvLHtpczpyLmlzfSk6KGU9cy5jcmVhdGVFbGVtZW50KG8pLFwic2VsZWN0XCI9PT1vJiYocz1lLHIubXVsdGlwbGU/cy5tdWx0aXBsZT0hMDpyLnNpemUmJihzLnNpemU9ci5zaXplKSkpOmU9cy5jcmVhdGVFbGVtZW50TlMoZSxvKSxlW0VuXT10LGVbam5dPXIsJGEoZSx0KSx0LnN0YXRlTm9kZT1lLHM9Y24obyxyKSxvKXtjYXNlXCJpZnJhbWVcIjpjYXNlXCJvYmplY3RcIjpjYXNlXCJlbWJlZFwiOlh0KFwibG9hZFwiLGUpLGM9cjticmVhaztjYXNlXCJ2aWRlb1wiOmNhc2VcImF1ZGlvXCI6Zm9yKGM9MDtjPEplLmxlbmd0aDtjKyspWHQoSmVbY10sZSk7Yz1yO2JyZWFrO2Nhc2VcInNvdXJjZVwiOlh0KFwiZXJyb3JcIixlKSxjPXI7YnJlYWs7Y2FzZVwiaW1nXCI6Y2FzZVwiaW1hZ2VcIjpjYXNlXCJsaW5rXCI6WHQoXCJlcnJvclwiLGUpLFh0KFwibG9hZFwiLGUpLGM9cjticmVhaztjYXNlXCJmb3JtXCI6WHQoXCJyZXNldFwiLGUpLFh0KFwic3VibWl0XCIsZSksYz1yO2JyZWFrO2Nhc2VcImRldGFpbHNcIjpYdChcInRvZ2dsZVwiLGUpLGM9cjticmVhaztjYXNlXCJpbnB1dFwiOl9lKGUsciksYz1PZShlLHIpLFh0KFwiaW52YWxpZFwiLGUpLGRuKG4sXCJvbkNoYW5nZVwiKTticmVhaztjYXNlXCJvcHRpb25cIjpjPUVlKGUscik7YnJlYWs7Y2FzZVwic2VsZWN0XCI6ZS5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIXIubXVsdGlwbGV9LGM9aSh7fSxyLHt2YWx1ZTp2b2lkIDB9KSxYdChcImludmFsaWRcIixlKSxkbihuLFwib25DaGFuZ2VcIik7YnJlYWs7Y2FzZVwidGV4dGFyZWFcIjpMZShlLHIpLGM9SWUoZSxyKSxYdChcImludmFsaWRcIixlKSxkbihuLFwib25DaGFuZ2VcIik7YnJlYWs7ZGVmYXVsdDpjPXJ9c24obyxjKTt2YXIgdT1jO2ZvcihhIGluIHUpaWYodS5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIGQ9dVthXTtcInN0eWxlXCI9PT1hP2FuKGUsZCk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09YT9udWxsIT0oZD1kP2QuX19odG1sOnZvaWQgMCkmJkhlKGUsZCk6XCJjaGlsZHJlblwiPT09YT9cInN0cmluZ1wiPT10eXBlb2YgZD8oXCJ0ZXh0YXJlYVwiIT09b3x8XCJcIiE9PWQpJiZWZShlLGQpOlwibnVtYmVyXCI9PXR5cGVvZiBkJiZWZShlLFwiXCIrZCk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWEmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1hJiZcImF1dG9Gb2N1c1wiIT09YSYmKF8uaGFzT3duUHJvcGVydHkoYSk/bnVsbCE9ZCYmZG4obixhKTpudWxsIT1kJiZKKGUsYSxkLHMpKX1zd2l0Y2gobyl7Y2FzZVwiaW5wdXRcIjpQZShlKSxBZShlLHIsITEpO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6UGUoZSksTmUoZSk7YnJlYWs7Y2FzZVwib3B0aW9uXCI6bnVsbCE9ci52YWx1ZSYmZS5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLFwiXCIrd2Uoci52YWx1ZSkpO2JyZWFrO2Nhc2VcInNlbGVjdFwiOmUubXVsdGlwbGU9ISFyLm11bHRpcGxlLG51bGwhPShuPXIudmFsdWUpP2plKGUsISFyLm11bHRpcGxlLG4sITEpOm51bGwhPXIuZGVmYXVsdFZhbHVlJiZqZShlLCEhci5tdWx0aXBsZSxyLmRlZmF1bHRWYWx1ZSwhMCk7YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBjLm9uQ2xpY2smJihlLm9uY2xpY2s9Zm4pfXhuKG8scikmJih0LmVmZmVjdFRhZ3w9NCl9bnVsbCE9PXQucmVmJiYodC5lZmZlY3RUYWd8PTEyOCl9cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGUmJm51bGwhPXQuc3RhdGVOb2RlKXFhKDAsdCxlLm1lbW9pemVkUHJvcHMscik7ZWxzZXtpZihcInN0cmluZ1wiIT10eXBlb2YgciYmbnVsbD09PXQuc3RhdGVOb2RlKXRocm93IEVycm9yKGwoMTY2KSk7bj1CaShSaS5jdXJyZW50KSxCaShEaS5jdXJyZW50KSxMYSh0KT8obj10LnN0YXRlTm9kZSxyPXQubWVtb2l6ZWRQcm9wcyxuW0VuXT10LG4ubm9kZVZhbHVlIT09ciYmKHQuZWZmZWN0VGFnfD00KSk6KChuPSg5PT09bi5ub2RlVHlwZT9uOm4ub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUocikpW0VuXT10LHQuc3RhdGVOb2RlPW4pfXJldHVybiBudWxsO2Nhc2UgMTM6cmV0dXJuIG1vKEhpKSxyPXQubWVtb2l6ZWRTdGF0ZSwwIT0oNjQmdC5lZmZlY3RUYWcpPyh0LmV4cGlyYXRpb25UaW1lPW4sdCk6KG49bnVsbCE9PXIscj0hMSxudWxsPT09ZT92b2lkIDAhPT10Lm1lbW9pemVkUHJvcHMuZmFsbGJhY2smJkxhKHQpOihyPW51bGwhPT0obz1lLm1lbW9pemVkU3RhdGUpLG58fG51bGw9PT1vfHxudWxsIT09KG89ZS5jaGlsZC5zaWJsaW5nKSYmKG51bGwhPT0oYT10LmZpcnN0RWZmZWN0KT8odC5maXJzdEVmZmVjdD1vLG8ubmV4dEVmZmVjdD1hKToodC5maXJzdEVmZmVjdD10Lmxhc3RFZmZlY3Q9byxvLm5leHRFZmZlY3Q9bnVsbCksby5lZmZlY3RUYWc9OCkpLG4mJiFyJiYwIT0oMiZ0Lm1vZGUpJiYobnVsbD09PWUmJiEwIT09dC5tZW1vaXplZFByb3BzLnVuc3RhYmxlX2F2b2lkVGhpc0ZhbGxiYWNrfHwwIT0oMSZIaS5jdXJyZW50KT9CbD09PUVsJiYoQmw9amwpOihCbCE9PUVsJiZCbCE9PWpsfHwoQmw9SWwpLDAhPT1IbCYmbnVsbCE9PURsJiYoVnMoRGwsUmwpLFdzKERsLEhsKSkpKSwobnx8cikmJih0LmVmZmVjdFRhZ3w9NCksbnVsbCk7Y2FzZSA0OnJldHVybiBGaSgpLG51bGw7Y2FzZSAxMDpyZXR1cm4gbGkodCksbnVsbDtjYXNlIDE5OmlmKG1vKEhpKSxudWxsPT09KHI9dC5tZW1vaXplZFN0YXRlKSlyZXR1cm4gbnVsbDtpZihvPTAhPSg2NCZ0LmVmZmVjdFRhZyksbnVsbD09PShhPXIucmVuZGVyaW5nKSl7aWYobyl0bChyLCExKTtlbHNlIGlmKEJsIT09RWx8fG51bGwhPT1lJiYwIT0oNjQmZS5lZmZlY3RUYWcpKWZvcihhPXQuY2hpbGQ7bnVsbCE9PWE7KXtpZihudWxsIT09KGU9VmkoYSkpKXtmb3IodC5lZmZlY3RUYWd8PTY0LHRsKHIsITEpLG51bGwhPT0obz1lLnVwZGF0ZVF1ZXVlKSYmKHQudXBkYXRlUXVldWU9byx0LmVmZmVjdFRhZ3w9NCksbnVsbD09PXIubGFzdEVmZmVjdCYmKHQuZmlyc3RFZmZlY3Q9bnVsbCksdC5sYXN0RWZmZWN0PXIubGFzdEVmZmVjdCxyPXQuY2hpbGQ7bnVsbCE9PXI7KWE9biwobz1yKS5lZmZlY3RUYWcmPTIsby5uZXh0RWZmZWN0PW51bGwsby5maXJzdEVmZmVjdD1udWxsLG8ubGFzdEVmZmVjdD1udWxsLG51bGw9PT0oZT1vLmFsdGVybmF0ZSk/KG8uY2hpbGRFeHBpcmF0aW9uVGltZT0wLG8uZXhwaXJhdGlvblRpbWU9YSxvLmNoaWxkPW51bGwsby5tZW1vaXplZFByb3BzPW51bGwsby5tZW1vaXplZFN0YXRlPW51bGwsby51cGRhdGVRdWV1ZT1udWxsLG8uZGVwZW5kZW5jaWVzPW51bGwpOihvLmNoaWxkRXhwaXJhdGlvblRpbWU9ZS5jaGlsZEV4cGlyYXRpb25UaW1lLG8uZXhwaXJhdGlvblRpbWU9ZS5leHBpcmF0aW9uVGltZSxvLmNoaWxkPWUuY2hpbGQsby5tZW1vaXplZFByb3BzPWUubWVtb2l6ZWRQcm9wcyxvLm1lbW9pemVkU3RhdGU9ZS5tZW1vaXplZFN0YXRlLG8udXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSxhPWUuZGVwZW5kZW5jaWVzLG8uZGVwZW5kZW5jaWVzPW51bGw9PT1hP251bGw6e2V4cGlyYXRpb25UaW1lOmEuZXhwaXJhdGlvblRpbWUsZmlyc3RDb250ZXh0OmEuZmlyc3RDb250ZXh0LHJlc3BvbmRlcnM6YS5yZXNwb25kZXJzfSkscj1yLnNpYmxpbmc7cmV0dXJuIGhvKEhpLDEmSGkuY3VycmVudHwyKSx0LmNoaWxkfWE9YS5zaWJsaW5nfX1lbHNle2lmKCFvKWlmKG51bGwhPT0oZT1WaShhKSkpe2lmKHQuZWZmZWN0VGFnfD02NCxvPSEwLG51bGwhPT0obj1lLnVwZGF0ZVF1ZXVlKSYmKHQudXBkYXRlUXVldWU9bix0LmVmZmVjdFRhZ3w9NCksdGwociwhMCksbnVsbD09PXIudGFpbCYmXCJoaWRkZW5cIj09PXIudGFpbE1vZGUmJiFhLmFsdGVybmF0ZSlyZXR1cm4gbnVsbCE9PSh0PXQubGFzdEVmZmVjdD1yLmxhc3RFZmZlY3QpJiYodC5uZXh0RWZmZWN0PW51bGwpLG51bGx9ZWxzZSAyKiRvKCktci5yZW5kZXJpbmdTdGFydFRpbWU+ci50YWlsRXhwaXJhdGlvbiYmMTxuJiYodC5lZmZlY3RUYWd8PTY0LG89ITAsdGwociwhMSksdC5leHBpcmF0aW9uVGltZT10LmNoaWxkRXhwaXJhdGlvblRpbWU9bi0xKTtyLmlzQmFja3dhcmRzPyhhLnNpYmxpbmc9dC5jaGlsZCx0LmNoaWxkPWEpOihudWxsIT09KG49ci5sYXN0KT9uLnNpYmxpbmc9YTp0LmNoaWxkPWEsci5sYXN0PWEpfXJldHVybiBudWxsIT09ci50YWlsPygwPT09ci50YWlsRXhwaXJhdGlvbiYmKHIudGFpbEV4cGlyYXRpb249JG8oKSs1MDApLG49ci50YWlsLHIucmVuZGVyaW5nPW4sci50YWlsPW4uc2libGluZyxyLmxhc3RFZmZlY3Q9dC5sYXN0RWZmZWN0LHIucmVuZGVyaW5nU3RhcnRUaW1lPSRvKCksbi5zaWJsaW5nPW51bGwsdD1IaS5jdXJyZW50LGhvKEhpLG8/MSZ0fDI6MSZ0KSxuKTpudWxsfXRocm93IEVycm9yKGwoMTU2LHQudGFnKSl9ZnVuY3Rpb24gcmwoZSl7c3dpdGNoKGUudGFnKXtjYXNlIDE6UG8oZS50eXBlKSYmeG8oKTt2YXIgdD1lLmVmZmVjdFRhZztyZXR1cm4gNDA5NiZ0PyhlLmVmZmVjdFRhZz0tNDA5NyZ0fDY0LGUpOm51bGw7Y2FzZSAzOmlmKEZpKCksbW8odm8pLG1vKHlvKSwwIT0oNjQmKHQ9ZS5lZmZlY3RUYWcpKSl0aHJvdyBFcnJvcihsKDI4NSkpO3JldHVybiBlLmVmZmVjdFRhZz0tNDA5NyZ0fDY0LGU7Y2FzZSA1OnJldHVybiB6aShlKSxudWxsO2Nhc2UgMTM6cmV0dXJuIG1vKEhpKSw0MDk2Jih0PWUuZWZmZWN0VGFnKT8oZS5lZmZlY3RUYWc9LTQwOTcmdHw2NCxlKTpudWxsO2Nhc2UgMTk6cmV0dXJuIG1vKEhpKSxudWxsO2Nhc2UgNDpyZXR1cm4gRmkoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIGxpKGUpLG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gb2woZSx0KXtyZXR1cm57dmFsdWU6ZSxzb3VyY2U6dCxzdGFjazp2ZSh0KX19JGE9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5jaGlsZDtudWxsIT09bjspe2lmKDU9PT1uLnRhZ3x8Nj09PW4udGFnKWUuYXBwZW5kQ2hpbGQobi5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PW4udGFnJiZudWxsIT09bi5jaGlsZCl7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGQ7Y29udGludWV9aWYobj09PXQpYnJlYWs7Zm9yKDtudWxsPT09bi5zaWJsaW5nOyl7aWYobnVsbD09PW4ucmV0dXJufHxuLnJldHVybj09PXQpcmV0dXJuO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ319LEthPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGE9ZS5tZW1vaXplZFByb3BzO2lmKGEhPT1yKXt2YXIgbCxzLGM9dC5zdGF0ZU5vZGU7c3dpdGNoKEJpKERpLmN1cnJlbnQpLGU9bnVsbCxuKXtjYXNlXCJpbnB1dFwiOmE9T2UoYyxhKSxyPU9lKGMsciksZT1bXTticmVhaztjYXNlXCJvcHRpb25cIjphPUVlKGMsYSkscj1FZShjLHIpLGU9W107YnJlYWs7Y2FzZVwic2VsZWN0XCI6YT1pKHt9LGEse3ZhbHVlOnZvaWQgMH0pLHI9aSh7fSxyLHt2YWx1ZTp2b2lkIDB9KSxlPVtdO2JyZWFrO2Nhc2VcInRleHRhcmVhXCI6YT1JZShjLGEpLHI9SWUoYyxyKSxlPVtdO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiIT10eXBlb2YgYS5vbkNsaWNrJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLm9uQ2xpY2smJihjLm9uY2xpY2s9Zm4pfWZvcihsIGluIHNuKG4sciksbj1udWxsLGEpaWYoIXIuaGFzT3duUHJvcGVydHkobCkmJmEuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWFbbF0paWYoXCJzdHlsZVwiPT09bClmb3IocyBpbiBjPWFbbF0pYy5oYXNPd25Qcm9wZXJ0eShzKSYmKG58fChuPXt9KSxuW3NdPVwiXCIpO2Vsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIhPT1sJiZcImNoaWxkcmVuXCIhPT1sJiZcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJlwiYXV0b0ZvY3VzXCIhPT1sJiYoXy5oYXNPd25Qcm9wZXJ0eShsKT9lfHwoZT1bXSk6KGU9ZXx8W10pLnB1c2gobCxudWxsKSk7Zm9yKGwgaW4gcil7dmFyIHU9cltsXTtpZihjPW51bGwhPWE/YVtsXTp2b2lkIDAsci5oYXNPd25Qcm9wZXJ0eShsKSYmdSE9PWMmJihudWxsIT11fHxudWxsIT1jKSlpZihcInN0eWxlXCI9PT1sKWlmKGMpe2ZvcihzIGluIGMpIWMuaGFzT3duUHJvcGVydHkocyl8fHUmJnUuaGFzT3duUHJvcGVydHkocyl8fChufHwobj17fSksbltzXT1cIlwiKTtmb3IocyBpbiB1KXUuaGFzT3duUHJvcGVydHkocykmJmNbc10hPT11W3NdJiYobnx8KG49e30pLG5bc109dVtzXSl9ZWxzZSBufHwoZXx8KGU9W10pLGUucHVzaChsLG4pKSxuPXU7ZWxzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIj09PWw/KHU9dT91Ll9faHRtbDp2b2lkIDAsYz1jP2MuX19odG1sOnZvaWQgMCxudWxsIT11JiZjIT09dSYmKGU9ZXx8W10pLnB1c2gobCx1KSk6XCJjaGlsZHJlblwiPT09bD9jPT09dXx8XCJzdHJpbmdcIiE9dHlwZW9mIHUmJlwibnVtYmVyXCIhPXR5cGVvZiB1fHwoZT1lfHxbXSkucHVzaChsLFwiXCIrdSk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiYoXy5oYXNPd25Qcm9wZXJ0eShsKT8obnVsbCE9dSYmZG4obyxsKSxlfHxjPT09dXx8KGU9W10pKTooZT1lfHxbXSkucHVzaChsLHUpKX1uJiYoZT1lfHxbXSkucHVzaChcInN0eWxlXCIsbiksbz1lLCh0LnVwZGF0ZVF1ZXVlPW8pJiYodC5lZmZlY3RUYWd8PTQpfX0scWE9ZnVuY3Rpb24oZSx0LG4scil7biE9PXImJih0LmVmZmVjdFRhZ3w9NCl9O3ZhciBpbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0O2Z1bmN0aW9uIGFsKGUsdCl7dmFyIG49dC5zb3VyY2Uscj10LnN0YWNrO251bGw9PT1yJiZudWxsIT09biYmKHI9dmUobikpLG51bGwhPT1uJiZ5ZShuLnR5cGUpLHQ9dC52YWx1ZSxudWxsIT09ZSYmMT09PWUudGFnJiZ5ZShlLnR5cGUpO3RyeXtjb25zb2xlLmVycm9yKHQpfWNhdGNoKG8pe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgb30pKX19ZnVuY3Rpb24gbGwoZSl7dmFyIHQ9ZS5yZWY7aWYobnVsbCE9PXQpaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdCl0cnl7dChudWxsKX1jYXRjaChuKXtBcyhlLG4pfWVsc2UgdC5jdXJyZW50PW51bGx9ZnVuY3Rpb24gc2woZSx0KXtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Y2FzZSAyMjpjYXNlIDM6Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpyZXR1cm47Y2FzZSAxOmlmKDI1NiZ0LmVmZmVjdFRhZyYmbnVsbCE9PWUpe3ZhciBuPWUubWVtb2l6ZWRQcm9wcyxyPWUubWVtb2l6ZWRTdGF0ZTt0PShlPXQuc3RhdGVOb2RlKS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSh0LmVsZW1lbnRUeXBlPT09dC50eXBlP246dGkodC50eXBlLG4pLHIpLGUuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9dH1yZXR1cm59dGhyb3cgRXJyb3IobCgxNjMpKX1mdW5jdGlvbiBjbChlLHQpe2lmKG51bGwhPT0odD1udWxsIT09KHQ9dC51cGRhdGVRdWV1ZSk/dC5sYXN0RWZmZWN0Om51bGwpKXt2YXIgbj10PXQubmV4dDtkb3tpZigobi50YWcmZSk9PT1lKXt2YXIgcj1uLmRlc3Ryb3k7bi5kZXN0cm95PXZvaWQgMCx2b2lkIDAhPT1yJiZyKCl9bj1uLm5leHR9d2hpbGUobiE9PXQpfX1mdW5jdGlvbiB1bChlLHQpe2lmKG51bGwhPT0odD1udWxsIT09KHQ9dC51cGRhdGVRdWV1ZSk/dC5sYXN0RWZmZWN0Om51bGwpKXt2YXIgbj10PXQubmV4dDtkb3tpZigobi50YWcmZSk9PT1lKXt2YXIgcj1uLmNyZWF0ZTtuLmRlc3Ryb3k9cigpfW49bi5uZXh0fXdoaWxlKG4hPT10KX19ZnVuY3Rpb24gZGwoZSx0LG4pe3N3aXRjaChuLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpjYXNlIDIyOnJldHVybiB2b2lkIHVsKDMsbik7Y2FzZSAxOmlmKGU9bi5zdGF0ZU5vZGUsNCZuLmVmZmVjdFRhZylpZihudWxsPT09dCllLmNvbXBvbmVudERpZE1vdW50KCk7ZWxzZXt2YXIgcj1uLmVsZW1lbnRUeXBlPT09bi50eXBlP3QubWVtb2l6ZWRQcm9wczp0aShuLnR5cGUsdC5tZW1vaXplZFByb3BzKTtlLmNvbXBvbmVudERpZFVwZGF0ZShyLHQubWVtb2l6ZWRTdGF0ZSxlLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlKX1yZXR1cm4gdm9pZChudWxsIT09KHQ9bi51cGRhdGVRdWV1ZSkmJnlpKG4sdCxlKSk7Y2FzZSAzOmlmKG51bGwhPT0odD1uLnVwZGF0ZVF1ZXVlKSl7aWYoZT1udWxsLG51bGwhPT1uLmNoaWxkKXN3aXRjaChuLmNoaWxkLnRhZyl7Y2FzZSA1OmNhc2UgMTplPW4uY2hpbGQuc3RhdGVOb2RlfXlpKG4sdCxlKX1yZXR1cm47Y2FzZSA1OnJldHVybiBlPW4uc3RhdGVOb2RlLHZvaWQobnVsbD09PXQmJjQmbi5lZmZlY3RUYWcmJnhuKG4udHlwZSxuLm1lbW9pemVkUHJvcHMpJiZlLmZvY3VzKCkpO2Nhc2UgNjpjYXNlIDQ6Y2FzZSAxMjpjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMDpjYXNlIDIxOnJldHVybjtjYXNlIDEzOnJldHVybiB2b2lkKG51bGw9PT1uLm1lbW9pemVkU3RhdGUmJihuPW4uYWx0ZXJuYXRlLG51bGwhPT1uJiYobj1uLm1lbW9pemVkU3RhdGUsbnVsbCE9PW4mJihuPW4uZGVoeWRyYXRlZCxudWxsIT09biYmRnQobikpKSkpfXRocm93IEVycm9yKGwoMTYzKSl9ZnVuY3Rpb24gZmwoZSx0LG4pe3N3aXRjaChcImZ1bmN0aW9uXCI9PXR5cGVvZiBJcyYmSXModCksdC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpjYXNlIDIyOmlmKG51bGwhPT0oZT10LnVwZGF0ZVF1ZXVlKSYmbnVsbCE9PShlPWUubGFzdEVmZmVjdCkpe3ZhciByPWUubmV4dDtRbyg5NzxuPzk3Om4sKGZ1bmN0aW9uKCl7dmFyIGU9cjtkb3t2YXIgbj1lLmRlc3Ryb3k7aWYodm9pZCAwIT09bil7dmFyIG89dDt0cnl7bigpfWNhdGNoKGkpe0FzKG8saSl9fWU9ZS5uZXh0fXdoaWxlKGUhPT1yKX0pKX1icmVhaztjYXNlIDE6bGwodCksXCJmdW5jdGlvblwiPT10eXBlb2Yobj10LnN0YXRlTm9kZSkuY29tcG9uZW50V2lsbFVubW91bnQmJmZ1bmN0aW9uKGUsdCl7dHJ5e3QucHJvcHM9ZS5tZW1vaXplZFByb3BzLHQuc3RhdGU9ZS5tZW1vaXplZFN0YXRlLHQuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChuKXtBcyhlLG4pfX0odCxuKTticmVhaztjYXNlIDU6bGwodCk7YnJlYWs7Y2FzZSA0OnlsKGUsdCxuKX19ZnVuY3Rpb24gcGwoZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7ZS5yZXR1cm49bnVsbCxlLmNoaWxkPW51bGwsZS5tZW1vaXplZFN0YXRlPW51bGwsZS51cGRhdGVRdWV1ZT1udWxsLGUuZGVwZW5kZW5jaWVzPW51bGwsZS5hbHRlcm5hdGU9bnVsbCxlLmZpcnN0RWZmZWN0PW51bGwsZS5sYXN0RWZmZWN0PW51bGwsZS5wZW5kaW5nUHJvcHM9bnVsbCxlLm1lbW9pemVkUHJvcHM9bnVsbCxlLnN0YXRlTm9kZT1udWxsLG51bGwhPT10JiZwbCh0KX1mdW5jdGlvbiBnbChlKXtyZXR1cm4gNT09PWUudGFnfHwzPT09ZS50YWd8fDQ9PT1lLnRhZ31mdW5jdGlvbiBtbChlKXtlOntmb3IodmFyIHQ9ZS5yZXR1cm47bnVsbCE9PXQ7KXtpZihnbCh0KSl7dmFyIG49dDticmVhayBlfXQ9dC5yZXR1cm59dGhyb3cgRXJyb3IobCgxNjApKX1zd2l0Y2godD1uLnN0YXRlTm9kZSxuLnRhZyl7Y2FzZSA1OnZhciByPSExO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dD10LmNvbnRhaW5lckluZm8scj0hMDticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMTYxKSl9MTYmbi5lZmZlY3RUYWcmJihWZSh0LFwiXCIpLG4uZWZmZWN0VGFnJj0tMTcpO2U6dDpmb3Iobj1lOzspe2Zvcig7bnVsbD09PW4uc2libGluZzspe2lmKG51bGw9PT1uLnJldHVybnx8Z2wobi5yZXR1cm4pKXtuPW51bGw7YnJlYWsgZX1uPW4ucmV0dXJufWZvcihuLnNpYmxpbmcucmV0dXJuPW4ucmV0dXJuLG49bi5zaWJsaW5nOzUhPT1uLnRhZyYmNiE9PW4udGFnJiYxOCE9PW4udGFnOyl7aWYoMiZuLmVmZmVjdFRhZyljb250aW51ZSB0O2lmKG51bGw9PT1uLmNoaWxkfHw0PT09bi50YWcpY29udGludWUgdDtuLmNoaWxkLnJldHVybj1uLG49bi5jaGlsZH1pZighKDImbi5lZmZlY3RUYWcpKXtuPW4uc3RhdGVOb2RlO2JyZWFrIGV9fXI/aGwoZSxuLHQpOmJsKGUsbix0KX1mdW5jdGlvbiBobChlLHQsbil7dmFyIHI9ZS50YWcsbz01PT09cnx8Nj09PXI7aWYobyllPW8/ZS5zdGF0ZU5vZGU6ZS5zdGF0ZU5vZGUuaW5zdGFuY2UsdD84PT09bi5ub2RlVHlwZT9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdCk6bi5pbnNlcnRCZWZvcmUoZSx0KTooOD09PW4ubm9kZVR5cGU/KHQ9bi5wYXJlbnROb2RlKS5pbnNlcnRCZWZvcmUoZSxuKToodD1uKS5hcHBlbmRDaGlsZChlKSxudWxsIT0obj1uLl9yZWFjdFJvb3RDb250YWluZXIpfHxudWxsIT09dC5vbmNsaWNrfHwodC5vbmNsaWNrPWZuKSk7ZWxzZSBpZig0IT09ciYmbnVsbCE9PShlPWUuY2hpbGQpKWZvcihobChlLHQsbiksZT1lLnNpYmxpbmc7bnVsbCE9PWU7KWhsKGUsdCxuKSxlPWUuc2libGluZ31mdW5jdGlvbiBibChlLHQsbil7dmFyIHI9ZS50YWcsbz01PT09cnx8Nj09PXI7aWYobyllPW8/ZS5zdGF0ZU5vZGU6ZS5zdGF0ZU5vZGUuaW5zdGFuY2UsdD9uLmluc2VydEJlZm9yZShlLHQpOm4uYXBwZW5kQ2hpbGQoZSk7ZWxzZSBpZig0IT09ciYmbnVsbCE9PShlPWUuY2hpbGQpKWZvcihibChlLHQsbiksZT1lLnNpYmxpbmc7bnVsbCE9PWU7KWJsKGUsdCxuKSxlPWUuc2libGluZ31mdW5jdGlvbiB5bChlLHQsbil7Zm9yKHZhciByLG8saT10LGE9ITE7Oyl7aWYoIWEpe2E9aS5yZXR1cm47ZTpmb3IoOzspe2lmKG51bGw9PT1hKXRocm93IEVycm9yKGwoMTYwKSk7c3dpdGNoKHI9YS5zdGF0ZU5vZGUsYS50YWcpe2Nhc2UgNTpvPSExO2JyZWFrIGU7Y2FzZSAzOmNhc2UgNDpyPXIuY29udGFpbmVySW5mbyxvPSEwO2JyZWFrIGV9YT1hLnJldHVybn1hPSEwfWlmKDU9PT1pLnRhZ3x8Nj09PWkudGFnKXtlOmZvcih2YXIgcz1lLGM9aSx1PW4sZD1jOzspaWYoZmwocyxkLHUpLG51bGwhPT1kLmNoaWxkJiY0IT09ZC50YWcpZC5jaGlsZC5yZXR1cm49ZCxkPWQuY2hpbGQ7ZWxzZXtpZihkPT09YylicmVhayBlO2Zvcig7bnVsbD09PWQuc2libGluZzspe2lmKG51bGw9PT1kLnJldHVybnx8ZC5yZXR1cm49PT1jKWJyZWFrIGU7ZD1kLnJldHVybn1kLnNpYmxpbmcucmV0dXJuPWQucmV0dXJuLGQ9ZC5zaWJsaW5nfW8/KHM9cixjPWkuc3RhdGVOb2RlLDg9PT1zLm5vZGVUeXBlP3MucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKTpzLnJlbW92ZUNoaWxkKGMpKTpyLnJlbW92ZUNoaWxkKGkuc3RhdGVOb2RlKX1lbHNlIGlmKDQ9PT1pLnRhZyl7aWYobnVsbCE9PWkuY2hpbGQpe3I9aS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxvPSEwLGkuY2hpbGQucmV0dXJuPWksaT1pLmNoaWxkO2NvbnRpbnVlfX1lbHNlIGlmKGZsKGUsaSxuKSxudWxsIT09aS5jaGlsZCl7aS5jaGlsZC5yZXR1cm49aSxpPWkuY2hpbGQ7Y29udGludWV9aWYoaT09PXQpYnJlYWs7Zm9yKDtudWxsPT09aS5zaWJsaW5nOyl7aWYobnVsbD09PWkucmV0dXJufHxpLnJldHVybj09PXQpcmV0dXJuOzQ9PT0oaT1pLnJldHVybikudGFnJiYoYT0hMSl9aS5zaWJsaW5nLnJldHVybj1pLnJldHVybixpPWkuc2libGluZ319ZnVuY3Rpb24gdmwoZSx0KXtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpjYXNlIDIyOnJldHVybiB2b2lkIGNsKDMsdCk7Y2FzZSAxOmNhc2UgMTI6Y2FzZSAxNzpyZXR1cm47Y2FzZSA1OnZhciBuPXQuc3RhdGVOb2RlO2lmKG51bGwhPW4pe3ZhciByPXQubWVtb2l6ZWRQcm9wcyxvPW51bGwhPT1lP2UubWVtb2l6ZWRQcm9wczpyO2U9dC50eXBlO3ZhciBpPXQudXBkYXRlUXVldWU7aWYodC51cGRhdGVRdWV1ZT1udWxsLG51bGwhPT1pKXtmb3Iobltqbl09cixcImlucHV0XCI9PT1lJiZcInJhZGlvXCI9PT1yLnR5cGUmJm51bGwhPXIubmFtZSYmQ2UobixyKSxjbihlLG8pLHQ9Y24oZSxyKSxvPTA7bzxpLmxlbmd0aDtvKz0yKXt2YXIgYT1pW29dLHM9aVtvKzFdO1wic3R5bGVcIj09PWE/YW4obixzKTpcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1hP0hlKG4scyk6XCJjaGlsZHJlblwiPT09YT9WZShuLHMpOkoobixhLHMsdCl9c3dpdGNoKGUpe2Nhc2VcImlucHV0XCI6a2UobixyKTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOkRlKG4scik7YnJlYWs7Y2FzZVwic2VsZWN0XCI6dD1uLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUsbi5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhci5tdWx0aXBsZSxudWxsIT0oZT1yLnZhbHVlKT9qZShuLCEhci5tdWx0aXBsZSxlLCExKTp0IT09ISFyLm11bHRpcGxlJiYobnVsbCE9ci5kZWZhdWx0VmFsdWU/amUobiwhIXIubXVsdGlwbGUsci5kZWZhdWx0VmFsdWUsITApOmplKG4sISFyLm11bHRpcGxlLHIubXVsdGlwbGU/W106XCJcIiwhMSkpfX19cmV0dXJuO2Nhc2UgNjppZihudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobCgxNjIpKTtyZXR1cm4gdm9pZCh0LnN0YXRlTm9kZS5ub2RlVmFsdWU9dC5tZW1vaXplZFByb3BzKTtjYXNlIDM6cmV0dXJuIHZvaWQoKHQ9dC5zdGF0ZU5vZGUpLmh5ZHJhdGUmJih0Lmh5ZHJhdGU9ITEsRnQodC5jb250YWluZXJJbmZvKSkpO2Nhc2UgMTM6aWYobj10LG51bGw9PT10Lm1lbW9pemVkU3RhdGU/cj0hMToocj0hMCxuPXQuY2hpbGQsV2w9JG8oKSksbnVsbCE9PW4pZTpmb3IoZT1uOzspe2lmKDU9PT1lLnRhZylpPWUuc3RhdGVOb2RlLHI/XCJmdW5jdGlvblwiPT10eXBlb2YoaT1pLnN0eWxlKS5zZXRQcm9wZXJ0eT9pLnNldFByb3BlcnR5KFwiZGlzcGxheVwiLFwibm9uZVwiLFwiaW1wb3J0YW50XCIpOmkuZGlzcGxheT1cIm5vbmVcIjooaT1lLnN0YXRlTm9kZSxvPW51bGwhPShvPWUubWVtb2l6ZWRQcm9wcy5zdHlsZSkmJm8uaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpP28uZGlzcGxheTpudWxsLGkuc3R5bGUuZGlzcGxheT1vbihcImRpc3BsYXlcIixvKSk7ZWxzZSBpZig2PT09ZS50YWcpZS5zdGF0ZU5vZGUubm9kZVZhbHVlPXI/XCJcIjplLm1lbW9pemVkUHJvcHM7ZWxzZXtpZigxMz09PWUudGFnJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlJiZudWxsPT09ZS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQpeyhpPWUuY2hpbGQuc2libGluZykucmV0dXJuPWUsZT1pO2NvbnRpbnVlfWlmKG51bGwhPT1lLmNoaWxkKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX19aWYoZT09PW4pYnJlYWs7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxlLnJldHVybj09PW4pYnJlYWsgZTtlPWUucmV0dXJufWUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmd9cmV0dXJuIHZvaWQgd2wodCk7Y2FzZSAxOTpyZXR1cm4gdm9pZCB3bCh0KX10aHJvdyBFcnJvcihsKDE2MykpfWZ1bmN0aW9uIHdsKGUpe3ZhciB0PWUudXBkYXRlUXVldWU7aWYobnVsbCE9PXQpe2UudXBkYXRlUXVldWU9bnVsbDt2YXIgbj1lLnN0YXRlTm9kZTtudWxsPT09biYmKG49ZS5zdGF0ZU5vZGU9bmV3IGlsKSx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPUVzLmJpbmQobnVsbCxlLHQpO24uaGFzKHQpfHwobi5hZGQodCksdC50aGVuKHIscikpfSkpfX12YXIgU2w9XCJmdW5jdGlvblwiPT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcDtmdW5jdGlvbiBQbChlLHQsbil7KG49Z2kobixudWxsKSkudGFnPTMsbi5wYXlsb2FkPXtlbGVtZW50Om51bGx9O3ZhciByPXQudmFsdWU7cmV0dXJuIG4uY2FsbGJhY2s9ZnVuY3Rpb24oKXskbHx8KCRsPSEwLEtsPXIpLGFsKGUsdCl9LG59ZnVuY3Rpb24geGwoZSx0LG4peyhuPWdpKG4sbnVsbCkpLnRhZz0zO3ZhciByPWUudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7dmFyIG89dC52YWx1ZTtuLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gYWwoZSx0KSxyKG8pfX12YXIgaT1lLnN0YXRlTm9kZTtyZXR1cm4gbnVsbCE9PWkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50RGlkQ2F0Y2gmJihuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7XCJmdW5jdGlvblwiIT10eXBlb2YgciYmKG51bGw9PT1xbD9xbD1uZXcgU2V0KFt0aGlzXSk6cWwuYWRkKHRoaXMpLGFsKGUsdCkpO3ZhciBuPXQuc3RhY2s7dGhpcy5jb21wb25lbnREaWRDYXRjaCh0LnZhbHVlLHtjb21wb25lbnRTdGFjazpudWxsIT09bj9uOlwiXCJ9KX0pLG59dmFyIE9sLF9sPU1hdGguY2VpbCxDbD1aLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsa2w9Wi5SZWFjdEN1cnJlbnRPd25lcixBbD0xNixUbD0zMixFbD0wLGpsPTMsSWw9NCxMbD0wLERsPW51bGwsTmw9bnVsbCxSbD0wLEJsPUVsLFVsPW51bGwsRmw9MTA3Mzc0MTgyMyxNbD0xMDczNzQxODIzLHpsPW51bGwsSGw9MCxWbD0hMSxXbD0wLEdsPW51bGwsJGw9ITEsS2w9bnVsbCxxbD1udWxsLFFsPSExLFhsPW51bGwsWWw9OTAsWmw9bnVsbCxKbD0wLGVzPW51bGwsdHM9MDtmdW5jdGlvbiBucygpe3JldHVybiAwIT0oNDgmTGwpPzEwNzM3NDE4MjEtKCRvKCkvMTB8MCk6MCE9PXRzP3RzOnRzPTEwNzM3NDE4MjEtKCRvKCkvMTB8MCl9ZnVuY3Rpb24gcnMoZSx0LG4pe2lmKDA9PSgyJih0PXQubW9kZSkpKXJldHVybiAxMDczNzQxODIzO3ZhciByPUtvKCk7aWYoMD09KDQmdCkpcmV0dXJuIDk5PT09cj8xMDczNzQxODIzOjEwNzM3NDE4MjI7aWYoMCE9KExsJkFsKSlyZXR1cm4gUmw7aWYobnVsbCE9PW4pZT1laShlLDB8bi50aW1lb3V0TXN8fDVlMywyNTApO2Vsc2Ugc3dpdGNoKHIpe2Nhc2UgOTk6ZT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgOTg6ZT1laShlLDE1MCwxMDApO2JyZWFrO2Nhc2UgOTc6Y2FzZSA5NjplPWVpKGUsNWUzLDI1MCk7YnJlYWs7Y2FzZSA5NTplPTI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDMyNikpfXJldHVybiBudWxsIT09RGwmJmU9PT1SbCYmLS1lLGV9ZnVuY3Rpb24gb3MoZSx0KXtpZig1MDxKbCl0aHJvdyBKbD0wLGVzPW51bGwsRXJyb3IobCgxODUpKTtpZihudWxsIT09KGU9aXMoZSx0KSkpe3ZhciBuPUtvKCk7MTA3Mzc0MTgyMz09PXQ/MCE9KDgmTGwpJiYwPT0oNDgmTGwpP2NzKGUpOihscyhlKSwwPT09TGwmJlpvKCkpOmxzKGUpLDA9PSg0JkxsKXx8OTghPT1uJiY5OSE9PW58fChudWxsPT09Wmw/Wmw9bmV3IE1hcChbW2UsdF1dKToodm9pZCAwPT09KG49WmwuZ2V0KGUpKXx8bj50KSYmWmwuc2V0KGUsdCkpfX1mdW5jdGlvbiBpcyhlLHQpe2UuZXhwaXJhdGlvblRpbWU8dCYmKGUuZXhwaXJhdGlvblRpbWU9dCk7dmFyIG49ZS5hbHRlcm5hdGU7bnVsbCE9PW4mJm4uZXhwaXJhdGlvblRpbWU8dCYmKG4uZXhwaXJhdGlvblRpbWU9dCk7dmFyIHI9ZS5yZXR1cm4sbz1udWxsO2lmKG51bGw9PT1yJiYzPT09ZS50YWcpbz1lLnN0YXRlTm9kZTtlbHNlIGZvcig7bnVsbCE9PXI7KXtpZihuPXIuYWx0ZXJuYXRlLHIuY2hpbGRFeHBpcmF0aW9uVGltZTx0JiYoci5jaGlsZEV4cGlyYXRpb25UaW1lPXQpLG51bGwhPT1uJiZuLmNoaWxkRXhwaXJhdGlvblRpbWU8dCYmKG4uY2hpbGRFeHBpcmF0aW9uVGltZT10KSxudWxsPT09ci5yZXR1cm4mJjM9PT1yLnRhZyl7bz1yLnN0YXRlTm9kZTticmVha31yPXIucmV0dXJufXJldHVybiBudWxsIT09byYmKERsPT09byYmKGhzKHQpLEJsPT09SWwmJlZzKG8sUmwpKSxXcyhvLHQpKSxvfWZ1bmN0aW9uIGFzKGUpe3ZhciB0PWUubGFzdEV4cGlyZWRUaW1lO2lmKDAhPT10KXJldHVybiB0O2lmKCFIcyhlLHQ9ZS5maXJzdFBlbmRpbmdUaW1lKSlyZXR1cm4gdDt2YXIgbj1lLmxhc3RQaW5nZWRUaW1lO3JldHVybiAyPj0oZT1uPihlPWUubmV4dEtub3duUGVuZGluZ0xldmVsKT9uOmUpJiZ0IT09ZT8wOmV9ZnVuY3Rpb24gbHMoZSl7aWYoMCE9PWUubGFzdEV4cGlyZWRUaW1lKWUuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT0xMDczNzQxODIzLGUuY2FsbGJhY2tQcmlvcml0eT05OSxlLmNhbGxiYWNrTm9kZT1Zbyhjcy5iaW5kKG51bGwsZSkpO2Vsc2V7dmFyIHQ9YXMoZSksbj1lLmNhbGxiYWNrTm9kZTtpZigwPT09dCludWxsIT09biYmKGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPTAsZS5jYWxsYmFja1ByaW9yaXR5PTkwKTtlbHNle3ZhciByPW5zKCk7aWYoMTA3Mzc0MTgyMz09PXQ/cj05OToxPT09dHx8Mj09PXQ/cj05NTpyPTA+PShyPTEwKigxMDczNzQxODIxLXQpLTEwKigxMDczNzQxODIxLXIpKT85OToyNTA+PXI/OTg6NTI1MD49cj85Nzo5NSxudWxsIT09bil7dmFyIG89ZS5jYWxsYmFja1ByaW9yaXR5O2lmKGUuY2FsbGJhY2tFeHBpcmF0aW9uVGltZT09PXQmJm8+PXIpcmV0dXJuO24hPT1GbyYmRW8obil9ZS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPXQsZS5jYWxsYmFja1ByaW9yaXR5PXIsdD0xMDczNzQxODIzPT09dD9Zbyhjcy5iaW5kKG51bGwsZSkpOlhvKHIsc3MuYmluZChudWxsLGUpLHt0aW1lb3V0OjEwKigxMDczNzQxODIxLXQpLSRvKCl9KSxlLmNhbGxiYWNrTm9kZT10fX19ZnVuY3Rpb24gc3MoZSx0KXtpZih0cz0wLHQpcmV0dXJuIEdzKGUsdD1ucygpKSxscyhlKSxudWxsO3ZhciBuPWFzKGUpO2lmKDAhPT1uKXtpZih0PWUuY2FsbGJhY2tOb2RlLDAhPSg0OCZMbCkpdGhyb3cgRXJyb3IobCgzMjcpKTtpZihfcygpLGU9PT1EbCYmbj09PVJsfHxmcyhlLG4pLG51bGwhPT1ObCl7dmFyIHI9TGw7TGx8PUFsO2Zvcih2YXIgbz1ncygpOzspdHJ5e3lzKCk7YnJlYWt9Y2F0Y2gocyl7cHMoZSxzKX1pZihhaSgpLExsPXIsQ2wuY3VycmVudD1vLDE9PT1CbCl0aHJvdyB0PVVsLGZzKGUsbiksVnMoZSxuKSxscyhlKSx0O2lmKG51bGw9PT1ObClzd2l0Y2gobz1lLmZpbmlzaGVkV29yaz1lLmN1cnJlbnQuYWx0ZXJuYXRlLGUuZmluaXNoZWRFeHBpcmF0aW9uVGltZT1uLHI9QmwsRGw9bnVsbCxyKXtjYXNlIEVsOmNhc2UgMTp0aHJvdyBFcnJvcihsKDM0NSkpO2Nhc2UgMjpHcyhlLDI8bj8yOm4pO2JyZWFrO2Nhc2Ugamw6aWYoVnMoZSxuKSxuPT09KHI9ZS5sYXN0U3VzcGVuZGVkVGltZSkmJihlLm5leHRLbm93blBlbmRpbmdMZXZlbD1TcyhvKSksMTA3Mzc0MTgyMz09PUZsJiYxMDwobz1XbCs1MDAtJG8oKSkpe2lmKFZsKXt2YXIgaT1lLmxhc3RQaW5nZWRUaW1lO2lmKDA9PT1pfHxpPj1uKXtlLmxhc3RQaW5nZWRUaW1lPW4sZnMoZSxuKTticmVha319aWYoMCE9PShpPWFzKGUpKSYmaSE9PW4pYnJlYWs7aWYoMCE9PXImJnIhPT1uKXtlLmxhc3RQaW5nZWRUaW1lPXI7YnJlYWt9ZS50aW1lb3V0SGFuZGxlPV9uKFBzLmJpbmQobnVsbCxlKSxvKTticmVha31QcyhlKTticmVhaztjYXNlIElsOmlmKFZzKGUsbiksbj09PShyPWUubGFzdFN1c3BlbmRlZFRpbWUpJiYoZS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9U3MobykpLFZsJiYoMD09PShvPWUubGFzdFBpbmdlZFRpbWUpfHxvPj1uKSl7ZS5sYXN0UGluZ2VkVGltZT1uLGZzKGUsbik7YnJlYWt9aWYoMCE9PShvPWFzKGUpKSYmbyE9PW4pYnJlYWs7aWYoMCE9PXImJnIhPT1uKXtlLmxhc3RQaW5nZWRUaW1lPXI7YnJlYWt9aWYoMTA3Mzc0MTgyMyE9PU1sP3I9MTAqKDEwNzM3NDE4MjEtTWwpLSRvKCk6MTA3Mzc0MTgyMz09PUZsP3I9MDoocj0xMCooMTA3Mzc0MTgyMS1GbCktNWUzLDA+KHI9KG89JG8oKSktcikmJihyPTApLChuPTEwKigxMDczNzQxODIxLW4pLW8pPChyPSgxMjA+cj8xMjA6NDgwPnI/NDgwOjEwODA+cj8xMDgwOjE5MjA+cj8xOTIwOjNlMz5yPzNlMzo0MzIwPnI/NDMyMDoxOTYwKl9sKHIvMTk2MCkpLXIpJiYocj1uKSksMTA8cil7ZS50aW1lb3V0SGFuZGxlPV9uKFBzLmJpbmQobnVsbCxlKSxyKTticmVha31QcyhlKTticmVhaztjYXNlIDU6aWYoMTA3Mzc0MTgyMyE9PUZsJiZudWxsIT09emwpe2k9Rmw7dmFyIGE9emw7aWYoMD49KHI9MHxhLmJ1c3lNaW5EdXJhdGlvbk1zKT9yPTA6KG89MHxhLmJ1c3lEZWxheU1zLHI9KGk9JG8oKS0oMTAqKDEwNzM3NDE4MjEtaSktKDB8YS50aW1lb3V0TXN8fDVlMykpKTw9bz8wOm8rci1pKSwxMDxyKXtWcyhlLG4pLGUudGltZW91dEhhbmRsZT1fbihQcy5iaW5kKG51bGwsZSkscik7YnJlYWt9fVBzKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzMjkpKX1pZihscyhlKSxlLmNhbGxiYWNrTm9kZT09PXQpcmV0dXJuIHNzLmJpbmQobnVsbCxlKX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gY3MoZSl7dmFyIHQ9ZS5sYXN0RXhwaXJlZFRpbWU7aWYodD0wIT09dD90OjEwNzM3NDE4MjMsMCE9KDQ4JkxsKSl0aHJvdyBFcnJvcihsKDMyNykpO2lmKF9zKCksZT09PURsJiZ0PT09Umx8fGZzKGUsdCksbnVsbCE9PU5sKXt2YXIgbj1MbDtMbHw9QWw7Zm9yKHZhciByPWdzKCk7Oyl0cnl7YnMoKTticmVha31jYXRjaChvKXtwcyhlLG8pfWlmKGFpKCksTGw9bixDbC5jdXJyZW50PXIsMT09PUJsKXRocm93IG49VWwsZnMoZSx0KSxWcyhlLHQpLGxzKGUpLG47aWYobnVsbCE9PU5sKXRocm93IEVycm9yKGwoMjYxKSk7ZS5maW5pc2hlZFdvcms9ZS5jdXJyZW50LmFsdGVybmF0ZSxlLmZpbmlzaGVkRXhwaXJhdGlvblRpbWU9dCxEbD1udWxsLFBzKGUpLGxzKGUpfXJldHVybiBudWxsfWZ1bmN0aW9uIHVzKGUsdCl7dmFyIG49TGw7TGx8PTE7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7MD09PShMbD1uKSYmWm8oKX19ZnVuY3Rpb24gZHMoZSx0KXt2YXIgbj1MbDtMbCY9LTIsTGx8PTg7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7MD09PShMbD1uKSYmWm8oKX19ZnVuY3Rpb24gZnMoZSx0KXtlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRFeHBpcmF0aW9uVGltZT0wO3ZhciBuPWUudGltZW91dEhhbmRsZTtpZigtMSE9PW4mJihlLnRpbWVvdXRIYW5kbGU9LTEsQ24obikpLG51bGwhPT1ObClmb3Iobj1ObC5yZXR1cm47bnVsbCE9PW47KXt2YXIgcj1uO3N3aXRjaChyLnRhZyl7Y2FzZSAxOm51bGwhPShyPXIudHlwZS5jaGlsZENvbnRleHRUeXBlcykmJnhvKCk7YnJlYWs7Y2FzZSAzOkZpKCksbW8odm8pLG1vKHlvKTticmVhaztjYXNlIDU6emkocik7YnJlYWs7Y2FzZSA0OkZpKCk7YnJlYWs7Y2FzZSAxMzpjYXNlIDE5Om1vKEhpKTticmVhaztjYXNlIDEwOmxpKHIpfW49bi5yZXR1cm59RGw9ZSxObD1ScyhlLmN1cnJlbnQsbnVsbCksUmw9dCxCbD1FbCxVbD1udWxsLE1sPUZsPTEwNzM3NDE4MjMsemw9bnVsbCxIbD0wLFZsPSExfWZ1bmN0aW9uIHBzKGUsdCl7Zm9yKDs7KXt0cnl7aWYoYWkoKSxHaS5jdXJyZW50PVBhLFlpKWZvcih2YXIgbj1xaS5tZW1vaXplZFN0YXRlO251bGwhPT1uOyl7dmFyIG89bi5xdWV1ZTtudWxsIT09byYmKG8ucGVuZGluZz1udWxsKSxuPW4ubmV4dH1pZihLaT0wLFhpPVFpPXFpPW51bGwsWWk9ITEsbnVsbD09PU5sfHxudWxsPT09TmwucmV0dXJuKXJldHVybiBCbD0xLFVsPXQsTmw9bnVsbDtlOnt2YXIgaT1lLGE9TmwucmV0dXJuLGw9Tmwscz10O2lmKHQ9UmwsbC5lZmZlY3RUYWd8PTIwNDgsbC5maXJzdEVmZmVjdD1sLmxhc3RFZmZlY3Q9bnVsbCxudWxsIT09cyYmXCJvYmplY3RcIj09PXIocykmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHMudGhlbil7dmFyIGM9cztpZigwPT0oMiZsLm1vZGUpKXt2YXIgdT1sLmFsdGVybmF0ZTt1PyhsLnVwZGF0ZVF1ZXVlPXUudXBkYXRlUXVldWUsbC5tZW1vaXplZFN0YXRlPXUubWVtb2l6ZWRTdGF0ZSxsLmV4cGlyYXRpb25UaW1lPXUuZXhwaXJhdGlvblRpbWUpOihsLnVwZGF0ZVF1ZXVlPW51bGwsbC5tZW1vaXplZFN0YXRlPW51bGwpfXZhciBkPTAhPSgxJkhpLmN1cnJlbnQpLGY9YTtkb3t2YXIgcDtpZihwPTEzPT09Zi50YWcpe3ZhciBnPWYubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZylwPW51bGwhPT1nLmRlaHlkcmF0ZWQ7ZWxzZXt2YXIgbT1mLm1lbW9pemVkUHJvcHM7cD12b2lkIDAhPT1tLmZhbGxiYWNrJiYoITAhPT1tLnVuc3RhYmxlX2F2b2lkVGhpc0ZhbGxiYWNrfHwhZCl9fWlmKHApe3ZhciBoPWYudXBkYXRlUXVldWU7aWYobnVsbD09PWgpe3ZhciBiPW5ldyBTZXQ7Yi5hZGQoYyksZi51cGRhdGVRdWV1ZT1ifWVsc2UgaC5hZGQoYyk7aWYoMD09KDImZi5tb2RlKSl7aWYoZi5lZmZlY3RUYWd8PTY0LGwuZWZmZWN0VGFnJj0tMjk4MSwxPT09bC50YWcpaWYobnVsbD09PWwuYWx0ZXJuYXRlKWwudGFnPTE3O2Vsc2V7dmFyIHk9Z2koMTA3Mzc0MTgyMyxudWxsKTt5LnRhZz0yLG1pKGwseSl9bC5leHBpcmF0aW9uVGltZT0xMDczNzQxODIzO2JyZWFrIGV9cz12b2lkIDAsbD10O3ZhciB2PWkucGluZ0NhY2hlO2lmKG51bGw9PT12Pyh2PWkucGluZ0NhY2hlPW5ldyBTbCxzPW5ldyBTZXQsdi5zZXQoYyxzKSk6dm9pZCAwPT09KHM9di5nZXQoYykpJiYocz1uZXcgU2V0LHYuc2V0KGMscykpLCFzLmhhcyhsKSl7cy5hZGQobCk7dmFyIHc9VHMuYmluZChudWxsLGksYyxsKTtjLnRoZW4odyx3KX1mLmVmZmVjdFRhZ3w9NDA5NixmLmV4cGlyYXRpb25UaW1lPXQ7YnJlYWsgZX1mPWYucmV0dXJufXdoaWxlKG51bGwhPT1mKTtzPUVycm9yKCh5ZShsLnR5cGUpfHxcIkEgUmVhY3QgY29tcG9uZW50XCIpK1wiIHN1c3BlbmRlZCB3aGlsZSByZW5kZXJpbmcsIGJ1dCBubyBmYWxsYmFjayBVSSB3YXMgc3BlY2lmaWVkLlxcblxcbkFkZCBhIDxTdXNwZW5zZSBmYWxsYmFjaz0uLi4+IGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIHRyZWUgdG8gcHJvdmlkZSBhIGxvYWRpbmcgaW5kaWNhdG9yIG9yIHBsYWNlaG9sZGVyIHRvIGRpc3BsYXkuXCIrdmUobCkpfTUhPT1CbCYmKEJsPTIpLHM9b2wocyxsKSxmPWE7ZG97c3dpdGNoKGYudGFnKXtjYXNlIDM6Yz1zLGYuZWZmZWN0VGFnfD00MDk2LGYuZXhwaXJhdGlvblRpbWU9dCxoaShmLFBsKGYsYyx0KSk7YnJlYWsgZTtjYXNlIDE6Yz1zO3ZhciBTPWYudHlwZSxQPWYuc3RhdGVOb2RlO2lmKDA9PSg2NCZmLmVmZmVjdFRhZykmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBTLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PVAmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFAuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09cWx8fCFxbC5oYXMoUCkpKSl7Zi5lZmZlY3RUYWd8PTQwOTYsZi5leHBpcmF0aW9uVGltZT10LGhpKGYseGwoZixjLHQpKTticmVhayBlfX1mPWYucmV0dXJufXdoaWxlKG51bGwhPT1mKX1ObD13cyhObCl9Y2F0Y2goeCl7dD14O2NvbnRpbnVlfWJyZWFrfX1mdW5jdGlvbiBncygpe3ZhciBlPUNsLmN1cnJlbnQ7cmV0dXJuIENsLmN1cnJlbnQ9UGEsbnVsbD09PWU/UGE6ZX1mdW5jdGlvbiBtcyhlLHQpe2U8RmwmJjI8ZSYmKEZsPWUpLG51bGwhPT10JiZlPE1sJiYyPGUmJihNbD1lLHpsPXQpfWZ1bmN0aW9uIGhzKGUpe2U+SGwmJihIbD1lKX1mdW5jdGlvbiBicygpe2Zvcig7bnVsbCE9PU5sOylObD12cyhObCl9ZnVuY3Rpb24geXMoKXtmb3IoO251bGwhPT1ObCYmIU1vKCk7KU5sPXZzKE5sKX1mdW5jdGlvbiB2cyhlKXt2YXIgdD1PbChlLmFsdGVybmF0ZSxlLFJsKTtyZXR1cm4gZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLG51bGw9PT10JiYodD13cyhlKSksa2wuY3VycmVudD1udWxsLHR9ZnVuY3Rpb24gd3MoZSl7Tmw9ZTtkb3t2YXIgdD1ObC5hbHRlcm5hdGU7aWYoZT1ObC5yZXR1cm4sMD09KDIwNDgmTmwuZWZmZWN0VGFnKSl7aWYodD1ubCh0LE5sLFJsKSwxPT09Umx8fDEhPT1ObC5jaGlsZEV4cGlyYXRpb25UaW1lKXtmb3IodmFyIG49MCxyPU5sLmNoaWxkO251bGwhPT1yOyl7dmFyIG89ci5leHBpcmF0aW9uVGltZSxpPXIuY2hpbGRFeHBpcmF0aW9uVGltZTtvPm4mJihuPW8pLGk+biYmKG49aSkscj1yLnNpYmxpbmd9TmwuY2hpbGRFeHBpcmF0aW9uVGltZT1ufWlmKG51bGwhPT10KXJldHVybiB0O251bGwhPT1lJiYwPT0oMjA0OCZlLmVmZmVjdFRhZykmJihudWxsPT09ZS5maXJzdEVmZmVjdCYmKGUuZmlyc3RFZmZlY3Q9TmwuZmlyc3RFZmZlY3QpLG51bGwhPT1ObC5sYXN0RWZmZWN0JiYobnVsbCE9PWUubGFzdEVmZmVjdCYmKGUubGFzdEVmZmVjdC5uZXh0RWZmZWN0PU5sLmZpcnN0RWZmZWN0KSxlLmxhc3RFZmZlY3Q9TmwubGFzdEVmZmVjdCksMTxObC5lZmZlY3RUYWcmJihudWxsIT09ZS5sYXN0RWZmZWN0P2UubGFzdEVmZmVjdC5uZXh0RWZmZWN0PU5sOmUuZmlyc3RFZmZlY3Q9TmwsZS5sYXN0RWZmZWN0PU5sKSl9ZWxzZXtpZihudWxsIT09KHQ9cmwoTmwpKSlyZXR1cm4gdC5lZmZlY3RUYWcmPTIwNDcsdDtudWxsIT09ZSYmKGUuZmlyc3RFZmZlY3Q9ZS5sYXN0RWZmZWN0PW51bGwsZS5lZmZlY3RUYWd8PTIwNDgpfWlmKG51bGwhPT0odD1ObC5zaWJsaW5nKSlyZXR1cm4gdDtObD1lfXdoaWxlKG51bGwhPT1ObCk7cmV0dXJuIEJsPT09RWwmJihCbD01KSxudWxsfWZ1bmN0aW9uIFNzKGUpe3ZhciB0PWUuZXhwaXJhdGlvblRpbWU7cmV0dXJuIHQ+KGU9ZS5jaGlsZEV4cGlyYXRpb25UaW1lKT90OmV9ZnVuY3Rpb24gUHMoZSl7dmFyIHQ9S28oKTtyZXR1cm4gUW8oOTkseHMuYmluZChudWxsLGUsdCkpLG51bGx9ZnVuY3Rpb24geHMoZSx0KXtkb3tfcygpfXdoaWxlKG51bGwhPT1YbCk7aWYoMCE9KDQ4JkxsKSl0aHJvdyBFcnJvcihsKDMyNykpO3ZhciBuPWUuZmluaXNoZWRXb3JrLHI9ZS5maW5pc2hlZEV4cGlyYXRpb25UaW1lO2lmKG51bGw9PT1uKXJldHVybiBudWxsO2lmKGUuZmluaXNoZWRXb3JrPW51bGwsZS5maW5pc2hlZEV4cGlyYXRpb25UaW1lPTAsbj09PWUuY3VycmVudCl0aHJvdyBFcnJvcihsKDE3NykpO2UuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja0V4cGlyYXRpb25UaW1lPTAsZS5jYWxsYmFja1ByaW9yaXR5PTkwLGUubmV4dEtub3duUGVuZGluZ0xldmVsPTA7dmFyIG89U3Mobik7aWYoZS5maXJzdFBlbmRpbmdUaW1lPW8scjw9ZS5sYXN0U3VzcGVuZGVkVGltZT9lLmZpcnN0U3VzcGVuZGVkVGltZT1lLmxhc3RTdXNwZW5kZWRUaW1lPWUubmV4dEtub3duUGVuZGluZ0xldmVsPTA6cjw9ZS5maXJzdFN1c3BlbmRlZFRpbWUmJihlLmZpcnN0U3VzcGVuZGVkVGltZT1yLTEpLHI8PWUubGFzdFBpbmdlZFRpbWUmJihlLmxhc3RQaW5nZWRUaW1lPTApLHI8PWUubGFzdEV4cGlyZWRUaW1lJiYoZS5sYXN0RXhwaXJlZFRpbWU9MCksZT09PURsJiYoTmw9RGw9bnVsbCxSbD0wKSwxPG4uZWZmZWN0VGFnP251bGwhPT1uLmxhc3RFZmZlY3Q/KG4ubGFzdEVmZmVjdC5uZXh0RWZmZWN0PW4sbz1uLmZpcnN0RWZmZWN0KTpvPW46bz1uLmZpcnN0RWZmZWN0LG51bGwhPT1vKXt2YXIgaT1MbDtMbHw9VGwsa2wuY3VycmVudD1udWxsLFNuPVF0O3ZhciBhPWJuKCk7aWYoeW4oYSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGEpdmFyIHM9e3N0YXJ0OmEuc2VsZWN0aW9uU3RhcnQsZW5kOmEuc2VsZWN0aW9uRW5kfTtlbHNlIGU6e3ZhciBjPShzPShzPWEub3duZXJEb2N1bWVudCkmJnMuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uJiZzLmdldFNlbGVjdGlvbigpO2lmKGMmJjAhPT1jLnJhbmdlQ291bnQpe3M9Yy5hbmNob3JOb2RlO3ZhciB1PWMuYW5jaG9yT2Zmc2V0LGQ9Yy5mb2N1c05vZGU7Yz1jLmZvY3VzT2Zmc2V0O3RyeXtzLm5vZGVUeXBlLGQubm9kZVR5cGV9Y2F0Y2goQyl7cz1udWxsO2JyZWFrIGV9dmFyIGY9MCxwPS0xLGc9LTEsbT0wLGg9MCxiPWEseT1udWxsO3Q6Zm9yKDs7KXtmb3IodmFyIHY7YiE9PXN8fDAhPT11JiYzIT09Yi5ub2RlVHlwZXx8KHA9Zit1KSxiIT09ZHx8MCE9PWMmJjMhPT1iLm5vZGVUeXBlfHwoZz1mK2MpLDM9PT1iLm5vZGVUeXBlJiYoZis9Yi5ub2RlVmFsdWUubGVuZ3RoKSxudWxsIT09KHY9Yi5maXJzdENoaWxkKTspeT1iLGI9djtmb3IoOzspe2lmKGI9PT1hKWJyZWFrIHQ7aWYoeT09PXMmJisrbT09PXUmJihwPWYpLHk9PT1kJiYrK2g9PT1jJiYoZz1mKSxudWxsIT09KHY9Yi5uZXh0U2libGluZykpYnJlYWs7eT0oYj15KS5wYXJlbnROb2RlfWI9dn1zPS0xPT09cHx8LTE9PT1nP251bGw6e3N0YXJ0OnAsZW5kOmd9fWVsc2Ugcz1udWxsfXM9c3x8e3N0YXJ0OjAsZW5kOjB9fWVsc2Ugcz1udWxsO1BuPXthY3RpdmVFbGVtZW50RGV0YWNoZWQ6bnVsbCxmb2N1c2VkRWxlbTphLHNlbGVjdGlvblJhbmdlOnN9LFF0PSExLEdsPW87ZG97dHJ5e09zKCl9Y2F0Y2goQyl7aWYobnVsbD09PUdsKXRocm93IEVycm9yKGwoMzMwKSk7QXMoR2wsQyksR2w9R2wubmV4dEVmZmVjdH19d2hpbGUobnVsbCE9PUdsKTtHbD1vO2Rve3RyeXtmb3IoYT1lLHM9dDtudWxsIT09R2w7KXt2YXIgdz1HbC5lZmZlY3RUYWc7aWYoMTYmdyYmVmUoR2wuc3RhdGVOb2RlLFwiXCIpLDEyOCZ3KXt2YXIgUz1HbC5hbHRlcm5hdGU7aWYobnVsbCE9PVMpe3ZhciBQPVMucmVmO251bGwhPT1QJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgUD9QKG51bGwpOlAuY3VycmVudD1udWxsKX19c3dpdGNoKDEwMzgmdyl7Y2FzZSAyOm1sKEdsKSxHbC5lZmZlY3RUYWcmPS0zO2JyZWFrO2Nhc2UgNjptbChHbCksR2wuZWZmZWN0VGFnJj0tMyx2bChHbC5hbHRlcm5hdGUsR2wpO2JyZWFrO2Nhc2UgMTAyNDpHbC5lZmZlY3RUYWcmPS0xMDI1O2JyZWFrO2Nhc2UgMTAyODpHbC5lZmZlY3RUYWcmPS0xMDI1LHZsKEdsLmFsdGVybmF0ZSxHbCk7YnJlYWs7Y2FzZSA0OnZsKEdsLmFsdGVybmF0ZSxHbCk7YnJlYWs7Y2FzZSA4OnlsKGEsdT1HbCxzKSxwbCh1KX1HbD1HbC5uZXh0RWZmZWN0fX1jYXRjaChDKXtpZihudWxsPT09R2wpdGhyb3cgRXJyb3IobCgzMzApKTtBcyhHbCxDKSxHbD1HbC5uZXh0RWZmZWN0fX13aGlsZShudWxsIT09R2wpO2lmKFA9UG4sUz1ibigpLHc9UC5mb2N1c2VkRWxlbSxzPVAuc2VsZWN0aW9uUmFuZ2UsUyE9PXcmJncmJncub3duZXJEb2N1bWVudCYmaG4ody5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx3KSl7bnVsbCE9PXMmJnluKHcpJiYoUz1zLnN0YXJ0LHZvaWQgMD09PShQPXMuZW5kKSYmKFA9UyksXCJzZWxlY3Rpb25TdGFydFwiaW4gdz8ody5zZWxlY3Rpb25TdGFydD1TLHcuc2VsZWN0aW9uRW5kPU1hdGgubWluKFAsdy52YWx1ZS5sZW5ndGgpKTooUD0oUz13Lm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmUy5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24mJihQPVAuZ2V0U2VsZWN0aW9uKCksdT13LnRleHRDb250ZW50Lmxlbmd0aCxhPU1hdGgubWluKHMuc3RhcnQsdSkscz12b2lkIDA9PT1zLmVuZD9hOk1hdGgubWluKHMuZW5kLHUpLCFQLmV4dGVuZCYmYT5zJiYodT1zLHM9YSxhPXUpLHU9bW4odyxhKSxkPW1uKHcscyksdSYmZCYmKDEhPT1QLnJhbmdlQ291bnR8fFAuYW5jaG9yTm9kZSE9PXUubm9kZXx8UC5hbmNob3JPZmZzZXQhPT11Lm9mZnNldHx8UC5mb2N1c05vZGUhPT1kLm5vZGV8fFAuZm9jdXNPZmZzZXQhPT1kLm9mZnNldCkmJigoUz1TLmNyZWF0ZVJhbmdlKCkpLnNldFN0YXJ0KHUubm9kZSx1Lm9mZnNldCksUC5yZW1vdmVBbGxSYW5nZXMoKSxhPnM/KFAuYWRkUmFuZ2UoUyksUC5leHRlbmQoZC5ub2RlLGQub2Zmc2V0KSk6KFMuc2V0RW5kKGQubm9kZSxkLm9mZnNldCksUC5hZGRSYW5nZShTKSkpKSksUz1bXTtmb3IoUD13O1A9UC5wYXJlbnROb2RlOykxPT09UC5ub2RlVHlwZSYmUy5wdXNoKHtlbGVtZW50OlAsbGVmdDpQLnNjcm9sbExlZnQsdG9wOlAuc2Nyb2xsVG9wfSk7Zm9yKFwiZnVuY3Rpb25cIj09dHlwZW9mIHcuZm9jdXMmJncuZm9jdXMoKSx3PTA7dzxTLmxlbmd0aDt3KyspKFA9U1t3XSkuZWxlbWVudC5zY3JvbGxMZWZ0PVAubGVmdCxQLmVsZW1lbnQuc2Nyb2xsVG9wPVAudG9wfVF0PSEhU24sUG49U249bnVsbCxlLmN1cnJlbnQ9bixHbD1vO2Rve3RyeXtmb3Iodz1lO251bGwhPT1HbDspe3ZhciB4PUdsLmVmZmVjdFRhZztpZigzNiZ4JiZkbCh3LEdsLmFsdGVybmF0ZSxHbCksMTI4Jngpe1M9dm9pZCAwO3ZhciBPPUdsLnJlZjtpZihudWxsIT09Tyl7dmFyIF89R2wuc3RhdGVOb2RlO0dsLnRhZyxTPV8sXCJmdW5jdGlvblwiPT10eXBlb2YgTz9PKFMpOk8uY3VycmVudD1TfX1HbD1HbC5uZXh0RWZmZWN0fX1jYXRjaChDKXtpZihudWxsPT09R2wpdGhyb3cgRXJyb3IobCgzMzApKTtBcyhHbCxDKSxHbD1HbC5uZXh0RWZmZWN0fX13aGlsZShudWxsIT09R2wpO0dsPW51bGwsem8oKSxMbD1pfWVsc2UgZS5jdXJyZW50PW47aWYoUWwpUWw9ITEsWGw9ZSxZbD10O2Vsc2UgZm9yKEdsPW87bnVsbCE9PUdsOyl0PUdsLm5leHRFZmZlY3QsR2wubmV4dEVmZmVjdD1udWxsLEdsPXQ7aWYoMD09PSh0PWUuZmlyc3RQZW5kaW5nVGltZSkmJihxbD1udWxsKSwxMDczNzQxODIzPT09dD9lPT09ZXM/SmwrKzooSmw9MCxlcz1lKTpKbD0wLFwiZnVuY3Rpb25cIj09dHlwZW9mIGpzJiZqcyhuLnN0YXRlTm9kZSxyKSxscyhlKSwkbCl0aHJvdyAkbD0hMSxlPUtsLEtsPW51bGwsZTtyZXR1cm4gMCE9KDgmTGwpfHxabygpLG51bGx9ZnVuY3Rpb24gT3MoKXtmb3IoO251bGwhPT1HbDspe3ZhciBlPUdsLmVmZmVjdFRhZzswIT0oMjU2JmUpJiZzbChHbC5hbHRlcm5hdGUsR2wpLDA9PSg1MTImZSl8fFFsfHwoUWw9ITAsWG8oOTcsKGZ1bmN0aW9uKCl7cmV0dXJuIF9zKCksbnVsbH0pKSksR2w9R2wubmV4dEVmZmVjdH19ZnVuY3Rpb24gX3MoKXtpZig5MCE9PVlsKXt2YXIgZT05NzxZbD85NzpZbDtyZXR1cm4gWWw9OTAsUW8oZSxDcyl9fWZ1bmN0aW9uIENzKCl7aWYobnVsbD09PVhsKXJldHVybiExO3ZhciBlPVhsO2lmKFhsPW51bGwsMCE9KDQ4JkxsKSl0aHJvdyBFcnJvcihsKDMzMSkpO3ZhciB0PUxsO2ZvcihMbHw9VGwsZT1lLmN1cnJlbnQuZmlyc3RFZmZlY3Q7bnVsbCE9PWU7KXt0cnl7dmFyIG49ZTtpZigwIT0oNTEyJm4uZWZmZWN0VGFnKSlzd2l0Y2gobi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Y2FzZSAyMjpjbCg1LG4pLHVsKDUsbil9fWNhdGNoKHIpe2lmKG51bGw9PT1lKXRocm93IEVycm9yKGwoMzMwKSk7QXMoZSxyKX1uPWUubmV4dEVmZmVjdCxlLm5leHRFZmZlY3Q9bnVsbCxlPW59cmV0dXJuIExsPXQsWm8oKSwhMH1mdW5jdGlvbiBrcyhlLHQsbil7bWkoZSx0PVBsKGUsdD1vbChuLHQpLDEwNzM3NDE4MjMpKSxudWxsIT09KGU9aXMoZSwxMDczNzQxODIzKSkmJmxzKGUpfWZ1bmN0aW9uIEFzKGUsdCl7aWYoMz09PWUudGFnKWtzKGUsZSx0KTtlbHNlIGZvcih2YXIgbj1lLnJldHVybjtudWxsIT09bjspe2lmKDM9PT1uLnRhZyl7a3MobixlLHQpO2JyZWFrfWlmKDE9PT1uLnRhZyl7dmFyIHI9bi5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8XCJmdW5jdGlvblwiPT10eXBlb2Ygci5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1xbHx8IXFsLmhhcyhyKSkpe21pKG4sZT14bChuLGU9b2wodCxlKSwxMDczNzQxODIzKSksbnVsbCE9PShuPWlzKG4sMTA3Mzc0MTgyMykpJiZscyhuKTticmVha319bj1uLnJldHVybn19ZnVuY3Rpb24gVHMoZSx0LG4pe3ZhciByPWUucGluZ0NhY2hlO251bGwhPT1yJiZyLmRlbGV0ZSh0KSxEbD09PWUmJlJsPT09bj9CbD09PUlsfHxCbD09PWpsJiYxMDczNzQxODIzPT09RmwmJiRvKCktV2w8NTAwP2ZzKGUsUmwpOlZsPSEwOkhzKGUsbikmJigwIT09KHQ9ZS5sYXN0UGluZ2VkVGltZSkmJnQ8bnx8KGUubGFzdFBpbmdlZFRpbWU9bixscyhlKSkpfWZ1bmN0aW9uIEVzKGUsdCl7dmFyIG49ZS5zdGF0ZU5vZGU7bnVsbCE9PW4mJm4uZGVsZXRlKHQpLDA9PT0odD0wKSYmKHQ9cnModD1ucygpLGUsbnVsbCkpLG51bGwhPT0oZT1pcyhlLHQpKSYmbHMoZSl9T2w9ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPXQuZXhwaXJhdGlvblRpbWU7aWYobnVsbCE9PWUpe3ZhciBpPXQucGVuZGluZ1Byb3BzO2lmKGUubWVtb2l6ZWRQcm9wcyE9PWl8fHZvLmN1cnJlbnQpUmE9ITA7ZWxzZXtpZihvPG4pe3N3aXRjaChSYT0hMSx0LnRhZyl7Y2FzZSAzOkdhKHQpLERhKCk7YnJlYWs7Y2FzZSA1OmlmKE1pKHQpLDQmdC5tb2RlJiYxIT09biYmaS5oaWRkZW4pcmV0dXJuIHQuZXhwaXJhdGlvblRpbWU9dC5jaGlsZEV4cGlyYXRpb25UaW1lPTEsbnVsbDticmVhaztjYXNlIDE6UG8odC50eXBlKSYmQ28odCk7YnJlYWs7Y2FzZSA0OlVpKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDpvPXQubWVtb2l6ZWRQcm9wcy52YWx1ZSxpPXQudHlwZS5fY29udGV4dCxobyhuaSxpLl9jdXJyZW50VmFsdWUpLGkuX2N1cnJlbnRWYWx1ZT1vO2JyZWFrO2Nhc2UgMTM6aWYobnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSlyZXR1cm4gMCE9PShvPXQuY2hpbGQuY2hpbGRFeHBpcmF0aW9uVGltZSkmJm8+PW4/WGEoZSx0LG4pOihobyhIaSwxJkhpLmN1cnJlbnQpLG51bGwhPT0odD1lbChlLHQsbikpP3Quc2libGluZzpudWxsKTtobyhIaSwxJkhpLmN1cnJlbnQpO2JyZWFrO2Nhc2UgMTk6aWYobz10LmNoaWxkRXhwaXJhdGlvblRpbWU+PW4sMCE9KDY0JmUuZWZmZWN0VGFnKSl7aWYobylyZXR1cm4gSmEoZSx0LG4pO3QuZWZmZWN0VGFnfD02NH1pZihudWxsIT09KGk9dC5tZW1vaXplZFN0YXRlKSYmKGkucmVuZGVyaW5nPW51bGwsaS50YWlsPW51bGwpLGhvKEhpLEhpLmN1cnJlbnQpLCFvKXJldHVybiBudWxsfXJldHVybiBlbChlLHQsbil9UmE9ITF9fWVsc2UgUmE9ITE7c3dpdGNoKHQuZXhwaXJhdGlvblRpbWU9MCx0LnRhZyl7Y2FzZSAyOmlmKG89dC50eXBlLG51bGwhPT1lJiYoZS5hbHRlcm5hdGU9bnVsbCx0LmFsdGVybmF0ZT1udWxsLHQuZWZmZWN0VGFnfD0yKSxlPXQucGVuZGluZ1Byb3BzLGk9U28odCx5by5jdXJyZW50KSxjaSh0LG4pLGk9ZWEobnVsbCx0LG8sZSxpLG4pLHQuZWZmZWN0VGFnfD0xLFwib2JqZWN0XCI9PT1yKGkpJiZudWxsIT09aSYmXCJmdW5jdGlvblwiPT10eXBlb2YgaS5yZW5kZXImJnZvaWQgMD09PWkuJCR0eXBlb2Ype2lmKHQudGFnPTEsdC5tZW1vaXplZFN0YXRlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLFBvKG8pKXt2YXIgYT0hMDtDbyh0KX1lbHNlIGE9ITE7dC5tZW1vaXplZFN0YXRlPW51bGwhPT1pLnN0YXRlJiZ2b2lkIDAhPT1pLnN0YXRlP2kuc3RhdGU6bnVsbCxmaSh0KTt2YXIgcz1vLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcImZ1bmN0aW9uXCI9PXR5cGVvZiBzJiZTaSh0LG8scyxlKSxpLnVwZGF0ZXI9UGksdC5zdGF0ZU5vZGU9aSxpLl9yZWFjdEludGVybmFsRmliZXI9dCxDaSh0LG8sZSxuKSx0PVdhKG51bGwsdCxvLCEwLGEsbil9ZWxzZSB0LnRhZz0wLEJhKG51bGwsdCxpLG4pLHQ9dC5jaGlsZDtyZXR1cm4gdDtjYXNlIDE2OmU6e2lmKGk9dC5lbGVtZW50VHlwZSxudWxsIT09ZSYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmVmZmVjdFRhZ3w9MiksZT10LnBlbmRpbmdQcm9wcyxmdW5jdGlvbihlKXtpZigtMT09PWUuX3N0YXR1cyl7ZS5fc3RhdHVzPTA7dmFyIHQ9ZS5fY3Rvcjt0PXQoKSxlLl9yZXN1bHQ9dCx0LnRoZW4oKGZ1bmN0aW9uKHQpezA9PT1lLl9zdGF0dXMmJih0PXQuZGVmYXVsdCxlLl9zdGF0dXM9MSxlLl9yZXN1bHQ9dCl9KSwoZnVuY3Rpb24odCl7MD09PWUuX3N0YXR1cyYmKGUuX3N0YXR1cz0yLGUuX3Jlc3VsdD10KX0pKX19KGkpLDEhPT1pLl9zdGF0dXMpdGhyb3cgaS5fcmVzdWx0O3N3aXRjaChpPWkuX3Jlc3VsdCx0LnR5cGU9aSxhPXQudGFnPWZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpcmV0dXJuIE5zKGUpPzE6MDtpZihudWxsIT1lKXtpZigoZT1lLiQkdHlwZW9mKT09PXVlKXJldHVybiAxMTtpZihlPT09cGUpcmV0dXJuIDE0fXJldHVybiAyfShpKSxlPXRpKGksZSksYSl7Y2FzZSAwOnQ9SGEobnVsbCx0LGksZSxuKTticmVhayBlO2Nhc2UgMTp0PVZhKG51bGwsdCxpLGUsbik7YnJlYWsgZTtjYXNlIDExOnQ9VWEobnVsbCx0LGksZSxuKTticmVhayBlO2Nhc2UgMTQ6dD1GYShudWxsLHQsaSx0aShpLnR5cGUsZSksbyxuKTticmVhayBlfXRocm93IEVycm9yKGwoMzA2LGksXCJcIikpfXJldHVybiB0O2Nhc2UgMDpyZXR1cm4gbz10LnR5cGUsaT10LnBlbmRpbmdQcm9wcyxIYShlLHQsbyxpPXQuZWxlbWVudFR5cGU9PT1vP2k6dGkobyxpKSxuKTtjYXNlIDE6cmV0dXJuIG89dC50eXBlLGk9dC5wZW5kaW5nUHJvcHMsVmEoZSx0LG8saT10LmVsZW1lbnRUeXBlPT09bz9pOnRpKG8saSksbik7Y2FzZSAzOmlmKEdhKHQpLG89dC51cGRhdGVRdWV1ZSxudWxsPT09ZXx8bnVsbD09PW8pdGhyb3cgRXJyb3IobCgyODIpKTtpZihvPXQucGVuZGluZ1Byb3BzLGk9bnVsbCE9PShpPXQubWVtb2l6ZWRTdGF0ZSk/aS5lbGVtZW50Om51bGwscGkoZSx0KSxiaSh0LG8sbnVsbCxuKSwobz10Lm1lbW9pemVkU3RhdGUuZWxlbWVudCk9PT1pKURhKCksdD1lbChlLHQsbik7ZWxzZXtpZigoaT10LnN0YXRlTm9kZS5oeWRyYXRlKSYmKGthPWtuKHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCksQ2E9dCxpPUFhPSEwKSxpKWZvcihuPUlpKHQsbnVsbCxvLG4pLHQuY2hpbGQ9bjtuOyluLmVmZmVjdFRhZz0tMyZuLmVmZmVjdFRhZ3wxMDI0LG49bi5zaWJsaW5nO2Vsc2UgQmEoZSx0LG8sbiksRGEoKTt0PXQuY2hpbGR9cmV0dXJuIHQ7Y2FzZSA1OnJldHVybiBNaSh0KSxudWxsPT09ZSYmamEodCksbz10LnR5cGUsaT10LnBlbmRpbmdQcm9wcyxhPW51bGwhPT1lP2UubWVtb2l6ZWRQcm9wczpudWxsLHM9aS5jaGlsZHJlbixPbihvLGkpP3M9bnVsbDpudWxsIT09YSYmT24obyxhKSYmKHQuZWZmZWN0VGFnfD0xNiksemEoZSx0KSw0JnQubW9kZSYmMSE9PW4mJmkuaGlkZGVuPyh0LmV4cGlyYXRpb25UaW1lPXQuY2hpbGRFeHBpcmF0aW9uVGltZT0xLHQ9bnVsbCk6KEJhKGUsdCxzLG4pLHQ9dC5jaGlsZCksdDtjYXNlIDY6cmV0dXJuIG51bGw9PT1lJiZqYSh0KSxudWxsO2Nhc2UgMTM6cmV0dXJuIFhhKGUsdCxuKTtjYXNlIDQ6cmV0dXJuIFVpKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksbz10LnBlbmRpbmdQcm9wcyxudWxsPT09ZT90LmNoaWxkPWppKHQsbnVsbCxvLG4pOkJhKGUsdCxvLG4pLHQuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gbz10LnR5cGUsaT10LnBlbmRpbmdQcm9wcyxVYShlLHQsbyxpPXQuZWxlbWVudFR5cGU9PT1vP2k6dGkobyxpKSxuKTtjYXNlIDc6cmV0dXJuIEJhKGUsdCx0LnBlbmRpbmdQcm9wcyxuKSx0LmNoaWxkO2Nhc2UgODpjYXNlIDEyOnJldHVybiBCYShlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDEwOmU6e289dC50eXBlLl9jb250ZXh0LGk9dC5wZW5kaW5nUHJvcHMscz10Lm1lbW9pemVkUHJvcHMsYT1pLnZhbHVlO3ZhciBjPXQudHlwZS5fY29udGV4dDtpZihobyhuaSxjLl9jdXJyZW50VmFsdWUpLGMuX2N1cnJlbnRWYWx1ZT1hLG51bGwhPT1zKWlmKGM9cy52YWx1ZSwwPT09KGE9VnIoYyxhKT8wOjB8KFwiZnVuY3Rpb25cIj09dHlwZW9mIG8uX2NhbGN1bGF0ZUNoYW5nZWRCaXRzP28uX2NhbGN1bGF0ZUNoYW5nZWRCaXRzKGMsYSk6MTA3Mzc0MTgyMykpKXtpZihzLmNoaWxkcmVuPT09aS5jaGlsZHJlbiYmIXZvLmN1cnJlbnQpe3Q9ZWwoZSx0LG4pO2JyZWFrIGV9fWVsc2UgZm9yKG51bGwhPT0oYz10LmNoaWxkKSYmKGMucmV0dXJuPXQpO251bGwhPT1jOyl7dmFyIHU9Yy5kZXBlbmRlbmNpZXM7aWYobnVsbCE9PXUpe3M9Yy5jaGlsZDtmb3IodmFyIGQ9dS5maXJzdENvbnRleHQ7bnVsbCE9PWQ7KXtpZihkLmNvbnRleHQ9PT1vJiYwIT0oZC5vYnNlcnZlZEJpdHMmYSkpezE9PT1jLnRhZyYmKChkPWdpKG4sbnVsbCkpLnRhZz0yLG1pKGMsZCkpLGMuZXhwaXJhdGlvblRpbWU8biYmKGMuZXhwaXJhdGlvblRpbWU9biksbnVsbCE9PShkPWMuYWx0ZXJuYXRlKSYmZC5leHBpcmF0aW9uVGltZTxuJiYoZC5leHBpcmF0aW9uVGltZT1uKSxzaShjLnJldHVybixuKSx1LmV4cGlyYXRpb25UaW1lPG4mJih1LmV4cGlyYXRpb25UaW1lPW4pO2JyZWFrfWQ9ZC5uZXh0fX1lbHNlIHM9MTA9PT1jLnRhZyYmYy50eXBlPT09dC50eXBlP251bGw6Yy5jaGlsZDtpZihudWxsIT09cylzLnJldHVybj1jO2Vsc2UgZm9yKHM9YztudWxsIT09czspe2lmKHM9PT10KXtzPW51bGw7YnJlYWt9aWYobnVsbCE9PShjPXMuc2libGluZykpe2MucmV0dXJuPXMucmV0dXJuLHM9YzticmVha31zPXMucmV0dXJufWM9c31CYShlLHQsaS5jaGlsZHJlbixuKSx0PXQuY2hpbGR9cmV0dXJuIHQ7Y2FzZSA5OnJldHVybiBpPXQudHlwZSxvPShhPXQucGVuZGluZ1Byb3BzKS5jaGlsZHJlbixjaSh0LG4pLG89byhpPXVpKGksYS51bnN0YWJsZV9vYnNlcnZlZEJpdHMpKSx0LmVmZmVjdFRhZ3w9MSxCYShlLHQsbyxuKSx0LmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGE9dGkoaT10LnR5cGUsdC5wZW5kaW5nUHJvcHMpLEZhKGUsdCxpLGE9dGkoaS50eXBlLGEpLG8sbik7Y2FzZSAxNTpyZXR1cm4gTWEoZSx0LHQudHlwZSx0LnBlbmRpbmdQcm9wcyxvLG4pO2Nhc2UgMTc6cmV0dXJuIG89dC50eXBlLGk9dC5wZW5kaW5nUHJvcHMsaT10LmVsZW1lbnRUeXBlPT09bz9pOnRpKG8saSksbnVsbCE9PWUmJihlLmFsdGVybmF0ZT1udWxsLHQuYWx0ZXJuYXRlPW51bGwsdC5lZmZlY3RUYWd8PTIpLHQudGFnPTEsUG8obyk/KGU9ITAsQ28odCkpOmU9ITEsY2kodCxuKSxPaSh0LG8saSksQ2kodCxvLGksbiksV2EobnVsbCx0LG8sITAsZSxuKTtjYXNlIDE5OnJldHVybiBKYShlLHQsbil9dGhyb3cgRXJyb3IobCgxNTYsdC50YWcpKX07dmFyIGpzPW51bGwsSXM9bnVsbDtmdW5jdGlvbiBMcyhlLHQsbixyKXt0aGlzLnRhZz1lLHRoaXMua2V5PW4sdGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbCx0aGlzLmluZGV4PTAsdGhpcy5yZWY9bnVsbCx0aGlzLnBlbmRpbmdQcm9wcz10LHRoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsLHRoaXMubW9kZT1yLHRoaXMuZWZmZWN0VGFnPTAsdGhpcy5sYXN0RWZmZWN0PXRoaXMuZmlyc3RFZmZlY3Q9dGhpcy5uZXh0RWZmZWN0PW51bGwsdGhpcy5jaGlsZEV4cGlyYXRpb25UaW1lPXRoaXMuZXhwaXJhdGlvblRpbWU9MCx0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIERzKGUsdCxuLHIpe3JldHVybiBuZXcgTHMoZSx0LG4scil9ZnVuY3Rpb24gTnMoZSl7cmV0dXJuISghKGU9ZS5wcm90b3R5cGUpfHwhZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBScyhlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlO3JldHVybiBudWxsPT09bj8oKG49RHMoZS50YWcsdCxlLmtleSxlLm1vZGUpKS5lbGVtZW50VHlwZT1lLmVsZW1lbnRUeXBlLG4udHlwZT1lLnR5cGUsbi5zdGF0ZU5vZGU9ZS5zdGF0ZU5vZGUsbi5hbHRlcm5hdGU9ZSxlLmFsdGVybmF0ZT1uKToobi5wZW5kaW5nUHJvcHM9dCxuLmVmZmVjdFRhZz0wLG4ubmV4dEVmZmVjdD1udWxsLG4uZmlyc3RFZmZlY3Q9bnVsbCxuLmxhc3RFZmZlY3Q9bnVsbCksbi5jaGlsZEV4cGlyYXRpb25UaW1lPWUuY2hpbGRFeHBpcmF0aW9uVGltZSxuLmV4cGlyYXRpb25UaW1lPWUuZXhwaXJhdGlvblRpbWUsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdD1lLmRlcGVuZGVuY2llcyxuLmRlcGVuZGVuY2llcz1udWxsPT09dD9udWxsOntleHBpcmF0aW9uVGltZTp0LmV4cGlyYXRpb25UaW1lLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dCxyZXNwb25kZXJzOnQucmVzcG9uZGVyc30sbi5zaWJsaW5nPWUuc2libGluZyxuLmluZGV4PWUuaW5kZXgsbi5yZWY9ZS5yZWYsbn1mdW5jdGlvbiBCcyhlLHQsbixvLGksYSl7dmFyIHM9MjtpZihvPWUsXCJmdW5jdGlvblwiPT10eXBlb2YgZSlOcyhlKSYmKHM9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT10eXBlb2YgZSlzPTU7ZWxzZSBlOnN3aXRjaChlKXtjYXNlIG9lOnJldHVybiBVcyhuLmNoaWxkcmVuLGksYSx0KTtjYXNlIGNlOnM9OCxpfD03O2JyZWFrO2Nhc2UgaWU6cz04LGl8PTE7YnJlYWs7Y2FzZSBhZTpyZXR1cm4oZT1EcygxMixuLHQsOHxpKSkuZWxlbWVudFR5cGU9YWUsZS50eXBlPWFlLGUuZXhwaXJhdGlvblRpbWU9YSxlO2Nhc2UgZGU6cmV0dXJuKGU9RHMoMTMsbix0LGkpKS50eXBlPWRlLGUuZWxlbWVudFR5cGU9ZGUsZS5leHBpcmF0aW9uVGltZT1hLGU7Y2FzZSBmZTpyZXR1cm4oZT1EcygxOSxuLHQsaSkpLmVsZW1lbnRUeXBlPWZlLGUuZXhwaXJhdGlvblRpbWU9YSxlO2RlZmF1bHQ6aWYoXCJvYmplY3RcIj09PXIoZSkmJm51bGwhPT1lKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIGxlOnM9MTA7YnJlYWsgZTtjYXNlIHNlOnM9OTticmVhayBlO2Nhc2UgdWU6cz0xMTticmVhayBlO2Nhc2UgcGU6cz0xNDticmVhayBlO2Nhc2UgZ2U6cz0xNixvPW51bGw7YnJlYWsgZTtjYXNlIG1lOnM9MjI7YnJlYWsgZX10aHJvdyBFcnJvcihsKDEzMCxudWxsPT1lP2U6cihlKSxcIlwiKSl9cmV0dXJuKHQ9RHMocyxuLHQsaSkpLmVsZW1lbnRUeXBlPWUsdC50eXBlPW8sdC5leHBpcmF0aW9uVGltZT1hLHR9ZnVuY3Rpb24gVXMoZSx0LG4scil7cmV0dXJuKGU9RHMoNyxlLHIsdCkpLmV4cGlyYXRpb25UaW1lPW4sZX1mdW5jdGlvbiBGcyhlLHQsbil7cmV0dXJuKGU9RHMoNixlLG51bGwsdCkpLmV4cGlyYXRpb25UaW1lPW4sZX1mdW5jdGlvbiBNcyhlLHQsbil7cmV0dXJuKHQ9RHMoNCxudWxsIT09ZS5jaGlsZHJlbj9lLmNoaWxkcmVuOltdLGUua2V5LHQpKS5leHBpcmF0aW9uVGltZT1uLHQuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmUuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjplLmltcGxlbWVudGF0aW9ufSx0fWZ1bmN0aW9uIHpzKGUsdCxuKXt0aGlzLnRhZz10LHRoaXMuY3VycmVudD1udWxsLHRoaXMuY29udGFpbmVySW5mbz1lLHRoaXMucGluZ0NhY2hlPXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGwsdGhpcy5maW5pc2hlZEV4cGlyYXRpb25UaW1lPTAsdGhpcy5maW5pc2hlZFdvcms9bnVsbCx0aGlzLnRpbWVvdXRIYW5kbGU9LTEsdGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9bnVsbCx0aGlzLmh5ZHJhdGU9bix0aGlzLmNhbGxiYWNrTm9kZT1udWxsLHRoaXMuY2FsbGJhY2tQcmlvcml0eT05MCx0aGlzLmxhc3RFeHBpcmVkVGltZT10aGlzLmxhc3RQaW5nZWRUaW1lPXRoaXMubmV4dEtub3duUGVuZGluZ0xldmVsPXRoaXMubGFzdFN1c3BlbmRlZFRpbWU9dGhpcy5maXJzdFN1c3BlbmRlZFRpbWU9dGhpcy5maXJzdFBlbmRpbmdUaW1lPTB9ZnVuY3Rpb24gSHMoZSx0KXt2YXIgbj1lLmZpcnN0U3VzcGVuZGVkVGltZTtyZXR1cm4gZT1lLmxhc3RTdXNwZW5kZWRUaW1lLDAhPT1uJiZuPj10JiZlPD10fWZ1bmN0aW9uIFZzKGUsdCl7dmFyIG49ZS5maXJzdFN1c3BlbmRlZFRpbWUscj1lLmxhc3RTdXNwZW5kZWRUaW1lO248dCYmKGUuZmlyc3RTdXNwZW5kZWRUaW1lPXQpLChyPnR8fDA9PT1uKSYmKGUubGFzdFN1c3BlbmRlZFRpbWU9dCksdDw9ZS5sYXN0UGluZ2VkVGltZSYmKGUubGFzdFBpbmdlZFRpbWU9MCksdDw9ZS5sYXN0RXhwaXJlZFRpbWUmJihlLmxhc3RFeHBpcmVkVGltZT0wKX1mdW5jdGlvbiBXcyhlLHQpe3Q+ZS5maXJzdFBlbmRpbmdUaW1lJiYoZS5maXJzdFBlbmRpbmdUaW1lPXQpO3ZhciBuPWUuZmlyc3RTdXNwZW5kZWRUaW1lOzAhPT1uJiYodD49bj9lLmZpcnN0U3VzcGVuZGVkVGltZT1lLmxhc3RTdXNwZW5kZWRUaW1lPWUubmV4dEtub3duUGVuZGluZ0xldmVsPTA6dD49ZS5sYXN0U3VzcGVuZGVkVGltZSYmKGUubGFzdFN1c3BlbmRlZFRpbWU9dCsxKSx0PmUubmV4dEtub3duUGVuZGluZ0xldmVsJiYoZS5uZXh0S25vd25QZW5kaW5nTGV2ZWw9dCkpfWZ1bmN0aW9uIEdzKGUsdCl7dmFyIG49ZS5sYXN0RXhwaXJlZFRpbWU7KDA9PT1ufHxuPnQpJiYoZS5sYXN0RXhwaXJlZFRpbWU9dCl9ZnVuY3Rpb24gJHMoZSx0LG4scil7dmFyIG89dC5jdXJyZW50LGk9bnMoKSxhPXZpLnN1c3BlbnNlO2k9cnMoaSxvLGEpO2U6aWYobil7dDp7aWYobnQobj1uLl9yZWFjdEludGVybmFsRmliZXIpIT09bnx8MSE9PW4udGFnKXRocm93IEVycm9yKGwoMTcwKSk7dmFyIHM9bjtkb3tzd2l0Y2gocy50YWcpe2Nhc2UgMzpzPXMuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgdDtjYXNlIDE6aWYoUG8ocy50eXBlKSl7cz1zLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayB0fX1zPXMucmV0dXJufXdoaWxlKG51bGwhPT1zKTt0aHJvdyBFcnJvcihsKDE3MSkpfWlmKDE9PT1uLnRhZyl7dmFyIGM9bi50eXBlO2lmKFBvKGMpKXtuPV9vKG4sYyxzKTticmVhayBlfX1uPXN9ZWxzZSBuPWJvO3JldHVybiBudWxsPT09dC5jb250ZXh0P3QuY29udGV4dD1uOnQucGVuZGluZ0NvbnRleHQ9biwodD1naShpLGEpKS5wYXlsb2FkPXtlbGVtZW50OmV9LG51bGwhPT0ocj12b2lkIDA9PT1yP251bGw6cikmJih0LmNhbGxiYWNrPXIpLG1pKG8sdCksb3MobyxpKSxpfWZ1bmN0aW9uIEtzKGUpe3JldHVybihlPWUuY3VycmVudCkuY2hpbGQ/KGUuY2hpbGQudGFnLGUuY2hpbGQuc3RhdGVOb2RlKTpudWxsfWZ1bmN0aW9uIHFzKGUsdCl7bnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT1lLmRlaHlkcmF0ZWQmJmUucmV0cnlUaW1lPHQmJihlLnJldHJ5VGltZT10KX1mdW5jdGlvbiBRcyhlLHQpe3FzKGUsdCksKGU9ZS5hbHRlcm5hdGUpJiZxcyhlLHQpfWZ1bmN0aW9uIFhzKGUsdCxuKXt2YXIgcj1uZXcgenMoZSx0LG49bnVsbCE9biYmITA9PT1uLmh5ZHJhdGUpLG89RHMoMyxudWxsLG51bGwsMj09PXQ/NzoxPT09dD8zOjApO3IuY3VycmVudD1vLG8uc3RhdGVOb2RlPXIsZmkobyksZVtJbl09ci5jdXJyZW50LG4mJjAhPT10JiZmdW5jdGlvbihlLHQpe3ZhciBuPXR0KHQpO1R0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2J0KGUsdCxuKX0pKSxFdC5mb3JFYWNoKChmdW5jdGlvbihlKXtidChlLHQsbil9KSl9KDAsOT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQpLHRoaXMuX2ludGVybmFsUm9vdD1yfWZ1bmN0aW9uIFlzKGUpe3JldHVybiEoIWV8fDEhPT1lLm5vZGVUeXBlJiY5IT09ZS5ub2RlVHlwZSYmMTEhPT1lLm5vZGVUeXBlJiYoOCE9PWUubm9kZVR5cGV8fFwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlIFwiIT09ZS5ub2RlVmFsdWUpKX1mdW5jdGlvbiBacyhlLHQsbixyLG8pe3ZhciBpPW4uX3JlYWN0Um9vdENvbnRhaW5lcjtpZihpKXt2YXIgYT1pLl9pbnRlcm5hbFJvb3Q7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbyl7dmFyIGw9bztvPWZ1bmN0aW9uKCl7dmFyIGU9S3MoYSk7bC5jYWxsKGUpfX0kcyh0LGEsZSxvKX1lbHNle2lmKGk9bi5fcmVhY3RSb290Q29udGFpbmVyPWZ1bmN0aW9uKGUsdCl7aWYodHx8KHQ9ISghKHQ9ZT85PT09ZS5ub2RlVHlwZT9lLmRvY3VtZW50RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbCl8fDEhPT10Lm5vZGVUeXBlfHwhdC5oYXNBdHRyaWJ1dGUoXCJkYXRhLXJlYWN0cm9vdFwiKSkpLCF0KWZvcih2YXIgbjtuPWUubGFzdENoaWxkOyllLnJlbW92ZUNoaWxkKG4pO3JldHVybiBuZXcgWHMoZSwwLHQ/e2h5ZHJhdGU6ITB9OnZvaWQgMCl9KG4sciksYT1pLl9pbnRlcm5hbFJvb3QsXCJmdW5jdGlvblwiPT10eXBlb2Ygbyl7dmFyIHM9bztvPWZ1bmN0aW9uKCl7dmFyIGU9S3MoYSk7cy5jYWxsKGUpfX1kcygoZnVuY3Rpb24oKXskcyh0LGEsZSxvKX0pKX1yZXR1cm4gS3MoYSl9ZnVuY3Rpb24gSnMoZSx0LG4pe3ZhciByPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjpyZSxrZXk6bnVsbD09cj9udWxsOlwiXCIrcixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpufX1mdW5jdGlvbiBlYyhlLHQpe3ZhciBuPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFZcyh0KSl0aHJvdyBFcnJvcihsKDIwMCkpO3JldHVybiBKcyhlLHQsbnVsbCxuKX1Ycy5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpeyRzKGUsdGhpcy5faW50ZXJuYWxSb290LG51bGwsbnVsbCl9LFhzLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW50ZXJuYWxSb290LHQ9ZS5jb250YWluZXJJbmZvOyRzKG51bGwsZSxudWxsLChmdW5jdGlvbigpe3RbSW5dPW51bGx9KSl9LHl0PWZ1bmN0aW9uKGUpe2lmKDEzPT09ZS50YWcpe3ZhciB0PWVpKG5zKCksMTUwLDEwMCk7b3MoZSx0KSxRcyhlLHQpfX0sdnQ9ZnVuY3Rpb24oZSl7MTM9PT1lLnRhZyYmKG9zKGUsMyksUXMoZSwzKSl9LHd0PWZ1bmN0aW9uKGUpe2lmKDEzPT09ZS50YWcpe3ZhciB0PW5zKCk7b3MoZSx0PXJzKHQsZSxudWxsKSksUXMoZSx0KX19LFQ9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh0KXtjYXNlXCJpbnB1dFwiOmlmKGtlKGUsbiksdD1uLm5hbWUsXCJyYWRpb1wiPT09bi50eXBlJiZudWxsIT10KXtmb3Iobj1lO24ucGFyZW50Tm9kZTspbj1uLnBhcmVudE5vZGU7Zm9yKG49bi5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbbmFtZT1cIitKU09OLnN0cmluZ2lmeShcIlwiK3QpKyddW3R5cGU9XCJyYWRpb1wiXScpLHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTtpZihyIT09ZSYmci5mb3JtPT09ZS5mb3JtKXt2YXIgbz1SbihyKTtpZighbyl0aHJvdyBFcnJvcihsKDkwKSk7eGUociksa2UocixvKX19fWJyZWFrO2Nhc2VcInRleHRhcmVhXCI6RGUoZSxuKTticmVhaztjYXNlXCJzZWxlY3RcIjpudWxsIT0odD1uLnZhbHVlKSYmamUoZSwhIW4ubXVsdGlwbGUsdCwhMSl9fSxOPXVzLFI9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1MbDtMbHw9NDt0cnl7cmV0dXJuIFFvKDk4LGUuYmluZChudWxsLHQsbixyLG8pKX1maW5hbGx5ezA9PT0oTGw9aSkmJlpvKCl9fSxCPWZ1bmN0aW9uKCl7MD09KDQ5JkxsKSYmKGZ1bmN0aW9uKCl7aWYobnVsbCE9PVpsKXt2YXIgZT1abDtabD1udWxsLGUuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtHcyh0LGUpLGxzKHQpfSkpLFpvKCl9fSgpLF9zKCkpfSxVPWZ1bmN0aW9uKGUsdCl7dmFyIG49TGw7TGx8PTI7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7MD09PShMbD1uKSYmWm8oKX19O3ZhciB0Yz17RXZlbnRzOltEbixObixSbixrLE8sVm4sZnVuY3Rpb24oZSl7bHQoZSxIbil9LEwsRCxlbix1dCxfcyx7Y3VycmVudDohMX1dfTshZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maW5kRmliZXJCeUhvc3RJbnN0YW5jZTsoZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXylyZXR1cm4hMTt2YXIgdD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYodC5pc0Rpc2FibGVkfHwhdC5zdXBwb3J0c0ZpYmVyKXJldHVybiEwO3RyeXt2YXIgbj10LmluamVjdChlKTtqcz1mdW5jdGlvbihlKXt0cnl7dC5vbkNvbW1pdEZpYmVyUm9vdChuLGUsdm9pZCAwLDY0PT0oNjQmZS5jdXJyZW50LmVmZmVjdFRhZykpfWNhdGNoKHIpe319LElzPWZ1bmN0aW9uKGUpe3RyeXt0Lm9uQ29tbWl0RmliZXJVbm1vdW50KG4sZSl9Y2F0Y2gocil7fX19Y2F0Y2gocil7fX0pKGkoe30sZSx7b3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjpaLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT0oZT1pdChlKSk/bnVsbDplLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHQ/dChlKTpudWxsfSxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsfSkpfSh7ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6TG4sYnVuZGxlVHlwZTowLHZlcnNpb246XCIxNi4xNC4wXCIscmVuZGVyZXJQYWNrYWdlTmFtZTpcInJlYWN0LWRvbVwifSksdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD10Yyx0LmNyZWF0ZVBvcnRhbD1lYyx0LmZpbmRET01Ob2RlPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9ZS5fcmVhY3RJbnRlcm5hbEZpYmVyO2lmKHZvaWQgMD09PXQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVuZGVyKXRocm93IEVycm9yKGwoMTg4KSk7dGhyb3cgRXJyb3IobCgyNjgsT2JqZWN0LmtleXMoZSkpKX1yZXR1cm4gZT1udWxsPT09KGU9aXQodCkpP251bGw6ZS5zdGF0ZU5vZGV9LHQuZmx1c2hTeW5jPWZ1bmN0aW9uKGUsdCl7aWYoMCE9KDQ4JkxsKSl0aHJvdyBFcnJvcihsKDE4NykpO3ZhciBuPUxsO0xsfD0xO3RyeXtyZXR1cm4gUW8oOTksZS5iaW5kKG51bGwsdCkpfWZpbmFsbHl7TGw9bixabygpfX0sdC5oeWRyYXRlPWZ1bmN0aW9uKGUsdCxuKXtpZighWXModCkpdGhyb3cgRXJyb3IobCgyMDApKTtyZXR1cm4gWnMobnVsbCxlLHQsITAsbil9LHQucmVuZGVyPWZ1bmN0aW9uKGUsdCxuKXtpZighWXModCkpdGhyb3cgRXJyb3IobCgyMDApKTtyZXR1cm4gWnMobnVsbCxlLHQsITEsbil9LHQudW5tb3VudENvbXBvbmVudEF0Tm9kZT1mdW5jdGlvbihlKXtpZighWXMoZSkpdGhyb3cgRXJyb3IobCg0MCkpO3JldHVybiEhZS5fcmVhY3RSb290Q29udGFpbmVyJiYoZHMoKGZ1bmN0aW9uKCl7WnMobnVsbCxudWxsLGUsITEsKGZ1bmN0aW9uKCl7ZS5fcmVhY3RSb290Q29udGFpbmVyPW51bGwsZVtJbl09bnVsbH0pKX0pKSwhMCl9LHQudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9dXMsdC51bnN0YWJsZV9jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZWMoZSx0LDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsKX0sdC51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihlLHQsbixyKXtpZighWXMobikpdGhyb3cgRXJyb3IobCgyMDApKTtpZihudWxsPT1lfHx2b2lkIDA9PT1lLl9yZWFjdEludGVybmFsRmliZXIpdGhyb3cgRXJyb3IobCgzOCkpO3JldHVybiBacyhlLHQsbiwhMSxyKX0sdC52ZXJzaW9uPVwiMTYuMTQuMFwifSwxNDI2NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7IWZ1bmN0aW9uIGUoKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UpdHJ5e19fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShlKX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQpfX0oKSxlLmV4cG9ydHM9big0NzEyNyl9LDE2MjgxOmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxuKGUpfXZhciByLG8saSxhLGw7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvd3x8XCJmdW5jdGlvblwiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBzPW51bGwsYz1udWxsLHU9ZnVuY3Rpb24gZSgpe2lmKG51bGwhPT1zKXRyeXt2YXIgbj10LnVuc3RhYmxlX25vdygpO3MoITAsbikscz1udWxsfWNhdGNoKHIpe3Rocm93IHNldFRpbWVvdXQoZSwwKSxyfX0sZD1EYXRlLm5vdygpO3QudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCktZH0scj1mdW5jdGlvbihlKXtudWxsIT09cz9zZXRUaW1lb3V0KHIsMCxlKToocz1lLHNldFRpbWVvdXQodSwwKSl9LG89ZnVuY3Rpb24oZSx0KXtjPXNldFRpbWVvdXQoZSx0KX0saT1mdW5jdGlvbigpe2NsZWFyVGltZW91dChjKX0sYT1mdW5jdGlvbigpe3JldHVybiExfSxsPXQudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oKXt9fWVsc2V7dmFyIGY9d2luZG93LnBlcmZvcm1hbmNlLHA9d2luZG93LkRhdGUsZz13aW5kb3cuc2V0VGltZW91dCxtPXdpbmRvdy5jbGVhclRpbWVvdXQ7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnNvbGUpe3ZhciBoPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZTtcImZ1bmN0aW9uXCIhPXR5cGVvZiB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuIE1ha2Ugc3VyZSB0aGF0IHlvdSBsb2FkIGEgcG9seWZpbGwgaW4gb2xkZXIgYnJvd3NlcnMuIGh0dHBzOi8vZmIubWUvcmVhY3QtcG9seWZpbGxzXCIpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGgmJmNvbnNvbGUuZXJyb3IoXCJUaGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGNhbmNlbEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL2ZiLm1lL3JlYWN0LXBvbHlmaWxsc1wiKX1pZihcIm9iamVjdFwiPT09bihmKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZi5ub3cpdC51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gZi5ub3coKX07ZWxzZXt2YXIgYj1wLm5vdygpO3QudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHAubm93KCktYn19dmFyIHk9ITEsdj1udWxsLHc9LTEsUz01LFA9MDthPWZ1bmN0aW9uKCl7cmV0dXJuIHQudW5zdGFibGVfbm93KCk+PVB9LGw9ZnVuY3Rpb24oKXt9LHQudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oZSl7MD5lfHwxMjU8ZT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWVyYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCB1bnN1cHBvcnRlZFwiKTpTPTA8ZT9NYXRoLmZsb29yKDFlMy9lKTo1fTt2YXIgeD1uZXcgTWVzc2FnZUNoYW5uZWwsTz14LnBvcnQyO3gucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKCl7aWYobnVsbCE9PXYpe3ZhciBlPXQudW5zdGFibGVfbm93KCk7UD1lK1M7dHJ5e3YoITAsZSk/Ty5wb3N0TWVzc2FnZShudWxsKTooeT0hMSx2PW51bGwpfWNhdGNoKG4pe3Rocm93IE8ucG9zdE1lc3NhZ2UobnVsbCksbn19ZWxzZSB5PSExfSxyPWZ1bmN0aW9uKGUpe3Y9ZSx5fHwoeT0hMCxPLnBvc3RNZXNzYWdlKG51bGwpKX0sbz1mdW5jdGlvbihlLG4pe3c9ZygoZnVuY3Rpb24oKXtlKHQudW5zdGFibGVfbm93KCkpfSksbil9LGk9ZnVuY3Rpb24oKXttKHcpLHc9LTF9fWZ1bmN0aW9uIF8oZSx0KXt2YXIgbj1lLmxlbmd0aDtlLnB1c2godCk7ZTpmb3IoOzspe3ZhciByPW4tMT4+PjEsbz1lW3JdO2lmKCEodm9pZCAwIT09byYmMDxBKG8sdCkpKWJyZWFrIGU7ZVtyXT10LGVbbl09byxuPXJ9fWZ1bmN0aW9uIEMoZSl7cmV0dXJuIHZvaWQgMD09PShlPWVbMF0pP251bGw6ZX1mdW5jdGlvbiBrKGUpe3ZhciB0PWVbMF07aWYodm9pZCAwIT09dCl7dmFyIG49ZS5wb3AoKTtpZihuIT09dCl7ZVswXT1uO2U6Zm9yKHZhciByPTAsbz1lLmxlbmd0aDtyPG87KXt2YXIgaT0yKihyKzEpLTEsYT1lW2ldLGw9aSsxLHM9ZVtsXTtpZih2b2lkIDAhPT1hJiYwPkEoYSxuKSl2b2lkIDAhPT1zJiYwPkEocyxhKT8oZVtyXT1zLGVbbF09bixyPWwpOihlW3JdPWEsZVtpXT1uLHI9aSk7ZWxzZXtpZighKHZvaWQgMCE9PXMmJjA+QShzLG4pKSlicmVhayBlO2Vbcl09cyxlW2xdPW4scj1sfX19cmV0dXJuIHR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gQShlLHQpe3ZhciBuPWUuc29ydEluZGV4LXQuc29ydEluZGV4O3JldHVybiAwIT09bj9uOmUuaWQtdC5pZH12YXIgVD1bXSxFPVtdLGo9MSxJPW51bGwsTD0zLEQ9ITEsTj0hMSxSPSExO2Z1bmN0aW9uIEIoZSl7Zm9yKHZhciB0PUMoRSk7bnVsbCE9PXQ7KXtpZihudWxsPT09dC5jYWxsYmFjaylrKEUpO2Vsc2V7aWYoISh0LnN0YXJ0VGltZTw9ZSkpYnJlYWs7ayhFKSx0LnNvcnRJbmRleD10LmV4cGlyYXRpb25UaW1lLF8oVCx0KX10PUMoRSl9fWZ1bmN0aW9uIFUoZSl7aWYoUj0hMSxCKGUpLCFOKWlmKG51bGwhPT1DKFQpKU49ITAscihGKTtlbHNle3ZhciB0PUMoRSk7bnVsbCE9PXQmJm8oVSx0LnN0YXJ0VGltZS1lKX19ZnVuY3Rpb24gRihlLG4pe049ITEsUiYmKFI9ITEsaSgpKSxEPSEwO3ZhciByPUw7dHJ5e2ZvcihCKG4pLEk9QyhUKTtudWxsIT09SSYmKCEoSS5leHBpcmF0aW9uVGltZT5uKXx8ZSYmIWEoKSk7KXt2YXIgbD1JLmNhbGxiYWNrO2lmKG51bGwhPT1sKXtJLmNhbGxiYWNrPW51bGwsTD1JLnByaW9yaXR5TGV2ZWw7dmFyIHM9bChJLmV4cGlyYXRpb25UaW1lPD1uKTtuPXQudW5zdGFibGVfbm93KCksXCJmdW5jdGlvblwiPT10eXBlb2Ygcz9JLmNhbGxiYWNrPXM6ST09PUMoVCkmJmsoVCksQihuKX1lbHNlIGsoVCk7ST1DKFQpfWlmKG51bGwhPT1JKXZhciBjPSEwO2Vsc2V7dmFyIHU9QyhFKTtudWxsIT09dSYmbyhVLHUuc3RhcnRUaW1lLW4pLGM9ITF9cmV0dXJuIGN9ZmluYWxseXtJPW51bGwsTD1yLEQ9ITF9fWZ1bmN0aW9uIE0oZSl7c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4tMTtjYXNlIDI6cmV0dXJuIDI1MDtjYXNlIDU6cmV0dXJuIDEwNzM3NDE4MjM7Y2FzZSA0OnJldHVybiAxZTQ7ZGVmYXVsdDpyZXR1cm4gNWUzfX12YXIgej1sO3QudW5zdGFibGVfSWRsZVByaW9yaXR5PTUsdC51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eT0xLHQudW5zdGFibGVfTG93UHJpb3JpdHk9NCx0LnVuc3RhYmxlX05vcm1hbFByaW9yaXR5PTMsdC51bnN0YWJsZV9Qcm9maWxpbmc9bnVsbCx0LnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5PTIsdC51bnN0YWJsZV9jYW5jZWxDYWxsYmFjaz1mdW5jdGlvbihlKXtlLmNhbGxiYWNrPW51bGx9LHQudW5zdGFibGVfY29udGludWVFeGVjdXRpb249ZnVuY3Rpb24oKXtOfHxEfHwoTj0hMCxyKEYpKX0sdC51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiBMfSx0LnVuc3RhYmxlX2dldEZpcnN0Q2FsbGJhY2tOb2RlPWZ1bmN0aW9uKCl7cmV0dXJuIEMoVCl9LHQudW5zdGFibGVfbmV4dD1mdW5jdGlvbihlKXtzd2l0Y2goTCl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6dmFyIHQ9MzticmVhaztkZWZhdWx0OnQ9TH12YXIgbj1MO0w9dDt0cnl7cmV0dXJuIGUoKX1maW5hbGx5e0w9bn19LHQudW5zdGFibGVfcGF1c2VFeGVjdXRpb249ZnVuY3Rpb24oKXt9LHQudW5zdGFibGVfcmVxdWVzdFBhaW50PXosdC51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHk9ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDM6Y2FzZSA0OmNhc2UgNTpicmVhaztkZWZhdWx0OmU9M312YXIgbj1MO0w9ZTt0cnl7cmV0dXJuIHQoKX1maW5hbGx5e0w9bn19LHQudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihlLGEsbCl7dmFyIHM9dC51bnN0YWJsZV9ub3coKTtpZihcIm9iamVjdFwiPT09bihsKSYmbnVsbCE9PWwpe3ZhciBjPWwuZGVsYXk7Yz1cIm51bWJlclwiPT10eXBlb2YgYyYmMDxjP3MrYzpzLGw9XCJudW1iZXJcIj09dHlwZW9mIGwudGltZW91dD9sLnRpbWVvdXQ6TShlKX1lbHNlIGw9TShlKSxjPXM7cmV0dXJuIGU9e2lkOmorKyxjYWxsYmFjazphLHByaW9yaXR5TGV2ZWw6ZSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTpsPWMrbCxzb3J0SW5kZXg6LTF9LGM+cz8oZS5zb3J0SW5kZXg9YyxfKEUsZSksbnVsbD09PUMoVCkmJmU9PT1DKEUpJiYoUj9pKCk6Uj0hMCxvKFUsYy1zKSkpOihlLnNvcnRJbmRleD1sLF8oVCxlKSxOfHxEfHwoTj0hMCxyKEYpKSksZX0sdC51bnN0YWJsZV9zaG91bGRZaWVsZD1mdW5jdGlvbigpe3ZhciBlPXQudW5zdGFibGVfbm93KCk7QihlKTt2YXIgbj1DKFQpO3JldHVybiBuIT09SSYmbnVsbCE9PUkmJm51bGwhPT1uJiZudWxsIT09bi5jYWxsYmFjayYmbi5zdGFydFRpbWU8PWUmJm4uZXhwaXJhdGlvblRpbWU8SS5leHBpcmF0aW9uVGltZXx8YSgpfSx0LnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihlKXt2YXIgdD1MO3JldHVybiBmdW5jdGlvbigpe3ZhciBuPUw7TD10O3RyeXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtMPW59fX19LDgzMDIwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bigxNjI4MSl9LDE0ODUzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDU5NjU3KSxvPTYwMTAzO2lmKHQuRnJhZ21lbnQ9NjAxMDcsXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yKXt2YXIgaT1TeW1ib2wuZm9yO289aShcInJlYWN0LmVsZW1lbnRcIiksdC5GcmFnbWVudD1pKFwicmVhY3QuZnJhZ21lbnRcIil9dmFyIGE9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixsPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIGMoZSx0LG4pe3ZhciByLGk9e30sYz1udWxsLHU9bnVsbDtmb3IociBpbiB2b2lkIDAhPT1uJiYoYz1cIlwiK24pLHZvaWQgMCE9PXQua2V5JiYoYz1cIlwiK3Qua2V5KSx2b2lkIDAhPT10LnJlZiYmKHU9dC5yZWYpLHQpbC5jYWxsKHQscikmJiFzLmhhc093blByb3BlcnR5KHIpJiYoaVtyXT10W3JdKTtpZihlJiZlLmRlZmF1bHRQcm9wcylmb3IociBpbiB0PWUuZGVmYXVsdFByb3BzKXZvaWQgMD09PWlbcl0mJihpW3JdPXRbcl0pO3JldHVybnskJHR5cGVvZjpvLHR5cGU6ZSxrZXk6YyxyZWY6dSxwcm9wczppLF9vd25lcjphLmN1cnJlbnR9fXQuanN4PWMsdC5qc3hzPWN9LDUzODE4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHIoZSl9dmFyIG89bigzMDA5MCksaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYT1pP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGw9aT9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LHM9aT9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsYz1pP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCx1PWk/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGQ9aT9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksZj1pP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLHA9aT9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIsZz1pP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxtPWk/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsaD1pP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LGI9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24geShlKXtmb3IodmFyIHQ9XCJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD1cIitlLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW25dKTtyZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIitlK1wiOyB2aXNpdCBcIit0K1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn12YXIgdj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sdz17fTtmdW5jdGlvbiBTKGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPXcsdGhpcy51cGRhdGVyPW58fHZ9ZnVuY3Rpb24gUCgpe31mdW5jdGlvbiB4KGUsdCxuKXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPXcsdGhpcy51cGRhdGVyPW58fHZ9Uy5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxTLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihlLHQpe2lmKFwib2JqZWN0XCIhPT1yKGUpJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiZudWxsIT1lKXRocm93IEVycm9yKHkoODUpKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSx0LFwic2V0U3RhdGVcIil9LFMucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxlLFwiZm9yY2VVcGRhdGVcIil9LFAucHJvdG90eXBlPVMucHJvdG90eXBlO3ZhciBPPXgucHJvdG90eXBlPW5ldyBQO08uY29uc3RydWN0b3I9eCxvKE8sUy5wcm90b3R5cGUpLE8uaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIF89e2N1cnJlbnQ6bnVsbH0sQz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGs9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtmdW5jdGlvbiBBKGUsdCxuKXt2YXIgcixvPXt9LGk9bnVsbCxsPW51bGw7aWYobnVsbCE9dClmb3IociBpbiB2b2lkIDAhPT10LnJlZiYmKGw9dC5yZWYpLHZvaWQgMCE9PXQua2V5JiYoaT1cIlwiK3Qua2V5KSx0KUMuY2FsbCh0LHIpJiYhay5oYXNPd25Qcm9wZXJ0eShyKSYmKG9bcl09dFtyXSk7dmFyIHM9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1zKW8uY2hpbGRyZW49bjtlbHNlIGlmKDE8cyl7Zm9yKHZhciBjPUFycmF5KHMpLHU9MDt1PHM7dSsrKWNbdV09YXJndW1lbnRzW3UrMl07by5jaGlsZHJlbj1jfWlmKGUmJmUuZGVmYXVsdFByb3BzKWZvcihyIGluIHM9ZS5kZWZhdWx0UHJvcHMpdm9pZCAwPT09b1tyXSYmKG9bcl09c1tyXSk7cmV0dXJueyQkdHlwZW9mOmEsdHlwZTplLGtleTppLHJlZjpsLHByb3BzOm8sX293bmVyOl8uY3VycmVudH19ZnVuY3Rpb24gVChlKXtyZXR1cm5cIm9iamVjdFwiPT09cihlKSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1hfXZhciBFPS9cXC8rL2csaj1bXTtmdW5jdGlvbiBJKGUsdCxuLHIpe2lmKGoubGVuZ3RoKXt2YXIgbz1qLnBvcCgpO3JldHVybiBvLnJlc3VsdD1lLG8ua2V5UHJlZml4PXQsby5mdW5jPW4sby5jb250ZXh0PXIsby5jb3VudD0wLG99cmV0dXJue3Jlc3VsdDplLGtleVByZWZpeDp0LGZ1bmM6bixjb250ZXh0OnIsY291bnQ6MH19ZnVuY3Rpb24gTChlKXtlLnJlc3VsdD1udWxsLGUua2V5UHJlZml4PW51bGwsZS5mdW5jPW51bGwsZS5jb250ZXh0PW51bGwsZS5jb3VudD0wLDEwPmoubGVuZ3RoJiZqLnB1c2goZSl9ZnVuY3Rpb24gRChlLHQsbixvKXt2YXIgaT1yKGUpO1widW5kZWZpbmVkXCIhPT1pJiZcImJvb2xlYW5cIiE9PWl8fChlPW51bGwpO3ZhciBzPSExO2lmKG51bGw9PT1lKXM9ITA7ZWxzZSBzd2l0Y2goaSl7Y2FzZVwic3RyaW5nXCI6Y2FzZVwibnVtYmVyXCI6cz0hMDticmVhaztjYXNlXCJvYmplY3RcIjpzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBhOmNhc2UgbDpzPSEwfX1pZihzKXJldHVybiBuKG8sZSxcIlwiPT09dD9cIi5cIitSKGUsMCk6dCksMTtpZihzPTAsdD1cIlwiPT09dD9cIi5cIjp0K1wiOlwiLEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBjPTA7YzxlLmxlbmd0aDtjKyspe3ZhciB1PXQrUihpPWVbY10sYyk7cys9RChpLHUsbixvKX1lbHNlIGlmKG51bGw9PT1lfHxcIm9iamVjdFwiIT09cihlKT91PW51bGw6dT1cImZ1bmN0aW9uXCI9PXR5cGVvZih1PWImJmVbYl18fGVbXCJAQGl0ZXJhdG9yXCJdKT91Om51bGwsXCJmdW5jdGlvblwiPT10eXBlb2YgdSlmb3IoZT11LmNhbGwoZSksYz0wOyEoaT1lLm5leHQoKSkuZG9uZTspcys9RChpPWkudmFsdWUsdT10K1IoaSxjKyspLG4sbyk7ZWxzZSBpZihcIm9iamVjdFwiPT09aSl0aHJvdyBuPVwiXCIrZSxFcnJvcih5KDMxLFwiW29iamVjdCBPYmplY3RdXCI9PT1uP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoZSkuam9pbihcIiwgXCIpK1wifVwiOm4sXCJcIikpO3JldHVybiBzfWZ1bmN0aW9uIE4oZSx0LG4pe3JldHVybiBudWxsPT1lPzA6RChlLFwiXCIsdCxuKX1mdW5jdGlvbiBSKGUsdCl7cmV0dXJuXCJvYmplY3RcIj09PXIoZSkmJm51bGwhPT1lJiZudWxsIT1lLmtleT9mdW5jdGlvbihlKXt2YXIgdD17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn07cmV0dXJuXCIkXCIrKFwiXCIrZSkucmVwbGFjZSgvWz06XS9nLChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX0oZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIEIoZSx0KXtlLmZ1bmMuY2FsbChlLmNvbnRleHQsdCxlLmNvdW50KyspfWZ1bmN0aW9uIFUoZSx0LG4pe3ZhciByPWUucmVzdWx0LG89ZS5rZXlQcmVmaXg7ZT1lLmZ1bmMuY2FsbChlLmNvbnRleHQsdCxlLmNvdW50KyspLEFycmF5LmlzQXJyYXkoZSk/RihlLHIsbiwoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSk6bnVsbCE9ZSYmKFQoZSkmJihlPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOmEsdHlwZTplLnR5cGUsa2V5OnQscmVmOmUucmVmLHByb3BzOmUucHJvcHMsX293bmVyOmUuX293bmVyfX0oZSxvKyghZS5rZXl8fHQmJnQua2V5PT09ZS5rZXk/XCJcIjooXCJcIitlLmtleSkucmVwbGFjZShFLFwiJCYvXCIpK1wiL1wiKStuKSksci5wdXNoKGUpKX1mdW5jdGlvbiBGKGUsdCxuLHIsbyl7dmFyIGk9XCJcIjtudWxsIT1uJiYoaT0oXCJcIituKS5yZXBsYWNlKEUsXCIkJi9cIikrXCIvXCIpLE4oZSxVLHQ9SSh0LGkscixvKSksTCh0KX12YXIgTT17Y3VycmVudDpudWxsfTtmdW5jdGlvbiB6KCl7dmFyIGU9TS5jdXJyZW50O2lmKG51bGw9PT1lKXRocm93IEVycm9yKHkoMzIxKSk7cmV0dXJuIGV9dmFyIEg9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6TSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7c3VzcGVuc2U6bnVsbH0sUmVhY3RDdXJyZW50T3duZXI6XyxJc1NvbWVSZW5kZXJlckFjdGluZzp7Y3VycmVudDohMX0sYXNzaWduOm99O3QuQ2hpbGRyZW49e21hcDpmdW5jdGlvbihlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1bXTtyZXR1cm4gRihlLHIsbnVsbCx0LG4pLHJ9LGZvckVhY2g6ZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7TihlLEIsdD1JKG51bGwsbnVsbCx0LG4pKSxMKHQpfSxjb3VudDpmdW5jdGlvbihlKXtyZXR1cm4gTihlLChmdW5jdGlvbigpe3JldHVybiBudWxsfSksbnVsbCl9LHRvQXJyYXk6ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIEYoZSx0LG51bGwsKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLHR9LG9ubHk6ZnVuY3Rpb24oZSl7aWYoIVQoZSkpdGhyb3cgRXJyb3IoeSgxNDMpKTtyZXR1cm4gZX19LHQuQ29tcG9uZW50PVMsdC5GcmFnbWVudD1zLHQuUHJvZmlsZXI9dSx0LlB1cmVDb21wb25lbnQ9eCx0LlN0cmljdE1vZGU9Yyx0LlN1c3BlbnNlPWcsdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1ILHQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXRocm93IEVycm9yKHkoMjY3LGUpKTt2YXIgcj1vKHt9LGUucHJvcHMpLGk9ZS5rZXksbD1lLnJlZixzPWUuX293bmVyO2lmKG51bGwhPXQpe2lmKHZvaWQgMCE9PXQucmVmJiYobD10LnJlZixzPV8uY3VycmVudCksdm9pZCAwIT09dC5rZXkmJihpPVwiXCIrdC5rZXkpLGUudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgYz1lLnR5cGUuZGVmYXVsdFByb3BzO2Zvcih1IGluIHQpQy5jYWxsKHQsdSkmJiFrLmhhc093blByb3BlcnR5KHUpJiYoclt1XT12b2lkIDA9PT10W3VdJiZ2b2lkIDAhPT1jP2NbdV06dFt1XSl9dmFyIHU9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT11KXIuY2hpbGRyZW49bjtlbHNlIGlmKDE8dSl7Yz1BcnJheSh1KTtmb3IodmFyIGQ9MDtkPHU7ZCsrKWNbZF09YXJndW1lbnRzW2QrMl07ci5jaGlsZHJlbj1jfXJldHVybnskJHR5cGVvZjphLHR5cGU6ZS50eXBlLGtleTppLHJlZjpsLHByb3BzOnIsX293bmVyOnN9fSx0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksKGU9eyQkdHlwZW9mOmYsX2NhbGN1bGF0ZUNoYW5nZWRCaXRzOnQsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9eyQkdHlwZW9mOmQsX2NvbnRleHQ6ZX0sZS5Db25zdW1lcj1lfSx0LmNyZWF0ZUVsZW1lbnQ9QSx0LmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9QS5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LHQuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LHQuZm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6cCxyZW5kZXI6ZX19LHQuaXNWYWxpZEVsZW1lbnQ9VCx0Lmxhenk9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOmgsX2N0b3I6ZSxfc3RhdHVzOi0xLF9yZXN1bHQ6bnVsbH19LHQubWVtbz1mdW5jdGlvbihlLHQpe3JldHVybnskJHR5cGVvZjptLHR5cGU6ZSxjb21wYXJlOnZvaWQgMD09PXQ/bnVsbDp0fX0sdC51c2VDYWxsYmFjaz1mdW5jdGlvbihlLHQpe3JldHVybiB6KCkudXNlQ2FsbGJhY2soZSx0KX0sdC51c2VDb250ZXh0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHooKS51c2VDb250ZXh0KGUsdCl9LHQudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe30sdC51c2VFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4geigpLnVzZUVmZmVjdChlLHQpfSx0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB6KCkudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQsbil9LHQudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHooKS51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdC51c2VNZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHooKS51c2VNZW1vKGUsdCl9LHQudXNlUmVkdWNlcj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHooKS51c2VSZWR1Y2VyKGUsdCxuKX0sdC51c2VSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIHooKS51c2VSZWYoZSl9LHQudXNlU3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHooKS51c2VTdGF0ZShlKX0sdC52ZXJzaW9uPVwiMTYuMTQuMFwifSw1OTY1NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oNTM4MTgpfSw1MzE5NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4oMTQ4NTMpfSw4MzU1MzpmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIGU9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sZSh0KX0hZnVuY3Rpb24oKXt2YXIgdD17NjY2OmZ1bmN0aW9uKHQpe3ZhciBuPWZ1bmN0aW9uKHQpe1widXNlIHN0cmljdFwiO3ZhciBuLHI9T2JqZWN0LnByb3RvdHlwZSxvPXIuaGFzT3duUHJvcGVydHksaT1PYmplY3QuZGVmaW5lUHJvcGVydHl8fGZ1bmN0aW9uKGUsdCxuKXtlW3RdPW4udmFsdWV9LGE9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sP1N5bWJvbDp7fSxsPWEuaXRlcmF0b3J8fFwiQEBpdGVyYXRvclwiLHM9YS5hc3luY0l0ZXJhdG9yfHxcIkBAYXN5bmNJdGVyYXRvclwiLGM9YS50b1N0cmluZ1RhZ3x8XCJAQHRvU3RyaW5nVGFnXCI7ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KSxlW3RdfXRyeXt1KHt9LFwiXCIpfWNhdGNoKEwpe3U9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlW3RdPW59fWZ1bmN0aW9uIGQoZSx0LG4scil7dmFyIG89dCYmdC5wcm90b3R5cGUgaW5zdGFuY2VvZiBiP3Q6YixhPU9iamVjdC5jcmVhdGUoby5wcm90b3R5cGUpLGw9bmV3IEUocnx8W10pO3JldHVybiBpKGEsXCJfaW52b2tlXCIse3ZhbHVlOkMoZSxuLGwpfSksYX1mdW5jdGlvbiBmKGUsdCxuKXt0cnl7cmV0dXJue3R5cGU6XCJub3JtYWxcIixhcmc6ZS5jYWxsKHQsbil9fWNhdGNoKEwpe3JldHVybnt0eXBlOlwidGhyb3dcIixhcmc6TH19fXQud3JhcD1kO3ZhciBwPVwic3VzcGVuZGVkU3RhcnRcIixnPVwiZXhlY3V0aW5nXCIsbT1cImNvbXBsZXRlZFwiLGg9e307ZnVuY3Rpb24gYigpe31mdW5jdGlvbiB5KCl7fWZ1bmN0aW9uIHYoKXt9dmFyIHc9e307dSh3LGwsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIFM9T2JqZWN0LmdldFByb3RvdHlwZU9mLFA9UyYmUyhTKGooW10pKSk7UCYmUCE9PXImJm8uY2FsbChQLGwpJiYodz1QKTt2YXIgeD12LnByb3RvdHlwZT1iLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHcpO2Z1bmN0aW9uIE8oZSl7W1wibmV4dFwiLFwidGhyb3dcIixcInJldHVyblwiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt1KGUsdCwoZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2ludm9rZSh0LGUpfSkpfSkpfWZ1bmN0aW9uIF8odCxuKXtmdW5jdGlvbiByKGksYSxsLHMpe3ZhciBjPWYodFtpXSx0LGEpO2lmKFwidGhyb3dcIiE9PWMudHlwZSl7dmFyIHU9Yy5hcmcsZD11LnZhbHVlO3JldHVybiBkJiZcIm9iamVjdFwiPT1lKGQpJiZvLmNhbGwoZCxcIl9fYXdhaXRcIik/bi5yZXNvbHZlKGQuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cihcIm5leHRcIixlLGwscyl9KSwoZnVuY3Rpb24oZSl7cihcInRocm93XCIsZSxsLHMpfSkpOm4ucmVzb2x2ZShkKS50aGVuKChmdW5jdGlvbihlKXt1LnZhbHVlPWUsbCh1KX0pLChmdW5jdGlvbihlKXtyZXR1cm4gcihcInRocm93XCIsZSxsLHMpfSkpfXMoYy5hcmcpfXZhciBhO2kodGhpcyxcIl9pbnZva2VcIix7dmFsdWU6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBvKCl7cmV0dXJuIG5ldyBuKChmdW5jdGlvbihuLG8pe3IoZSx0LG4sbyl9KSl9cmV0dXJuIGE9YT9hLnRoZW4obyxvKTpvKCl9fSl9ZnVuY3Rpb24gQyhlLHQsbil7dmFyIHI9cDtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihyPT09Zyl0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO2lmKHI9PT1tKXtpZihcInRocm93XCI9PT1vKXRocm93IGk7cmV0dXJuIEkoKX1mb3Iobi5tZXRob2Q9byxuLmFyZz1pOzspe3ZhciBhPW4uZGVsZWdhdGU7aWYoYSl7dmFyIGw9ayhhLG4pO2lmKGwpe2lmKGw9PT1oKWNvbnRpbnVlO3JldHVybiBsfX1pZihcIm5leHRcIj09PW4ubWV0aG9kKW4uc2VudD1uLl9zZW50PW4uYXJnO2Vsc2UgaWYoXCJ0aHJvd1wiPT09bi5tZXRob2Qpe2lmKHI9PT1wKXRocm93IHI9bSxuLmFyZztuLmRpc3BhdGNoRXhjZXB0aW9uKG4uYXJnKX1lbHNlXCJyZXR1cm5cIj09PW4ubWV0aG9kJiZuLmFicnVwdChcInJldHVyblwiLG4uYXJnKTtyPWc7dmFyIHM9ZihlLHQsbik7aWYoXCJub3JtYWxcIj09PXMudHlwZSl7aWYocj1uLmRvbmU/bTpcInN1c3BlbmRlZFlpZWxkXCIscy5hcmc9PT1oKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpzLmFyZyxkb25lOm4uZG9uZX19XCJ0aHJvd1wiPT09cy50eXBlJiYocj1tLG4ubWV0aG9kPVwidGhyb3dcIixuLmFyZz1zLmFyZyl9fX1mdW5jdGlvbiBrKGUsdCl7dmFyIHI9ZS5pdGVyYXRvclt0Lm1ldGhvZF07aWYocj09PW4pe2lmKHQuZGVsZWdhdGU9bnVsbCxcInRocm93XCI9PT10Lm1ldGhvZCl7aWYoZS5pdGVyYXRvci5yZXR1cm4mJih0Lm1ldGhvZD1cInJldHVyblwiLHQuYXJnPW4sayhlLHQpLFwidGhyb3dcIj09PXQubWV0aG9kKSlyZXR1cm4gaDt0Lm1ldGhvZD1cInRocm93XCIsdC5hcmc9bmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIil9cmV0dXJuIGh9dmFyIG89ZihyLGUuaXRlcmF0b3IsdC5hcmcpO2lmKFwidGhyb3dcIj09PW8udHlwZSlyZXR1cm4gdC5tZXRob2Q9XCJ0aHJvd1wiLHQuYXJnPW8uYXJnLHQuZGVsZWdhdGU9bnVsbCxoO3ZhciBpPW8uYXJnO3JldHVybiBpP2kuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWkudmFsdWUsdC5uZXh0PWUubmV4dExvYyxcInJldHVyblwiIT09dC5tZXRob2QmJih0Lm1ldGhvZD1cIm5leHRcIix0LmFyZz1uKSx0LmRlbGVnYXRlPW51bGwsaCk6aToodC5tZXRob2Q9XCJ0aHJvd1wiLHQuYXJnPW5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKSx0LmRlbGVnYXRlPW51bGwsaCl9ZnVuY3Rpb24gQShlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBUKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPVwibm9ybWFsXCIsZGVsZXRlIHQuYXJnLGUuY29tcGxldGlvbj10fWZ1bmN0aW9uIEUoZSl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOlwicm9vdFwifV0sZS5mb3JFYWNoKEEsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gaihlKXtpZihlKXt2YXIgdD1lW2xdO2lmKHQpcmV0dXJuIHQuY2FsbChlKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIHI9LTEsaT1mdW5jdGlvbiB0KCl7Zm9yKDsrK3I8ZS5sZW5ndGg7KWlmKG8uY2FsbChlLHIpKXJldHVybiB0LnZhbHVlPWVbcl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9bix0LmRvbmU9ITAsdH07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpJfX1mdW5jdGlvbiBJKCl7cmV0dXJue3ZhbHVlOm4sZG9uZTohMH19cmV0dXJuIHkucHJvdG90eXBlPXYsaSh4LFwiY29uc3RydWN0b3JcIix7dmFsdWU6dixjb25maWd1cmFibGU6ITB9KSxpKHYsXCJjb25zdHJ1Y3RvclwiLHt2YWx1ZTp5LGNvbmZpZ3VyYWJsZTohMH0pLHkuZGlzcGxheU5hbWU9dSh2LGMsXCJHZW5lcmF0b3JGdW5jdGlvblwiKSx0LmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgZSYmZS5jb25zdHJ1Y3RvcjtyZXR1cm4hIXQmJih0PT09eXx8XCJHZW5lcmF0b3JGdW5jdGlvblwiPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSx0Lm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx2KTooZS5fX3Byb3RvX189dix1KGUsYyxcIkdlbmVyYXRvckZ1bmN0aW9uXCIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHgpLGV9LHQuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LE8oXy5wcm90b3R5cGUpLHUoXy5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSx0LkFzeW5jSXRlcmF0b3I9Xyx0LmFzeW5jPWZ1bmN0aW9uKGUsbixyLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IF8oZChlLG4scixvKSxpKTtyZXR1cm4gdC5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOmEubmV4dCgpfSkpfSxPKHgpLHUoeCxjLFwiR2VuZXJhdG9yXCIpLHUoeCxsLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLHUoeCxcInRvU3RyaW5nXCIsKGZ1bmN0aW9uKCl7cmV0dXJuXCJbb2JqZWN0IEdlbmVyYXRvcl1cIn0pKSx0LmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0KGUpLG49W107Zm9yKHZhciByIGluIHQpbi5wdXNoKHIpO3JldHVybiBuLnJldmVyc2UoKSxmdW5jdGlvbiBlKCl7Zm9yKDtuLmxlbmd0aDspe3ZhciByPW4ucG9wKCk7aWYociBpbiB0KXJldHVybiBlLnZhbHVlPXIsZS5kb25lPSExLGV9cmV0dXJuIGUuZG9uZT0hMCxlfX0sdC52YWx1ZXM9aixFLnByb3RvdHlwZT17Y29uc3RydWN0b3I6RSxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD1uLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9XCJuZXh0XCIsdGhpcy5hcmc9bix0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChUKSwhZSlmb3IodmFyIHQgaW4gdGhpcylcInRcIj09PXQuY2hhckF0KDApJiZvLmNhbGwodGhpcyx0KSYmIWlzTmFOKCt0LnNsaWNlKDEpKSYmKHRoaXNbdF09bil9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoXCJ0aHJvd1wiPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciB0PXRoaXM7ZnVuY3Rpb24gcihyLG8pe3JldHVybiBsLnR5cGU9XCJ0aHJvd1wiLGwuYXJnPWUsdC5uZXh0PXIsbyYmKHQubWV0aG9kPVwibmV4dFwiLHQuYXJnPW4pLCEhb31mb3IodmFyIGk9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO2k+PTA7LS1pKXt2YXIgYT10aGlzLnRyeUVudHJpZXNbaV0sbD1hLmNvbXBsZXRpb247aWYoXCJyb290XCI9PT1hLnRyeUxvYylyZXR1cm4gcihcImVuZFwiKTtpZihhLnRyeUxvYzw9dGhpcy5wcmV2KXt2YXIgcz1vLmNhbGwoYSxcImNhdGNoTG9jXCIpLGM9by5jYWxsKGEsXCJmaW5hbGx5TG9jXCIpO2lmKHMmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiByKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIHIoYS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiByKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7aWYodGhpcy5wcmV2PGEuZmluYWxseUxvYylyZXR1cm4gcihhLmZpbmFsbHlMb2MpfX19fSxhYnJ1cHQ6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO24+PTA7LS1uKXt2YXIgcj10aGlzLnRyeUVudHJpZXNbbl07aWYoci50cnlMb2M8PXRoaXMucHJldiYmby5jYWxsKHIsXCJmaW5hbGx5TG9jXCIpJiZ0aGlzLnByZXY8ci5maW5hbGx5TG9jKXt2YXIgaT1yO2JyZWFrfX1pJiYoXCJicmVha1wiPT09ZXx8XCJjb250aW51ZVwiPT09ZSkmJmkudHJ5TG9jPD10JiZ0PD1pLmZpbmFsbHlMb2MmJihpPW51bGwpO3ZhciBhPWk/aS5jb21wbGV0aW9uOnt9O3JldHVybiBhLnR5cGU9ZSxhLmFyZz10LGk/KHRoaXMubWV0aG9kPVwibmV4dFwiLHRoaXMubmV4dD1pLmZpbmFsbHlMb2MsaCk6dGhpcy5jb21wbGV0ZShhKX0sY29tcGxldGU6ZnVuY3Rpb24oZSx0KXtpZihcInRocm93XCI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuXCJicmVha1wiPT09ZS50eXBlfHxcImNvbnRpbnVlXCI9PT1lLnR5cGU/dGhpcy5uZXh0PWUuYXJnOlwicmV0dXJuXCI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD1cInJldHVyblwiLHRoaXMubmV4dD1cImVuZFwiKTpcIm5vcm1hbFwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGh9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgbj10aGlzLnRyeUVudHJpZXNbdF07aWYobi5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShuLmNvbXBsZXRpb24sbi5hZnRlckxvYyksVChuKSxofX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIG49dGhpcy50cnlFbnRyaWVzW3RdO2lmKG4udHJ5TG9jPT09ZSl7dmFyIHI9bi5jb21wbGV0aW9uO2lmKFwidGhyb3dcIj09PXIudHlwZSl7dmFyIG89ci5hcmc7VChuKX1yZXR1cm4gb319dGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpfSxkZWxlZ2F0ZVlpZWxkOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZT17aXRlcmF0b3I6aihlKSxyZXN1bHROYW1lOnQsbmV4dExvYzpyfSxcIm5leHRcIj09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9biksaH19LHR9KHQuZXhwb3J0cyk7dHJ5e3JlZ2VuZXJhdG9yUnVudGltZT1ufWNhdGNoKHIpe1wib2JqZWN0XCI9PShcInVuZGVmaW5lZFwiPT10eXBlb2YgZ2xvYmFsVGhpcz9cInVuZGVmaW5lZFwiOmUoZ2xvYmFsVGhpcykpP2dsb2JhbFRoaXMucmVnZW5lcmF0b3JSdW50aW1lPW46RnVuY3Rpb24oXCJyXCIsXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKG4pfX0sNzYwOmZ1bmN0aW9uKHQsbixyKXshZnVuY3Rpb24odCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG4sbyxpO249W2Z1bmN0aW9uKGUsdCxuKXtuKDEpLG4oMTEwKSxuKDExMSksbigxMTIpLG4oMTEzKSxlLmV4cG9ydHM9bigxMTkpfSxmdW5jdGlvbihlLHQsbil7bigyKSxuKDk2KSxuKDEwNSksbigxMDYpLG4oMTA3KSxuKDEwOCl9LGZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpLGEsbD1yKDMpLHM9cigzNCksYz1yKDY3KSx1PXIoNCksZD1yKDgpLGY9cig0NikscD1yKDY4KSxnPXIoNzApLG09cig3MSksaD1yKDI5KSxiPXIoMjApLHk9cigxOSksdj1yKDcyKSx3PXIoNzMpLFM9cig3OCkuc2V0LFA9cig4NSkseD1yKDg4KSxPPXIoODkpLF89cig5MCksQz1yKDUwKSxrPXIoOTEpLEE9cig5MiksVD1yKDk1KSxFPVwiUHJvbWlzZVwiLGo9QS5DT05TVFJVQ1RPUixJPUEuUkVKRUNUSU9OX0VWRU5ULEw9QS5TVUJDTEFTU0lORyxEPUMuZ2V0dGVyRm9yKEUpLE49Qy5zZXQsUj1rJiZrLnByb3RvdHlwZSxCPWssVT1SLEY9dS5UeXBlRXJyb3IsTT11LmRvY3VtZW50LHo9dS5wcm9jZXNzLEg9VC5mLFY9SCxXPSEhKE0mJk0uY3JlYXRlRXZlbnQmJnUuZGlzcGF0Y2hFdmVudCksRz1cInVuaGFuZGxlZHJlamVjdGlvblwiLCQ9ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuISgheShlKXx8IWIodD1lLnRoZW4pKSYmdH0sSz1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpPXQudmFsdWUsYT0xPT10LnN0YXRlLGw9YT9lLm9rOmUuZmFpbCxzPWUucmVzb2x2ZSxjPWUucmVqZWN0LHU9ZS5kb21haW47dHJ5e2w/KGF8fCgyPT09dC5yZWplY3Rpb24mJloodCksdC5yZWplY3Rpb249MSksITA9PT1sP249aToodSYmdS5lbnRlcigpLG49bChpKSx1JiYodS5leGl0KCksbz0hMCkpLG49PT1lLnByb21pc2U/YyhGKFwiUHJvbWlzZS1jaGFpbiBjeWNsZVwiKSk6KHI9JChuKSk/ZChyLG4scyxjKTpzKG4pKTpjKGkpfWNhdGNoKGYpe3UmJiFvJiZ1LmV4aXQoKSxjKGYpfX0scT1mdW5jdGlvbihlLHQpe2Uubm90aWZpZWR8fChlLm5vdGlmaWVkPSEwLFAoKGZ1bmN0aW9uKCl7Zm9yKHZhciBuLHI9ZS5yZWFjdGlvbnM7bj1yLmdldCgpOylLKG4sZSk7ZS5ub3RpZmllZD0hMSx0JiYhZS5yZWplY3Rpb24mJlgoZSl9KSkpfSxRPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvO1c/KChyPU0uY3JlYXRlRXZlbnQoXCJFdmVudFwiKSkucHJvbWlzZT10LHIucmVhc29uPW4sci5pbml0RXZlbnQoZSwhMSwhMCksdS5kaXNwYXRjaEV2ZW50KHIpKTpyPXtwcm9taXNlOnQscmVhc29uOm59LCFJJiYobz11W1wib25cIitlXSk/byhyKTplPT09RyYmeChcIlVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvblwiLG4pfSxYPWZ1bmN0aW9uKGUpe2QoUyx1LChmdW5jdGlvbigpe3ZhciB0LG49ZS5mYWNhZGUscj1lLnZhbHVlO2lmKFkoZSkmJih0PU8oKGZ1bmN0aW9uKCl7Yz96LmVtaXQoXCJ1bmhhbmRsZWRSZWplY3Rpb25cIixyLG4pOlEoRyxuLHIpfSkpLGUucmVqZWN0aW9uPWN8fFkoZSk/MjoxLHQuZXJyb3IpKXRocm93IHQudmFsdWV9KSl9LFk9ZnVuY3Rpb24oZSl7cmV0dXJuIDEhPT1lLnJlamVjdGlvbiYmIWUucGFyZW50fSxaPWZ1bmN0aW9uKGUpe2QoUyx1LChmdW5jdGlvbigpe3ZhciB0PWUuZmFjYWRlO2M/ei5lbWl0KFwicmVqZWN0aW9uSGFuZGxlZFwiLHQpOlEoXCJyZWplY3Rpb25oYW5kbGVkXCIsdCxlLnZhbHVlKX0pKX0sSj1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe2UodCxyLG4pfX0sZWU9ZnVuY3Rpb24oZSx0LG4pe2UuZG9uZXx8KGUuZG9uZT0hMCxuJiYoZT1uKSxlLnZhbHVlPXQsZS5zdGF0ZT0yLHEoZSwhMCkpfSx0ZT1mdW5jdGlvbiBlKHQsbixyKXtpZighdC5kb25lKXt0LmRvbmU9ITAsciYmKHQ9cik7dHJ5e2lmKHQuZmFjYWRlPT09bil0aHJvdyBGKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7dmFyIGk9JChuKTtpP1AoKGZ1bmN0aW9uKCl7dmFyIHI9e2RvbmU6ITF9O3RyeXtkKGksbixKKGUscix0KSxKKGVlLHIsdCkpfWNhdGNoKG8pe2VlKHIsbyx0KX19KSk6KHQudmFsdWU9bix0LnN0YXRlPTEscSh0LCExKSl9Y2F0Y2gobyl7ZWUoe2RvbmU6ITF9LG8sdCl9fX07aWYoaiYmKFU9KEI9ZnVuY3Rpb24oZSl7dih0aGlzLFUpLGgoZSksZChvLHRoaXMpO3ZhciB0PUQodGhpcyk7dHJ5e2UoSih0ZSx0KSxKKGVlLHQpKX1jYXRjaChuKXtlZSh0LG4pfX0pLnByb3RvdHlwZSwobz1mdW5jdGlvbihlKXtOKHRoaXMse3R5cGU6RSxkb25lOiExLG5vdGlmaWVkOiExLHBhcmVudDohMSxyZWFjdGlvbnM6bmV3IF8scmVqZWN0aW9uOiExLHN0YXRlOjAsdmFsdWU6dH0pfSkucHJvdG90eXBlPWYoVSxcInRoZW5cIiwoZnVuY3Rpb24oZSxuKXt2YXIgcj1EKHRoaXMpLG89SCh3KHRoaXMsQikpO3JldHVybiByLnBhcmVudD0hMCxvLm9rPSFiKGUpfHxlLG8uZmFpbD1iKG4pJiZuLG8uZG9tYWluPWM/ei5kb21haW46dCwwPT1yLnN0YXRlP3IucmVhY3Rpb25zLmFkZChvKTpQKChmdW5jdGlvbigpe0sobyxyKX0pKSxvLnByb21pc2V9KSksaT1mdW5jdGlvbigpe3ZhciBlPW5ldyBvLHQ9RChlKTt0aGlzLnByb21pc2U9ZSx0aGlzLnJlc29sdmU9Sih0ZSx0KSx0aGlzLnJlamVjdD1KKGVlLHQpfSxULmY9SD1mdW5jdGlvbihlKXtyZXR1cm4gZT09PUJ8fHZvaWQgMD09PWU/bmV3IGkoZSk6VihlKX0sIXMmJmIoaykmJlIhPT1PYmplY3QucHJvdG90eXBlKSl7YT1SLnRoZW4sTHx8ZihSLFwidGhlblwiLChmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7cmV0dXJuIG5ldyBCKChmdW5jdGlvbihlLHQpe2QoYSxuLGUsdCl9KSkudGhlbihlLHQpfSkse3Vuc2FmZTohMH0pO3RyeXtkZWxldGUgUi5jb25zdHJ1Y3Rvcn1jYXRjaChuZSl7fXAmJnAoUixVKX1sKHtnbG9iYWw6ITAsY29uc3RydWN0b3I6ITAsd3JhcDohMCxmb3JjZWQ6an0se1Byb21pc2U6Qn0pLGcoQixFLCExLCEwKSxtKEUpfSxmdW5jdGlvbihuLHIsbyl7dmFyIGk9byg0KSxhPW8oNSkuZixsPW8oNDIpLHM9byg0NiksYz1vKDM2KSx1PW8oNTQpLGQ9byg2Nik7bi5leHBvcnRzPWZ1bmN0aW9uKG4scil7dmFyIG8sZixwLGcsbSxoPW4udGFyZ2V0LGI9bi5nbG9iYWwseT1uLnN0YXQ7aWYobz1iP2k6eT9pW2hdfHxjKGgse30pOihpW2hdfHx7fSkucHJvdG90eXBlKWZvcihmIGluIHIpe2lmKGc9cltmXSxwPW4uZG9udENhbGxHZXRTZXQ/KG09YShvLGYpKSYmbS52YWx1ZTpvW2ZdLCFkKGI/ZjpoKyh5P1wiLlwiOlwiI1wiKStmLG4uZm9yY2VkKSYmcCE9PXQpe2lmKGUoZyk9PWUocCkpY29udGludWU7dShnLHApfShuLnNoYW18fHAmJnAuc2hhbSkmJmwoZyxcInNoYW1cIiwhMCkscyhvLGYsZyxuKX19fSxmdW5jdGlvbih0LG4pe3ZhciBvPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLk1hdGg9PU1hdGgmJmV9O3QuZXhwb3J0cz1vKFwib2JqZWN0XCI9PShcInVuZGVmaW5lZFwiPT10eXBlb2YgZ2xvYmFsVGhpcz9cInVuZGVmaW5lZFwiOmUoZ2xvYmFsVGhpcykpJiZnbG9iYWxUaGlzKXx8byhcIm9iamVjdFwiPT0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdz9cInVuZGVmaW5lZFwiOmUod2luZG93KSkmJndpbmRvdyl8fG8oXCJvYmplY3RcIj09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBzZWxmP1widW5kZWZpbmVkXCI6ZShzZWxmKSkmJnNlbGYpfHxvKFwib2JqZWN0XCI9PWUoci5nKSYmci5nKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2KSxvPW4oOCksaT1uKDEwKSxhPW4oMTEpLGw9bigxMikscz1uKDE3KSxjPW4oMzcpLHU9big0MCksZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO3QuZj1yP2Q6ZnVuY3Rpb24oZSx0KXtpZihlPWwoZSksdD1zKHQpLHUpdHJ5e3JldHVybiBkKGUsdCl9Y2F0Y2gobil7fWlmKGMoZSx0KSlyZXR1cm4gYSghbyhpLmYsZSx0KSxlW3RdKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDcpO2UuZXhwb3J0cz0hcigoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdfSkpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oOSksbz1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtlLmV4cG9ydHM9cj9vLmJpbmQobyk6ZnVuY3Rpb24oKXtyZXR1cm4gby5hcHBseShvLGFyZ3VtZW50cyl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big3KTtlLmV4cG9ydHM9IXIoKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oKXt9LmJpbmQoKTtyZXR1cm5cImZ1bmN0aW9uXCIhPXR5cGVvZiBlfHxlLmhhc093blByb3BlcnR5KFwicHJvdG90eXBlXCIpfSkpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9e30ucHJvcGVydHlJc0VudW1lcmFibGUsbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLGk9byYmIXIuY2FsbCh7MToyfSwxKTt0LmY9aT9mdW5jdGlvbihlKXt2YXIgdD1vKHRoaXMsZSk7cmV0dXJuISF0JiZ0LmVudW1lcmFibGV9OnJ9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6ISgxJmUpLGNvbmZpZ3VyYWJsZTohKDImZSksd3JpdGFibGU6ISg0JmUpLHZhbHVlOnR9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTMpLG89bigxNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKG8oZSkpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTQpLG89big3KSxpPW4oMTUpLGE9T2JqZWN0LGw9cihcIlwiLnNwbGl0KTtlLmV4cG9ydHM9bygoZnVuY3Rpb24oKXtyZXR1cm4hYShcInpcIikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk/ZnVuY3Rpb24oZSl7cmV0dXJuXCJTdHJpbmdcIj09aShlKT9sKGUsXCJcIik6YShlKX06YX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oOSksbz1GdW5jdGlvbi5wcm90b3R5cGUsaT1vLmJpbmQsYT1vLmNhbGwsbD1yJiZpLmJpbmQoYSxhKTtlLmV4cG9ydHM9cj9mdW5jdGlvbihlKXtyZXR1cm4gZSYmbChlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE0KSxvPXIoe30udG9TdHJpbmcpLGk9cihcIlwiLnNsaWNlKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGkobyhlKSw4LC0xKX19LGZ1bmN0aW9uKGUsbil7dmFyIHI9VHlwZUVycm9yO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihlPT10KXRocm93IHIoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIitlKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE4KSxvPW4oMjEpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1yKGUsXCJzdHJpbmdcIik7cmV0dXJuIG8odCk/dDp0K1wiXCJ9fSxmdW5jdGlvbihlLG4scil7dmFyIG89cig4KSxpPXIoMTkpLGE9cigyMSksbD1yKDI4KSxzPXIoMzEpLGM9cigzMiksdT1UeXBlRXJyb3IsZD1jKFwidG9QcmltaXRpdmVcIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7aWYoIWkoZSl8fGEoZSkpcmV0dXJuIGU7dmFyIHIsYz1sKGUsZCk7aWYoYyl7aWYobj09PXQmJihuPVwiZGVmYXVsdFwiKSxyPW8oYyxlLG4pLCFpKHIpfHxhKHIpKXJldHVybiByO3Rocm93IHUoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIil9cmV0dXJuIG49PT10JiYobj1cIm51bWJlclwiKSxzKGUsbil9fSxmdW5jdGlvbih0LG4scil7dmFyIG89cigyMCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVyblwib2JqZWN0XCI9PWUodCk/bnVsbCE9PXQ6byh0KX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9fSxmdW5jdGlvbih0LG4scil7dmFyIG89cigyMiksaT1yKDIwKSxhPXIoMjMpLGw9cigyNCkscz1PYmplY3Q7dC5leHBvcnRzPWw/ZnVuY3Rpb24odCl7cmV0dXJuXCJzeW1ib2xcIj09ZSh0KX06ZnVuY3Rpb24oZSl7dmFyIHQ9byhcIlN5bWJvbFwiKTtyZXR1cm4gaSh0KSYmYSh0LnByb3RvdHlwZSxzKGUpKX19LGZ1bmN0aW9uKGUsbixyKXt2YXIgbz1yKDQpLGk9cigyMCksYT1mdW5jdGlvbihlKXtyZXR1cm4gaShlKT9lOnR9O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/YShvW2VdKTpvW2VdJiZvW2VdW3RdfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTQpO2UuZXhwb3J0cz1yKHt9LmlzUHJvdG90eXBlT2YpfSxmdW5jdGlvbih0LG4scil7dmFyIG89cigyNSk7dC5leHBvcnRzPW8mJiFTeW1ib2wuc2hhbSYmXCJzeW1ib2xcIj09ZShTeW1ib2wuaXRlcmF0b3IpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigyNiksbz1uKDcpO2UuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFvKChmdW5jdGlvbigpe3ZhciBlPVN5bWJvbCgpO3JldHVybiFTdHJpbmcoZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJnImJnI8NDF9KSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGk9big0KSxhPW4oMjcpLGw9aS5wcm9jZXNzLHM9aS5EZW5vLGM9bCYmbC52ZXJzaW9uc3x8cyYmcy52ZXJzaW9uLHU9YyYmYy52ODt1JiYobz0ocj11LnNwbGl0KFwiLlwiKSlbMF0+MCYmclswXTw0PzE6KyhyWzBdK3JbMV0pKSwhbyYmYSYmKCEocj1hLm1hdGNoKC9FZGdlXFwvKFxcZCspLykpfHxyWzFdPj03NCkmJihyPWEubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pKSYmKG89K3JbMV0pLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigyMik7ZS5leHBvcnRzPXIoXCJuYXZpZ2F0b3JcIixcInVzZXJBZ2VudFwiKXx8XCJcIn0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoMjkpO2UuZXhwb3J0cz1mdW5jdGlvbihlLG4pe3ZhciByPWVbbl07cmV0dXJuIG51bGw9PXI/dDpvKHIpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMjApLG89bigzMCksaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHIoZSkpcmV0dXJuIGU7dGhyb3cgaShvKGUpK1wiIGlzIG5vdCBhIGZ1bmN0aW9uXCIpfX0sZnVuY3Rpb24oZSx0KXt2YXIgbj1TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3RyeXtyZXR1cm4gbihlKX1jYXRjaCh0KXtyZXR1cm5cIk9iamVjdFwifX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDgpLG89bigyMCksaT1uKDE5KSxhPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbixsO2lmKFwic3RyaW5nXCI9PT10JiZvKG49ZS50b1N0cmluZykmJiFpKGw9cihuLGUpKSlyZXR1cm4gbDtpZihvKG49ZS52YWx1ZU9mKSYmIWkobD1yKG4sZSkpKXJldHVybiBsO2lmKFwic3RyaW5nXCIhPT10JiZvKG49ZS50b1N0cmluZykmJiFpKGw9cihuLGUpKSlyZXR1cm4gbDt0aHJvdyBhKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNCksbz1uKDMzKSxpPW4oMzcpLGE9bigzOSksbD1uKDI1KSxzPW4oMjQpLGM9byhcIndrc1wiKSx1PXIuU3ltYm9sLGQ9dSYmdS5mb3IsZj1zP3U6dSYmdS53aXRob3V0U2V0dGVyfHxhO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighaShjLGUpfHwhbCYmXCJzdHJpbmdcIiE9dHlwZW9mIGNbZV0pe3ZhciB0PVwiU3ltYm9sLlwiK2U7bCYmaSh1LGUpP2NbZV09dVtlXTpjW2VdPXMmJmQ/ZCh0KTpmKHQpfXJldHVybiBjW2VdfX0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoMzQpLGk9cigzNSk7KGUuZXhwb3J0cz1mdW5jdGlvbihlLG4pe3JldHVybiBpW2VdfHwoaVtlXT1uIT09dD9uOnt9KX0pKFwidmVyc2lvbnNcIixbXSkucHVzaCh7dmVyc2lvbjpcIjMuMjQuMVwiLG1vZGU6bz9cInB1cmVcIjpcImdsb2JhbFwiLGNvcHlyaWdodDpcIlx1MDBhOSAyMDE0LTIwMjIgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlcIixsaWNlbnNlOlwiaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4yNC4xL0xJQ0VOU0VcIixzb3VyY2U6XCJodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qc1wifSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPSExfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big0KSxvPW4oMzYpLGk9XCJfX2NvcmUtanNfc2hhcmVkX19cIixhPXJbaV18fG8oaSx7fSk7ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQpLG89T2JqZWN0LmRlZmluZVByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3RyeXtvKHIsZSx7dmFsdWU6dCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KX1jYXRjaChuKXtyW2VdPXR9cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNCksbz1uKDM4KSxpPXIoe30uaGFzT3duUHJvcGVydHkpO2UuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbihlLHQpe3JldHVybiBpKG8oZSksdCl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxNiksbz1PYmplY3Q7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBvKHIoZSkpfX0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoMTQpLGk9MCxhPU1hdGgucmFuZG9tKCksbD1vKDEuLnRvU3RyaW5nKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJTeW1ib2woXCIrKGU9PT10P1wiXCI6ZSkrXCIpX1wiK2woKytpK2EsMzYpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNiksbz1uKDcpLGk9big0MSk7ZS5leHBvcnRzPSFyJiYhbygoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KGkoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDQpLG89bigxOSksaT1yLmRvY3VtZW50LGE9byhpKSYmbyhpLmNyZWF0ZUVsZW1lbnQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYT9pLmNyZWF0ZUVsZW1lbnQoZSk6e319fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2KSxvPW4oNDMpLGk9bigxMSk7ZS5leHBvcnRzPXI/ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvLmYoZSx0LGkoMSxuKSl9OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZVt0XT1uLGV9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2KSxvPW4oNDApLGk9big0NCksYT1uKDQ1KSxsPW4oMTcpLHM9VHlwZUVycm9yLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5LHU9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt0LmY9cj9pP2Z1bmN0aW9uKGUsdCxuKXtpZihhKGUpLHQ9bCh0KSxhKG4pLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJlwicHJvdG90eXBlXCI9PT10JiZcInZhbHVlXCJpbiBuJiZcIndyaXRhYmxlXCJpbiBuJiYhbi53cml0YWJsZSl7dmFyIHI9dShlLHQpO3ImJnIud3JpdGFibGUmJihlW3RdPW4udmFsdWUsbj17Y29uZmlndXJhYmxlOlwiY29uZmlndXJhYmxlXCJpbiBuP24uY29uZmlndXJhYmxlOnIuY29uZmlndXJhYmxlLGVudW1lcmFibGU6XCJlbnVtZXJhYmxlXCJpbiBuP24uZW51bWVyYWJsZTpyLmVudW1lcmFibGUsd3JpdGFibGU6ITF9KX1yZXR1cm4gYyhlLHQsbil9OmM6ZnVuY3Rpb24oZSx0LG4pe2lmKGEoZSksdD1sKHQpLGEobiksbyl0cnl7cmV0dXJuIGMoZSx0LG4pfWNhdGNoKHIpe31pZihcImdldFwiaW4gbnx8XCJzZXRcImluIG4pdGhyb3cgcyhcIkFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkXCIpO3JldHVyblwidmFsdWVcImluIG4mJihlW3RdPW4udmFsdWUpLGV9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2KSxvPW4oNyk7ZS5leHBvcnRzPXImJm8oKGZ1bmN0aW9uKCl7cmV0dXJuIDQyIT1PYmplY3QuZGVmaW5lUHJvcGVydHkoKGZ1bmN0aW9uKCl7fSksXCJwcm90b3R5cGVcIix7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGV9KSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE5KSxvPVN0cmluZyxpPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYocihlKSlyZXR1cm4gZTt0aHJvdyBpKG8oZSkrXCIgaXMgbm90IGFuIG9iamVjdFwiKX19LGZ1bmN0aW9uKGUsbixyKXt2YXIgbz1yKDIwKSxpPXIoNDMpLGE9cig0NyksbD1yKDM2KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSxuLHIscyl7c3x8KHM9e30pO3ZhciBjPXMuZW51bWVyYWJsZSx1PXMubmFtZSE9PXQ/cy5uYW1lOm47aWYobyhyKSYmYShyLHUscykscy5nbG9iYWwpYz9lW25dPXI6bChuLHIpO2Vsc2V7dHJ5e3MudW5zYWZlP2Vbbl0mJihjPSEwKTpkZWxldGUgZVtuXX1jYXRjaChkKXt9Yz9lW25dPXI6aS5mKGUsbix7dmFsdWU6cixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohcy5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IXMubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19LGZ1bmN0aW9uKGUsbixyKXt2YXIgbz1yKDcpLGk9cigyMCksYT1yKDM3KSxsPXIoNikscz1yKDQ4KS5DT05GSUdVUkFCTEUsYz1yKDQ5KSx1PXIoNTApLGQ9dS5lbmZvcmNlLGY9dS5nZXQscD1PYmplY3QuZGVmaW5lUHJvcGVydHksZz1sJiYhbygoZnVuY3Rpb24oKXtyZXR1cm4gOCE9PXAoKGZ1bmN0aW9uKCl7fSksXCJsZW5ndGhcIix7dmFsdWU6OH0pLmxlbmd0aH0pKSxtPVN0cmluZyhTdHJpbmcpLnNwbGl0KFwiU3RyaW5nXCIpLGg9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbixyKXtcIlN5bWJvbChcIj09PVN0cmluZyhuKS5zbGljZSgwLDcpJiYobj1cIltcIitTdHJpbmcobikucmVwbGFjZSgvXlN5bWJvbFxcKChbXildKilcXCkvLFwiJDFcIikrXCJdXCIpLHImJnIuZ2V0dGVyJiYobj1cImdldCBcIituKSxyJiZyLnNldHRlciYmKG49XCJzZXQgXCIrbiksKCFhKGUsXCJuYW1lXCIpfHxzJiZlLm5hbWUhPT1uKSYmKGw/cChlLFwibmFtZVwiLHt2YWx1ZTpuLGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT1uKSxnJiZyJiZhKHIsXCJhcml0eVwiKSYmZS5sZW5ndGghPT1yLmFyaXR5JiZwKGUsXCJsZW5ndGhcIix7dmFsdWU6ci5hcml0eX0pO3RyeXtyJiZhKHIsXCJjb25zdHJ1Y3RvclwiKSYmci5jb25zdHJ1Y3Rvcj9sJiZwKGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KTplLnByb3RvdHlwZSYmKGUucHJvdG90eXBlPXQpfWNhdGNoKGkpe312YXIgbz1kKGUpO3JldHVybiBhKG8sXCJzb3VyY2VcIil8fChvLnNvdXJjZT1tLmpvaW4oXCJzdHJpbmdcIj09dHlwZW9mIG4/bjpcIlwiKSksZX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPWgoKGZ1bmN0aW9uKCl7cmV0dXJuIGkodGhpcykmJmYodGhpcykuc291cmNlfHxjKHRoaXMpfSksXCJ0b1N0cmluZ1wiKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNiksbz1uKDM3KSxpPUZ1bmN0aW9uLnByb3RvdHlwZSxhPXImJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsbD1vKGksXCJuYW1lXCIpLHM9bCYmXCJzb21ldGhpbmdcIj09PWZ1bmN0aW9uKCl7fS5uYW1lLGM9bCYmKCFyfHxyJiZhKGksXCJuYW1lXCIpLmNvbmZpZ3VyYWJsZSk7ZS5leHBvcnRzPXtFWElTVFM6bCxQUk9QRVI6cyxDT05GSUdVUkFCTEU6Y319LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE0KSxvPW4oMjApLGk9bigzNSksYT1yKEZ1bmN0aW9uLnRvU3RyaW5nKTtvKGkuaW5zcGVjdFNvdXJjZSl8fChpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSxlLmV4cG9ydHM9aS5pbnNwZWN0U291cmNlfSxmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxpLGE9big1MSksbD1uKDQpLHM9bigxNCksYz1uKDE5KSx1PW4oNDIpLGQ9bigzNyksZj1uKDM1KSxwPW4oNTIpLGc9big1MyksbT1cIk9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkXCIsaD1sLlR5cGVFcnJvcixiPWwuV2Vha01hcDtpZihhfHxmLnN0YXRlKXt2YXIgeT1mLnN0YXRlfHwoZi5zdGF0ZT1uZXcgYiksdj1zKHkuZ2V0KSx3PXMoeS5oYXMpLFM9cyh5LnNldCk7cj1mdW5jdGlvbihlLHQpe2lmKHcoeSxlKSl0aHJvdyBuZXcgaChtKTtyZXR1cm4gdC5mYWNhZGU9ZSxTKHksZSx0KSx0fSxvPWZ1bmN0aW9uKGUpe3JldHVybiB2KHksZSl8fHt9fSxpPWZ1bmN0aW9uKGUpe3JldHVybiB3KHksZSl9fWVsc2V7dmFyIFA9cChcInN0YXRlXCIpO2dbUF09ITAscj1mdW5jdGlvbihlLHQpe2lmKGQoZSxQKSl0aHJvdyBuZXcgaChtKTtyZXR1cm4gdC5mYWNhZGU9ZSx1KGUsUCx0KSx0fSxvPWZ1bmN0aW9uKGUpe3JldHVybiBkKGUsUCk/ZVtQXTp7fX0saT1mdW5jdGlvbihlKXtyZXR1cm4gZChlLFApfX1lLmV4cG9ydHM9e3NldDpyLGdldDpvLGhhczppLGVuZm9yY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSk/byhlKTpyKGUse30pfSxnZXR0ZXJGb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuO2lmKCFjKHQpfHwobj1vKHQpKS50eXBlIT09ZSl0aHJvdyBoKFwiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBcIitlK1wiIHJlcXVpcmVkXCIpO3JldHVybiBufX19fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big0KSxvPW4oMjApLGk9big0OSksYT1yLldlYWtNYXA7ZS5leHBvcnRzPW8oYSkmJi9uYXRpdmUgY29kZS8udGVzdChpKGEpKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMzMpLG89bigzOSksaT1yKFwia2V5c1wiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGlbZV18fChpW2VdPW8oZSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e319LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDM3KSxvPW4oNTUpLGk9big1KSxhPW4oNDMpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciBsPW8odCkscz1hLmYsYz1pLmYsdT0wO3U8bC5sZW5ndGg7dSsrKXt2YXIgZD1sW3VdO3IoZSxkKXx8biYmcihuLGQpfHxzKGUsZCxjKHQsZCkpfX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDIyKSxvPW4oMTQpLGk9big1NiksYT1uKDY1KSxsPW4oNDUpLHM9byhbXS5jb25jYXQpO2UuZXhwb3J0cz1yKFwiUmVmbGVjdFwiLFwib3duS2V5c1wiKXx8ZnVuY3Rpb24oZSl7dmFyIHQ9aS5mKGwoZSkpLG49YS5mO3JldHVybiBuP3ModCxuKGUpKTp0fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNTcpLG89big2NCkuY29uY2F0KFwibGVuZ3RoXCIsXCJwcm90b3R5cGVcIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gcihlLG8pfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTQpLG89bigzNyksaT1uKDEyKSxhPW4oNTgpLmluZGV4T2YsbD1uKDUzKSxzPXIoW10ucHVzaCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1pKGUpLGM9MCx1PVtdO2ZvcihuIGluIHIpIW8obCxuKSYmbyhyLG4pJiZzKHUsbik7Zm9yKDt0Lmxlbmd0aD5jOylvKHIsbj10W2MrK10pJiYofmEodSxuKXx8cyh1LG4pKTtyZXR1cm4gdX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDEyKSxvPW4oNTkpLGk9big2MiksYT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxuLGEpe3ZhciBsLHM9cih0KSxjPWkocyksdT1vKGEsYyk7aWYoZSYmbiE9bil7Zm9yKDtjPnU7KWlmKChsPXNbdSsrXSkhPWwpcmV0dXJuITB9ZWxzZSBmb3IoO2M+dTt1KyspaWYoKGV8fHUgaW4gcykmJnNbdV09PT1uKXJldHVybiBlfHx1fHwwO3JldHVybiFlJiYtMX19O2UuZXhwb3J0cz17aW5jbHVkZXM6YSghMCksaW5kZXhPZjphKCExKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYwKSxvPU1hdGgubWF4LGk9TWF0aC5taW47ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49cihlKTtyZXR1cm4gbjwwP28obit0LDApOmkobix0KX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDYxKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPXR8fDA9PT10PzA6cih0KX19LGZ1bmN0aW9uKGUsdCl7dmFyIG49TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjtlLmV4cG9ydHM9TWF0aC50cnVuY3x8ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuKHQ+MD9yOm4pKHQpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNjMpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihlLmxlbmd0aCl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big2MCksbz1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9vKHIoZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPVtcImNvbnN0cnVjdG9yXCIsXCJoYXNPd25Qcm9wZXJ0eVwiLFwiaXNQcm90b3R5cGVPZlwiLFwicHJvcGVydHlJc0VudW1lcmFibGVcIixcInRvTG9jYWxlU3RyaW5nXCIsXCJ0b1N0cmluZ1wiLFwidmFsdWVPZlwiXX0sZnVuY3Rpb24oZSx0KXt0LmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNyksbz1uKDIwKSxpPS8jfFxcLnByb3RvdHlwZVxcLi8sYT1mdW5jdGlvbihlLHQpe3ZhciBuPXNbbChlKV07cmV0dXJuIG49PXV8fG4hPWMmJihvKHQpP3IodCk6ISF0KX0sbD1hLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoaSxcIi5cIikudG9Mb3dlckNhc2UoKX0scz1hLmRhdGE9e30sYz1hLk5BVElWRT1cIk5cIix1PWEuUE9MWUZJTEw9XCJQXCI7ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDE1KSxvPW4oNCk7ZS5leHBvcnRzPVwicHJvY2Vzc1wiPT1yKG8ucHJvY2Vzcyl9LGZ1bmN0aW9uKGUsbixyKXt2YXIgbz1yKDE0KSxpPXIoNDUpLGE9cig2OSk7ZS5leHBvcnRzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KFwiX19wcm90b19fXCJpbnt9P2Z1bmN0aW9uKCl7dmFyIGUsdD0hMSxuPXt9O3RyeXsoZT1vKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSxcIl9fcHJvdG9fX1wiKS5zZXQpKShuLFtdKSx0PW4gaW5zdGFuY2VvZiBBcnJheX1jYXRjaChyKXt9cmV0dXJuIGZ1bmN0aW9uKG4scil7cmV0dXJuIGkobiksYShyKSx0P2UobixyKTpuLl9fcHJvdG9fXz1yLG59fSgpOnQpfSxmdW5jdGlvbih0LG4scil7dmFyIG89cigyMCksaT1TdHJpbmcsYT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFwib2JqZWN0XCI9PWUodCl8fG8odCkpcmV0dXJuIHQ7dGhyb3cgYShcIkNhbid0IHNldCBcIitpKHQpK1wiIGFzIGEgcHJvdG90eXBlXCIpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNDMpLmYsbz1uKDM3KSxpPW4oMzIpKFwidG9TdHJpbmdUYWdcIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxuKXtlJiYhbiYmKGU9ZS5wcm90b3R5cGUpLGUmJiFvKGUsaSkmJnIoZSxpLHtjb25maWd1cmFibGU6ITAsdmFsdWU6dH0pfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMjIpLG89big0MyksaT1uKDMyKSxhPW4oNiksbD1pKFwic3BlY2llc1wiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9cihlKSxuPW8uZjthJiZ0JiYhdFtsXSYmbih0LGwse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDIzKSxvPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihyKHQsZSkpcmV0dXJuIGU7dGhyb3cgbyhcIkluY29ycmVjdCBpbnZvY2F0aW9uXCIpfX0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoNDUpLGk9cig3NCksYT1yKDMyKShcInNwZWNpZXNcIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7dmFyIHIsbD1vKGUpLmNvbnN0cnVjdG9yO3JldHVybiBsPT09dHx8KHI9byhsKVthXSk9PXQ/bjppKHIpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNzUpLG89bigzMCksaT1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHIoZSkpcmV0dXJuIGU7dGhyb3cgaShvKGUpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yXCIpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTQpLG89big3KSxpPW4oMjApLGE9big3NiksbD1uKDIyKSxzPW4oNDkpLGM9ZnVuY3Rpb24oKXt9LHU9W10sZD1sKFwiUmVmbGVjdFwiLFwiY29uc3RydWN0XCIpLGY9L15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLyxwPXIoZi5leGVjKSxnPSFmLmV4ZWMoYyksbT1mdW5jdGlvbihlKXtpZighaShlKSlyZXR1cm4hMTt0cnl7cmV0dXJuIGQoYyx1LGUpLCEwfWNhdGNoKHQpe3JldHVybiExfX0saD1mdW5jdGlvbihlKXtpZighaShlKSlyZXR1cm4hMTtzd2l0Y2goYShlKSl7Y2FzZVwiQXN5bmNGdW5jdGlvblwiOmNhc2VcIkdlbmVyYXRvckZ1bmN0aW9uXCI6Y2FzZVwiQXN5bmNHZW5lcmF0b3JGdW5jdGlvblwiOnJldHVybiExfXRyeXtyZXR1cm4gZ3x8ISFwKGYscyhlKSl9Y2F0Y2godCl7cmV0dXJuITB9fTtoLnNoYW09ITAsZS5leHBvcnRzPSFkfHxvKChmdW5jdGlvbigpe3ZhciBlO3JldHVybiBtKG0uY2FsbCl8fCFtKE9iamVjdCl8fCFtKChmdW5jdGlvbigpe2U9ITB9KSl8fGV9KSk/aDptfSxmdW5jdGlvbihlLG4scil7dmFyIG89cig3NyksaT1yKDIwKSxhPXIoMTUpLGw9cigzMikoXCJ0b1N0cmluZ1RhZ1wiKSxzPU9iamVjdCxjPVwiQXJndW1lbnRzXCI9PWEoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKTtlLmV4cG9ydHM9bz9hOmZ1bmN0aW9uKGUpe3ZhciBuLHIsbztyZXR1cm4gZT09PXQ/XCJVbmRlZmluZWRcIjpudWxsPT09ZT9cIk51bGxcIjpcInN0cmluZ1wiPT10eXBlb2Yocj1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gZVt0XX1jYXRjaChuKXt9fShuPXMoZSksbCkpP3I6Yz9hKG4pOlwiT2JqZWN0XCI9PShvPWEobikpJiZpKG4uY2FsbGVlKT9cIkFyZ3VtZW50c1wiOm99fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9e307cltuKDMyKShcInRvU3RyaW5nVGFnXCIpXT1cInpcIixlLmV4cG9ydHM9XCJbb2JqZWN0IHpdXCI9PT1TdHJpbmcocil9LGZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpLGEsbCxzPXIoNCksYz1yKDc5KSx1PXIoODApLGQ9cigyMCksZj1yKDM3KSxwPXIoNyksZz1yKDgxKSxtPXIoODIpLGg9cig0MSksYj1yKDgzKSx5PXIoODQpLHY9cig2Nyksdz1zLnNldEltbWVkaWF0ZSxTPXMuY2xlYXJJbW1lZGlhdGUsUD1zLnByb2Nlc3MseD1zLkRpc3BhdGNoLE89cy5GdW5jdGlvbixfPXMuTWVzc2FnZUNoYW5uZWwsQz1zLlN0cmluZyxrPTAsQT17fTt0cnl7bz1zLmxvY2F0aW9ufWNhdGNoKEwpe312YXIgVD1mdW5jdGlvbihlKXtpZihmKEEsZSkpe3ZhciB0PUFbZV07ZGVsZXRlIEFbZV0sdCgpfX0sRT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtUKGUpfX0saj1mdW5jdGlvbihlKXtUKGUuZGF0YSl9LEk9ZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShDKGUpLG8ucHJvdG9jb2wrXCIvL1wiK28uaG9zdCl9O3cmJlN8fCh3PWZ1bmN0aW9uKGUpe2IoYXJndW1lbnRzLmxlbmd0aCwxKTt2YXIgbj1kKGUpP2U6TyhlKSxyPW0oYXJndW1lbnRzLDEpO3JldHVybiBBWysra109ZnVuY3Rpb24oKXtjKG4sdCxyKX0saShrKSxrfSxTPWZ1bmN0aW9uKGUpe2RlbGV0ZSBBW2VdfSx2P2k9ZnVuY3Rpb24oZSl7UC5uZXh0VGljayhFKGUpKX06eCYmeC5ub3c/aT1mdW5jdGlvbihlKXt4Lm5vdyhFKGUpKX06XyYmIXk/KGw9KGE9bmV3IF8pLnBvcnQyLGEucG9ydDEub25tZXNzYWdlPWosaT11KGwucG9zdE1lc3NhZ2UsbCkpOnMuYWRkRXZlbnRMaXN0ZW5lciYmZChzLnBvc3RNZXNzYWdlKSYmIXMuaW1wb3J0U2NyaXB0cyYmbyYmXCJmaWxlOlwiIT09by5wcm90b2NvbCYmIXAoSSk/KGk9SSxzLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaiwhMSkpOmk9XCJvbnJlYWR5c3RhdGVjaGFuZ2VcImluIGgoXCJzY3JpcHRcIik/ZnVuY3Rpb24oZSl7Zy5hcHBlbmRDaGlsZChoKFwic2NyaXB0XCIpKS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtnLnJlbW92ZUNoaWxkKHRoaXMpLFQoZSl9fTpmdW5jdGlvbihlKXtzZXRUaW1lb3V0KEUoZSksMCl9KSxlLmV4cG9ydHM9e3NldDp3LGNsZWFyOlN9fSxmdW5jdGlvbih0LG4scil7dmFyIG89cig5KSxpPUZ1bmN0aW9uLnByb3RvdHlwZSxhPWkuYXBwbHksbD1pLmNhbGw7dC5leHBvcnRzPVwib2JqZWN0XCI9PShcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdD9cInVuZGVmaW5lZFwiOmUoUmVmbGVjdCkpJiZSZWZsZWN0LmFwcGx5fHwobz9sLmJpbmQoYSk6ZnVuY3Rpb24oKXtyZXR1cm4gbC5hcHBseShhLGFyZ3VtZW50cyl9KX0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoMTQpLGk9cigyOSksYT1yKDkpLGw9byhvLmJpbmQpO2UuZXhwb3J0cz1mdW5jdGlvbihlLG4pe3JldHVybiBpKGUpLG49PT10P2U6YT9sKGUsbik6ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShuLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMjIpO2UuZXhwb3J0cz1yKFwiZG9jdW1lbnRcIixcImRvY3VtZW50RWxlbWVudFwiKX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTQpO2UuZXhwb3J0cz1yKFtdLnNsaWNlKX0sZnVuY3Rpb24oZSx0KXt2YXIgbj1UeXBlRXJyb3I7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZTx0KXRocm93IG4oXCJOb3QgZW5vdWdoIGFyZ3VtZW50c1wiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDI3KTtlLmV4cG9ydHM9Lyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3Qocil9LGZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpLGEsbCxzLGMsdSxkLGY9cig0KSxwPXIoODApLGc9cig1KS5mLG09cig3OCkuc2V0LGg9cig4NCksYj1yKDg2KSx5PXIoODcpLHY9cig2Nyksdz1mLk11dGF0aW9uT2JzZXJ2ZXJ8fGYuV2ViS2l0TXV0YXRpb25PYnNlcnZlcixTPWYuZG9jdW1lbnQsUD1mLnByb2Nlc3MseD1mLlByb21pc2UsTz1nKGYsXCJxdWV1ZU1pY3JvdGFza1wiKSxfPU8mJk8udmFsdWU7X3x8KG89ZnVuY3Rpb24oKXt2YXIgZSxuO2Zvcih2JiYoZT1QLmRvbWFpbikmJmUuZXhpdCgpO2k7KXtuPWkuZm4saT1pLm5leHQ7dHJ5e24oKX1jYXRjaChyKXt0aHJvdyBpP2woKTphPXQscn19YT10LGUmJmUuZW50ZXIoKX0saHx8dnx8eXx8IXd8fCFTPyFiJiZ4JiZ4LnJlc29sdmU/KCh1PXgucmVzb2x2ZSh0KSkuY29uc3RydWN0b3I9eCxkPXAodS50aGVuLHUpLGw9ZnVuY3Rpb24oKXtkKG8pfSk6dj9sPWZ1bmN0aW9uKCl7UC5uZXh0VGljayhvKX06KG09cChtLGYpLGw9ZnVuY3Rpb24oKXttKG8pfSk6KHM9ITAsYz1TLmNyZWF0ZVRleHROb2RlKFwiXCIpLG5ldyB3KG8pLm9ic2VydmUoYyx7Y2hhcmFjdGVyRGF0YTohMH0pLGw9ZnVuY3Rpb24oKXtjLmRhdGE9cz0hc30pKSxlLmV4cG9ydHM9X3x8ZnVuY3Rpb24oZSl7dmFyIG49e2ZuOmUsbmV4dDp0fTthJiYoYS5uZXh0PW4pLGl8fChpPW4sbCgpKSxhPW59fSxmdW5jdGlvbihlLG4scil7dmFyIG89cigyNyksaT1yKDQpO2UuZXhwb3J0cz0vaXBhZHxpcGhvbmV8aXBvZC9pLnRlc3QobykmJmkuUGViYmxlIT09dH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMjcpO2UuZXhwb3J0cz0vd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KHIpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1yLmNvbnNvbGU7biYmbi5lcnJvciYmKDE9PWFyZ3VtZW50cy5sZW5ndGg/bi5lcnJvcihlKTpuLmVycm9yKGUsdCkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybntlcnJvcjohMSx2YWx1ZTplKCl9fWNhdGNoKHQpe3JldHVybntlcnJvcjohMCx2YWx1ZTp0fX19fSxmdW5jdGlvbihlLHQpe3ZhciBuPWZ1bmN0aW9uKCl7dGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGx9O24ucHJvdG90eXBlPXthZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9e2l0ZW06ZSxuZXh0Om51bGx9O3RoaXMuaGVhZD90aGlzLnRhaWwubmV4dD10OnRoaXMuaGVhZD10LHRoaXMudGFpbD10fSxnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhlYWQ7aWYoZSlyZXR1cm4gdGhpcy5oZWFkPWUubmV4dCx0aGlzLnRhaWw9PT1lJiYodGhpcy50YWlsPW51bGwpLGUuaXRlbX19LGUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big0KTtlLmV4cG9ydHM9ci5Qcm9taXNlfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big0KSxvPW4oOTEpLGk9bigyMCksYT1uKDY2KSxsPW4oNDkpLHM9bigzMiksYz1uKDkzKSx1PW4oOTQpLGQ9bigzNCksZj1uKDI2KSxwPW8mJm8ucHJvdG90eXBlLGc9cyhcInNwZWNpZXNcIiksbT0hMSxoPWkoci5Qcm9taXNlUmVqZWN0aW9uRXZlbnQpLGI9YShcIlByb21pc2VcIiwoZnVuY3Rpb24oKXt2YXIgZT1sKG8pLHQ9ZSE9PVN0cmluZyhvKTtpZighdCYmNjY9PT1mKXJldHVybiEwO2lmKGQmJighcC5jYXRjaHx8IXAuZmluYWxseSkpcmV0dXJuITA7aWYoIWZ8fGY8NTF8fCEvbmF0aXZlIGNvZGUvLnRlc3QoZSkpe3ZhciBuPW5ldyBvKChmdW5jdGlvbihlKXtlKDEpfSkpLHI9ZnVuY3Rpb24oZSl7ZSgoZnVuY3Rpb24oKXt9KSwoZnVuY3Rpb24oKXt9KSl9O2lmKChuLmNvbnN0cnVjdG9yPXt9KVtnXT1yLCEobT1uLnRoZW4oKGZ1bmN0aW9uKCl7fSkpaW5zdGFuY2VvZiByKSlyZXR1cm4hMH1yZXR1cm4hdCYmKGN8fHUpJiYhaH0pKTtlLmV4cG9ydHM9e0NPTlNUUlVDVE9SOmIsUkVKRUNUSU9OX0VWRU5UOmgsU1VCQ0xBU1NJTkc6bX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1yKDk0KSxpPXIoNjcpO3QuZXhwb3J0cz0hbyYmIWkmJlwib2JqZWN0XCI9PShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI6ZSh3aW5kb3cpKSYmXCJvYmplY3RcIj09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBkb2N1bWVudD9cInVuZGVmaW5lZFwiOmUoZG9jdW1lbnQpKX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9XCJvYmplY3RcIj09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBEZW5vP1widW5kZWZpbmVkXCI6ZShEZW5vKSkmJkRlbm8mJlwib2JqZWN0XCI9PWUoRGVuby52ZXJzaW9uKX0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoMjkpLGk9ZnVuY3Rpb24oZSl7dmFyIG4scjt0aGlzLnByb21pc2U9bmV3IGUoKGZ1bmN0aW9uKGUsbyl7aWYobiE9PXR8fHIhPT10KXRocm93IFR5cGVFcnJvcihcIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yXCIpO249ZSxyPW99KSksdGhpcy5yZXNvbHZlPW8obiksdGhpcy5yZWplY3Q9byhyKX07ZS5leHBvcnRzLmY9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBpKGUpfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMyksbz1uKDgpLGk9bigyOSksYT1uKDk1KSxsPW4oODkpLHM9big5Nyk7cih7dGFyZ2V0OlwiUHJvbWlzZVwiLHN0YXQ6ITAsZm9yY2VkOm4oMTAzKX0se2FsbDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49YS5mKHQpLHI9bi5yZXNvbHZlLGM9bi5yZWplY3QsdT1sKChmdW5jdGlvbigpe3ZhciBuPWkodC5yZXNvbHZlKSxhPVtdLGw9MCx1PTE7cyhlLChmdW5jdGlvbihlKXt2YXIgaT1sKysscz0hMTt1KyssbyhuLHQsZSkudGhlbigoZnVuY3Rpb24oZSl7c3x8KHM9ITAsYVtpXT1lLC0tdXx8cihhKSl9KSxjKX0pKSwtLXV8fHIoYSl9KSk7cmV0dXJuIHUuZXJyb3ImJmModS52YWx1ZSksbi5wcm9taXNlfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIG89cig4MCksaT1yKDgpLGE9cig0NSksbD1yKDMwKSxzPXIoOTgpLGM9cig2MiksdT1yKDIzKSxkPXIoMTAwKSxmPXIoMTAxKSxwPXIoMTAyKSxnPVR5cGVFcnJvcixtPWZ1bmN0aW9uKGUsdCl7dGhpcy5zdG9wcGVkPWUsdGhpcy5yZXN1bHQ9dH0saD1tLnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe3ZhciBiLHksdix3LFMsUCx4LE89ciYmci50aGF0LF89ISghcnx8IXIuQVNfRU5UUklFUyksQz0hKCFyfHwhci5JU19SRUNPUkQpLGs9ISghcnx8IXIuSVNfSVRFUkFUT1IpLEE9ISghcnx8IXIuSU5URVJSVVBURUQpLFQ9byhuLE8pLEU9ZnVuY3Rpb24oZSl7cmV0dXJuIGImJnAoYixcIm5vcm1hbFwiLGUpLG5ldyBtKCEwLGUpfSxqPWZ1bmN0aW9uKGUpe3JldHVybiBfPyhhKGUpLEE/VChlWzBdLGVbMV0sRSk6VChlWzBdLGVbMV0pKTpBP1QoZSxFKTpUKGUpfTtpZihDKWI9dC5pdGVyYXRvcjtlbHNlIGlmKGspYj10O2Vsc2V7aWYoISh5PWYodCkpKXRocm93IGcobCh0KStcIiBpcyBub3QgaXRlcmFibGVcIik7aWYocyh5KSl7Zm9yKHY9MCx3PWModCk7dz52O3YrKylpZigoUz1qKHRbdl0pKSYmdShoLFMpKXJldHVybiBTO3JldHVybiBuZXcgbSghMSl9Yj1kKHQseSl9Zm9yKFA9Qz90Lm5leHQ6Yi5uZXh0OyEoeD1pKFAsYikpLmRvbmU7KXt0cnl7Uz1qKHgudmFsdWUpfWNhdGNoKEkpe3AoYixcInRocm93XCIsSSl9aWYoXCJvYmplY3RcIj09ZShTKSYmUyYmdShoLFMpKXJldHVybiBTfXJldHVybiBuZXcgbSghMSl9fSxmdW5jdGlvbihlLG4scil7dmFyIG89cigzMiksaT1yKDk5KSxhPW8oXCJpdGVyYXRvclwiKSxsPUFycmF5LnByb3RvdHlwZTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT10JiYoaS5BcnJheT09PWV8fGxbYV09PT1lKX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXt9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9big4KSxvPW4oMjkpLGk9big0NSksYT1uKDMwKSxsPW4oMTAxKSxzPVR5cGVFcnJvcjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPDI/bChlKTp0O2lmKG8obikpcmV0dXJuIGkocihuLGUpKTt0aHJvdyBzKGEoZSkrXCIgaXMgbm90IGl0ZXJhYmxlXCIpfX0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoNzYpLGk9cigyOCksYT1yKDk5KSxsPXIoMzIpKFwiaXRlcmF0b3JcIik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKGUhPXQpcmV0dXJuIGkoZSxsKXx8aShlLFwiQEBpdGVyYXRvclwiKXx8YVtvKGUpXX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDgpLG89big0NSksaT1uKDI4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciBhLGw7byhlKTt0cnl7aWYoIShhPWkoZSxcInJldHVyblwiKSkpe2lmKFwidGhyb3dcIj09PXQpdGhyb3cgbjtyZXR1cm4gbn1hPXIoYSxlKX1jYXRjaChzKXtsPSEwLGE9c31pZihcInRocm93XCI9PT10KXRocm93IG47aWYobCl0aHJvdyBhO3JldHVybiBvKGEpLG59fSxmdW5jdGlvbihlLG4scil7dmFyIG89cig5MSksaT1yKDEwNCksYT1yKDkyKS5DT05TVFJVQ1RPUjtlLmV4cG9ydHM9YXx8IWkoKGZ1bmN0aW9uKGUpe28uYWxsKGUpLnRoZW4odCwoZnVuY3Rpb24oKXt9KSl9KSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDMyKShcIml0ZXJhdG9yXCIpLG89ITE7dHJ5e3ZhciBpPTAsYT17bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOiEhaSsrfX0scmV0dXJuOmZ1bmN0aW9uKCl7bz0hMH19O2Fbcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShhLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2gobCl7fWUuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCF0JiYhbylyZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIGk9e307aVtyXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6bj0hMH19fX0sZShpKX1jYXRjaChsKXt9cmV0dXJuIG59fSxmdW5jdGlvbihlLG4scil7dmFyIG89cigzKSxpPXIoMzQpLGE9cig5MikuQ09OU1RSVUNUT1IsbD1yKDkxKSxzPXIoMjIpLGM9cigyMCksdT1yKDQ2KSxkPWwmJmwucHJvdG90eXBlO2lmKG8oe3RhcmdldDpcIlByb21pc2VcIixwcm90bzohMCxmb3JjZWQ6YSxyZWFsOiEwfSx7Y2F0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbih0LGUpfX0pLCFpJiZjKGwpKXt2YXIgZj1zKFwiUHJvbWlzZVwiKS5wcm90b3R5cGUuY2F0Y2g7ZC5jYXRjaCE9PWYmJnUoZCxcImNhdGNoXCIsZix7dW5zYWZlOiEwfSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigzKSxvPW4oOCksaT1uKDI5KSxhPW4oOTUpLGw9big4OSkscz1uKDk3KTtyKHt0YXJnZXQ6XCJQcm9taXNlXCIsc3RhdDohMCxmb3JjZWQ6bigxMDMpfSx7cmFjZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49YS5mKHQpLHI9bi5yZWplY3QsYz1sKChmdW5jdGlvbigpe3ZhciBhPWkodC5yZXNvbHZlKTtzKGUsKGZ1bmN0aW9uKGUpe28oYSx0LGUpLnRoZW4obi5yZXNvbHZlLHIpfSkpfSkpO3JldHVybiBjLmVycm9yJiZyKGMudmFsdWUpLG4ucHJvbWlzZX19KX0sZnVuY3Rpb24oZSxuLHIpe3ZhciBvPXIoMyksaT1yKDgpLGE9cig5NSk7byh7dGFyZ2V0OlwiUHJvbWlzZVwiLHN0YXQ6ITAsZm9yY2VkOnIoOTIpLkNPTlNUUlVDVE9SfSx7cmVqZWN0OmZ1bmN0aW9uKGUpe3ZhciBuPWEuZih0aGlzKTtyZXR1cm4gaShuLnJlamVjdCx0LGUpLG4ucHJvbWlzZX19KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMyksbz1uKDIyKSxpPW4oMzQpLGE9big5MSksbD1uKDkyKS5DT05TVFJVQ1RPUixzPW4oMTA5KSxjPW8oXCJQcm9taXNlXCIpLHU9aSYmIWw7cih7dGFyZ2V0OlwiUHJvbWlzZVwiLHN0YXQ6ITAsZm9yY2VkOml8fGx9LHtyZXNvbHZlOmZ1bmN0aW9uKGUpe3JldHVybiBzKHUmJnRoaXM9PT1jP2E6dGhpcyxlKX19KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oNDUpLG89bigxOSksaT1uKDk1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihyKGUpLG8odCkmJnQuY29uc3RydWN0b3I9PT1lKXJldHVybiB0O3ZhciBuPWkuZihlKTtyZXR1cm4oMCxuLnJlc29sdmUpKHQpLG4ucHJvbWlzZX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDMpLG89big4KSxpPW4oMjkpLGE9big5NSksbD1uKDg5KSxzPW4oOTcpO3Ioe3RhcmdldDpcIlByb21pc2VcIixzdGF0OiEwfSx7YWxsU2V0dGxlZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49YS5mKHQpLHI9bi5yZXNvbHZlLGM9bi5yZWplY3QsdT1sKChmdW5jdGlvbigpe3ZhciBuPWkodC5yZXNvbHZlKSxhPVtdLGw9MCxjPTE7cyhlLChmdW5jdGlvbihlKXt2YXIgaT1sKysscz0hMTtjKyssbyhuLHQsZSkudGhlbigoZnVuY3Rpb24oZSl7c3x8KHM9ITAsYVtpXT17c3RhdHVzOlwiZnVsZmlsbGVkXCIsdmFsdWU6ZX0sLS1jfHxyKGEpKX0pLChmdW5jdGlvbihlKXtzfHwocz0hMCxhW2ldPXtzdGF0dXM6XCJyZWplY3RlZFwiLHJlYXNvbjplfSwtLWN8fHIoYSkpfSkpfSkpLC0tY3x8cihhKX0pKTtyZXR1cm4gdS5lcnJvciYmYyh1LnZhbHVlKSxuLnByb21pc2V9fSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDMpLG89big4KSxpPW4oMjkpLGE9bigyMiksbD1uKDk1KSxzPW4oODkpLGM9big5NyksdT1cIk5vIG9uZSBwcm9taXNlIHJlc29sdmVkXCI7cih7dGFyZ2V0OlwiUHJvbWlzZVwiLHN0YXQ6ITB9LHthbnk6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPWEoXCJBZ2dyZWdhdGVFcnJvclwiKSxyPWwuZih0KSxkPXIucmVzb2x2ZSxmPXIucmVqZWN0LHA9cygoZnVuY3Rpb24oKXt2YXIgcj1pKHQucmVzb2x2ZSksYT1bXSxsPTAscz0xLHA9ITE7YyhlLChmdW5jdGlvbihlKXt2YXIgaT1sKyssYz0hMTtzKyssbyhyLHQsZSkudGhlbigoZnVuY3Rpb24oZSl7Y3x8cHx8KHA9ITAsZChlKSl9KSwoZnVuY3Rpb24oZSl7Y3x8cHx8KGM9ITAsYVtpXT1lLC0tc3x8ZihuZXcgbihhLHUpKSl9KSl9KSksLS1zfHxmKG5ldyBuKGEsdSkpfSkpO3JldHVybiBwLmVycm9yJiZmKHAudmFsdWUpLHIucHJvbWlzZX19KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMyksbz1uKDM0KSxpPW4oOTEpLGE9big3KSxsPW4oMjIpLHM9bigyMCksYz1uKDczKSx1PW4oMTA5KSxkPW4oNDYpLGY9aSYmaS5wcm90b3R5cGU7aWYocih7dGFyZ2V0OlwiUHJvbWlzZVwiLHByb3RvOiEwLHJlYWw6ITAsZm9yY2VkOiEhaSYmYSgoZnVuY3Rpb24oKXtmLmZpbmFsbHkuY2FsbCh7dGhlbjpmdW5jdGlvbigpe319LChmdW5jdGlvbigpe30pKX0pKX0se2ZpbmFsbHk6ZnVuY3Rpb24oZSl7dmFyIHQ9Yyh0aGlzLGwoXCJQcm9taXNlXCIpKSxuPXMoZSk7cmV0dXJuIHRoaXMudGhlbihuP2Z1bmN0aW9uKG4pe3JldHVybiB1KHQsZSgpKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBufSkpfTplLG4/ZnVuY3Rpb24obil7cmV0dXJuIHUodCxlKCkpLnRoZW4oKGZ1bmN0aW9uKCl7dGhyb3cgbn0pKX06ZSl9fSksIW8mJnMoaSkpe3ZhciBwPWwoXCJQcm9taXNlXCIpLnByb3RvdHlwZS5maW5hbGx5O2YuZmluYWxseSE9PXAmJmQoZixcImZpbmFsbHlcIixwLHt1bnNhZmU6ITB9KX19LGZ1bmN0aW9uKGUsbixyKXt2YXIgbz1yKDMpLGk9cig0KSxhPXIoMjIpLGw9cigxMSkscz1yKDQzKS5mLGM9cigzNyksdT1yKDcyKSxkPXIoMTE0KSxmPXIoMTE1KSxwPXIoMTE3KSxnPXIoMTE4KSxtPXIoNiksaD1yKDM0KSxiPVwiRE9NRXhjZXB0aW9uXCIseT1hKFwiRXJyb3JcIiksdj1hKGIpLHc9ZnVuY3Rpb24gZSgpe3UodGhpcyxTKTt2YXIgbj1hcmd1bWVudHMubGVuZ3RoLHI9ZihuPDE/dDphcmd1bWVudHNbMF0pLG89ZihuPDI/dDphcmd1bWVudHNbMV0sXCJFcnJvclwiKSxpPW5ldyB2KHIsbyksYT15KHIpO3JldHVybiBhLm5hbWU9YixzKGksXCJzdGFja1wiLGwoMSxnKGEuc3RhY2ssMSkpKSxkKGksdGhpcyxlKSxpfSxTPXcucHJvdG90eXBlPXYucHJvdG90eXBlLFA9XCJzdGFja1wiaW4geShiKSx4PVwic3RhY2tcImluIG5ldyB2KDEsMiksTz12JiZtJiZPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksYiksXz0hKCFPfHxPLndyaXRhYmxlJiZPLmNvbmZpZ3VyYWJsZSksQz1QJiYhXyYmIXg7byh7Z2xvYmFsOiEwLGNvbnN0cnVjdG9yOiEwLGZvcmNlZDpofHxDfSx7RE9NRXhjZXB0aW9uOkM/dzp2fSk7dmFyIGs9YShiKSxBPWsucHJvdG90eXBlO2lmKEEuY29uc3RydWN0b3IhPT1rKWZvcih2YXIgVCBpbiBofHxzKEEsXCJjb25zdHJ1Y3RvclwiLGwoMSxrKSkscClpZihjKHAsVCkpe3ZhciBFPXBbVF0saj1FLnM7YyhrLGopfHxzKGssaixsKDYsRS5jKSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigyMCksbz1uKDE5KSxpPW4oNjgpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dmFyIGEsbDtyZXR1cm4gaSYmcihhPXQuY29uc3RydWN0b3IpJiZhIT09biYmbyhsPWEucHJvdG90eXBlKSYmbCE9PW4ucHJvdG90eXBlJiZpKGUsbCksZX19LGZ1bmN0aW9uKGUsbixyKXt2YXIgbz1yKDExNik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGU9PT10P2FyZ3VtZW50cy5sZW5ndGg8Mj9cIlwiOm46byhlKX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDc2KSxvPVN0cmluZztlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoXCJTeW1ib2xcIj09PXIoZSkpdGhyb3cgVHlwZUVycm9yKFwiQ2Fubm90IGNvbnZlcnQgYSBTeW1ib2wgdmFsdWUgdG8gYSBzdHJpbmdcIik7cmV0dXJuIG8oZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17SW5kZXhTaXplRXJyb3I6e3M6XCJJTkRFWF9TSVpFX0VSUlwiLGM6MSxtOjF9LERPTVN0cmluZ1NpemVFcnJvcjp7czpcIkRPTVNUUklOR19TSVpFX0VSUlwiLGM6MixtOjB9LEhpZXJhcmNoeVJlcXVlc3RFcnJvcjp7czpcIkhJRVJBUkNIWV9SRVFVRVNUX0VSUlwiLGM6MyxtOjF9LFdyb25nRG9jdW1lbnRFcnJvcjp7czpcIldST05HX0RPQ1VNRU5UX0VSUlwiLGM6NCxtOjF9LEludmFsaWRDaGFyYWN0ZXJFcnJvcjp7czpcIklOVkFMSURfQ0hBUkFDVEVSX0VSUlwiLGM6NSxtOjF9LE5vRGF0YUFsbG93ZWRFcnJvcjp7czpcIk5PX0RBVEFfQUxMT1dFRF9FUlJcIixjOjYsbTowfSxOb01vZGlmaWNhdGlvbkFsbG93ZWRFcnJvcjp7czpcIk5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUlwiLGM6NyxtOjF9LE5vdEZvdW5kRXJyb3I6e3M6XCJOT1RfRk9VTkRfRVJSXCIsYzo4LG06MX0sTm90U3VwcG9ydGVkRXJyb3I6e3M6XCJOT1RfU1VQUE9SVEVEX0VSUlwiLGM6OSxtOjF9LEluVXNlQXR0cmlidXRlRXJyb3I6e3M6XCJJTlVTRV9BVFRSSUJVVEVfRVJSXCIsYzoxMCxtOjF9LEludmFsaWRTdGF0ZUVycm9yOntzOlwiSU5WQUxJRF9TVEFURV9FUlJcIixjOjExLG06MX0sU3ludGF4RXJyb3I6e3M6XCJTWU5UQVhfRVJSXCIsYzoxMixtOjF9LEludmFsaWRNb2RpZmljYXRpb25FcnJvcjp7czpcIklOVkFMSURfTU9ESUZJQ0FUSU9OX0VSUlwiLGM6MTMsbToxfSxOYW1lc3BhY2VFcnJvcjp7czpcIk5BTUVTUEFDRV9FUlJcIixjOjE0LG06MX0sSW52YWxpZEFjY2Vzc0Vycm9yOntzOlwiSU5WQUxJRF9BQ0NFU1NfRVJSXCIsYzoxNSxtOjF9LFZhbGlkYXRpb25FcnJvcjp7czpcIlZBTElEQVRJT05fRVJSXCIsYzoxNixtOjB9LFR5cGVNaXNtYXRjaEVycm9yOntzOlwiVFlQRV9NSVNNQVRDSF9FUlJcIixjOjE3LG06MX0sU2VjdXJpdHlFcnJvcjp7czpcIlNFQ1VSSVRZX0VSUlwiLGM6MTgsbToxfSxOZXR3b3JrRXJyb3I6e3M6XCJORVRXT1JLX0VSUlwiLGM6MTksbToxfSxBYm9ydEVycm9yOntzOlwiQUJPUlRfRVJSXCIsYzoyMCxtOjF9LFVSTE1pc21hdGNoRXJyb3I6e3M6XCJVUkxfTUlTTUFUQ0hfRVJSXCIsYzoyMSxtOjF9LFF1b3RhRXhjZWVkZWRFcnJvcjp7czpcIlFVT1RBX0VYQ0VFREVEX0VSUlwiLGM6MjIsbToxfSxUaW1lb3V0RXJyb3I6e3M6XCJUSU1FT1VUX0VSUlwiLGM6MjMsbToxfSxJbnZhbGlkTm9kZVR5cGVFcnJvcjp7czpcIklOVkFMSURfTk9ERV9UWVBFX0VSUlwiLGM6MjQsbToxfSxEYXRhQ2xvbmVFcnJvcjp7czpcIkRBVEFfQ0xPTkVfRVJSXCIsYzoyNSxtOjF9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTQpLG89RXJyb3IsaT1yKFwiXCIucmVwbGFjZSksYT1TdHJpbmcobyhcInp4Y2FzZFwiKS5zdGFjayksbD0vXFxuXFxzKmF0IFteOl0qOlteXFxuXSovLHM9bC50ZXN0KGEpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKHMmJlwic3RyaW5nXCI9PXR5cGVvZiBlJiYhby5wcmVwYXJlU3RhY2tUcmFjZSlmb3IoO3QtLTspZT1pKGUsbCxcIlwiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxuKXtuKDEyMCksbigxMjEpfSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigzKSxvPW4oNCksaT1uKDc4KS5jbGVhcjtyKHtnbG9iYWw6ITAsYmluZDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDpvLmNsZWFySW1tZWRpYXRlIT09aX0se2NsZWFySW1tZWRpYXRlOml9KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMyksbz1uKDQpLGk9big3OCkuc2V0O3Ioe2dsb2JhbDohMCxiaW5kOiEwLGVudW1lcmFibGU6ITAsZm9yY2VkOm8uc2V0SW1tZWRpYXRlIT09aX0se3NldEltbWVkaWF0ZTppfSl9XSxvPXt9LChpPWZ1bmN0aW9uKGUpe2lmKG9bZV0pcmV0dXJuIG9bZV0uZXhwb3J0czt2YXIgdD1vW2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gbltlXS5jYWxsKHQuZXhwb3J0cyx0LHQuZXhwb3J0cyxpKSx0Lmw9ITAsdC5leHBvcnRzfSkubT1uLGkuYz1vLGkuZD1mdW5jdGlvbihlLHQsbil7aS5vKGUsdCl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse2VudW1lcmFibGU6ITAsZ2V0Om59KX0saS5yPWZ1bmN0aW9uKGUpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LGkudD1mdW5jdGlvbih0LG4pe2lmKDEmbiYmKHQ9aSh0KSksOCZuKXJldHVybiB0O2lmKDQmbiYmXCJvYmplY3RcIj09ZSh0KSYmdCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciByPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoaS5yKHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiZGVmYXVsdFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KSwyJm4mJlwic3RyaW5nXCIhPXR5cGVvZiB0KWZvcih2YXIgbyBpbiB0KWkuZChyLG8sZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV19LmJpbmQobnVsbCxvKSk7cmV0dXJuIHJ9LGkubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gaS5kKHQsXCJhXCIsdCksdH0saS5vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpfSxpLnA9XCJcIixpKGkucz0wKX0oKX19LG49e307ZnVuY3Rpb24gcihlKXt2YXIgbz1uW2VdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgaT1uW2VdPXtleHBvcnRzOnt9fTtyZXR1cm4gdFtlXShpLGkuZXhwb3J0cyxyKSxpLmV4cG9ydHN9ci5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBnbG9iYWxUaGlzP1widW5kZWZpbmVkXCI6ZShnbG9iYWxUaGlzKSkpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKHQpe2lmKFwib2JqZWN0XCI9PShcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI6ZSh3aW5kb3cpKSlyZXR1cm4gd2luZG93fX0oKSxyKDc2MCkscig2NjYpfSgpfSw4MzI2MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsbz1uKDU5NjU3KSxpPW4oMTQyNjcpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGE9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sYShlKX1mdW5jdGlvbiBsKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBzKGUsdCxuKXtyZXR1cm4gdCYmbChlLnByb3RvdHlwZSx0KSxuJiZsKGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfWZ1bmN0aW9uIHUoZSx0KXtpZih0JiYoXCJvYmplY3RcIj09PWEodCl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO3JldHVybiBmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtyZXR1cm4gZX0oZSl9ZnVuY3Rpb24gZChlKXt2YXIgdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChuPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKG4pLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpKSlyZXR1cm4gZTt2YXIgbjtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxyKX1mdW5jdGlvbiByKCl7cmV0dXJuIGYoZSxhcmd1bWVudHMsbSh0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIHIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpyLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGcocixlKX0sZChlKX1mdW5jdGlvbiBmKGUsdCxuKXtyZXR1cm4gZj1wKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtudWxsXTtyLnB1c2guYXBwbHkocix0KTt2YXIgbz1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLHIpKTtyZXR1cm4gbiYmZyhvLG4ucHJvdG90eXBlKSxvfSxmLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBwKCl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gZyhlLHQpe3JldHVybiBnPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSxnKGUsdCl9ZnVuY3Rpb24gbShlKXtyZXR1cm4gbT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxtKGUpfWZ1bmN0aW9uIGgoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8YihlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gYihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB5KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO3JldHVyblwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bj9BcnJheS5mcm9tKGUpOlwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKT95KGUsdCk6dm9pZCAwfX1mdW5jdGlvbiB5KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdigpe3JldHVybiB2PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sdi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9IWZ1bmN0aW9uKGUpe2UuUG9wPVwiUE9QXCIsZS5QdXNoPVwiUFVTSFwiLGUuUmVwbGFjZT1cIlJFUExBQ0VcIn0ocnx8KHI9e30pKTt2YXIgdztmdW5jdGlvbiBTKGUsdCl7aWYoITE9PT1lfHxudWxsPT1lKXRocm93IG5ldyBFcnJvcih0KX1mdW5jdGlvbiBQKGUsdCl7aWYoIWUpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlLndhcm4odCk7dHJ5e3Rocm93IG5ldyBFcnJvcih0KX1jYXRjaChuKXt9fX1mdW5jdGlvbiB4KGUsdCxuLHIpe3JldHVybiB2b2lkIDA9PT1uJiYobj1udWxsKSx2KHtwYXRobmFtZTpcInN0cmluZ1wiPT10eXBlb2YgZT9lOmUucGF0aG5hbWUsc2VhcmNoOlwiXCIsaGFzaDpcIlwifSxcInN0cmluZ1wiPT10eXBlb2YgdD9fKHQpOnQse3N0YXRlOm4sa2V5OnQmJnQua2V5fHxyfHxNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiw4KX0pfWZ1bmN0aW9uIE8oZSl7dmFyIHQ9ZS5wYXRobmFtZSxuPXZvaWQgMD09PXQ/XCIvXCI6dCxyPWUuc2VhcmNoLG89dm9pZCAwPT09cj9cIlwiOnIsaT1lLmhhc2gsYT12b2lkIDA9PT1pP1wiXCI6aTtyZXR1cm4gbyYmXCI/XCIhPT1vJiYobis9XCI/XCI9PT1vLmNoYXJBdCgwKT9vOlwiP1wiK28pLGEmJlwiI1wiIT09YSYmKG4rPVwiI1wiPT09YS5jaGFyQXQoMCk/YTpcIiNcIithKSxufWZ1bmN0aW9uIF8oZSl7dmFyIHQ9e307aWYoZSl7dmFyIG49ZS5pbmRleE9mKFwiI1wiKTtuPj0wJiYodC5oYXNoPWUuc3Vic3RyKG4pLGU9ZS5zdWJzdHIoMCxuKSk7dmFyIHI9ZS5pbmRleE9mKFwiP1wiKTtyPj0wJiYodC5zZWFyY2g9ZS5zdWJzdHIociksZT1lLnN1YnN0cigwLHIpKSxlJiYodC5wYXRobmFtZT1lKX1yZXR1cm4gdH1mdW5jdGlvbiBDKGUsdCxuKXt2b2lkIDA9PT1uJiYobj1cIi9cIik7dmFyIHI9RCgoXCJzdHJpbmdcIj09dHlwZW9mIHQ/Xyh0KTp0KS5wYXRobmFtZXx8XCIvXCIsbik7aWYobnVsbD09cilyZXR1cm4gbnVsbDt2YXIgbz1rKGUpOyFmdW5jdGlvbihlKXtlLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2NvcmUhPT10LnNjb3JlP3Quc2NvcmUtZS5zY29yZTpmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoPT09dC5sZW5ndGgmJmUuc2xpY2UoMCwtMSkuZXZlcnkoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGU9PT10W25dfSkpO3JldHVybiBuP2VbZS5sZW5ndGgtMV0tdFt0Lmxlbmd0aC0xXTowfShlLnJvdXRlc01ldGEubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGlsZHJlbkluZGV4fSkpLHQucm91dGVzTWV0YS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoaWxkcmVuSW5kZXh9KSkpfSkpfShvKTtmb3IodmFyIGk9bnVsbCxhPTA7bnVsbD09aSYmYTxvLmxlbmd0aDsrK2EpaT1qKG9bYV0sTChyKSk7cmV0dXJuIGl9ZnVuY3Rpb24gayhlLHQsbixyKXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9W10pLHZvaWQgMD09PW4mJihuPVtdKSx2b2lkIDA9PT1yJiYocj1cIlwiKSxlLmZvckVhY2goKGZ1bmN0aW9uKGUsbyl7dmFyIGk9e3JlbGF0aXZlUGF0aDplLnBhdGh8fFwiXCIsY2FzZVNlbnNpdGl2ZTohMD09PWUuY2FzZVNlbnNpdGl2ZSxjaGlsZHJlbkluZGV4Om8scm91dGU6ZX07aS5yZWxhdGl2ZVBhdGguc3RhcnRzV2l0aChcIi9cIikmJihTKGkucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgociksJ0Fic29sdXRlIHJvdXRlIHBhdGggXCInK2kucmVsYXRpdmVQYXRoKydcIiBuZXN0ZWQgdW5kZXIgcGF0aCBcIicrcisnXCIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoIG11c3Qgc3RhcnQgd2l0aCB0aGUgY29tYmluZWQgcGF0aCBvZiBhbGwgaXRzIHBhcmVudCByb3V0ZXMuJyksaS5yZWxhdGl2ZVBhdGg9aS5yZWxhdGl2ZVBhdGguc2xpY2Uoci5sZW5ndGgpKTt2YXIgYT1GKFtyLGkucmVsYXRpdmVQYXRoXSksbD1uLmNvbmNhdChpKTtlLmNoaWxkcmVuJiZlLmNoaWxkcmVuLmxlbmd0aD4wJiYoUyghMCE9PWUuaW5kZXgsJ0luZGV4IHJvdXRlcyBtdXN0IG5vdCBoYXZlIGNoaWxkIHJvdXRlcy4gUGxlYXNlIHJlbW92ZSBhbGwgY2hpbGQgcm91dGVzIGZyb20gcm91dGUgcGF0aCBcIicrYSsnXCIuJyksayhlLmNoaWxkcmVuLHQsbCxhKSksKG51bGwhPWUucGF0aHx8ZS5pbmRleCkmJnQucHVzaCh7cGF0aDphLHNjb3JlOkUoYSxlLmluZGV4KSxyb3V0ZXNNZXRhOmx9KX0pKSx0fSFmdW5jdGlvbihlKXtlLmRhdGE9XCJkYXRhXCIsZS5kZWZlcnJlZD1cImRlZmVycmVkXCIsZS5yZWRpcmVjdD1cInJlZGlyZWN0XCIsZS5lcnJvcj1cImVycm9yXCJ9KHd8fCh3PXt9KSk7dmFyIEE9L146XFx3KyQvLFQ9ZnVuY3Rpb24oZSl7cmV0dXJuXCIqXCI9PT1lfTtmdW5jdGlvbiBFKGUsdCl7dmFyIG49ZS5zcGxpdChcIi9cIikscj1uLmxlbmd0aDtyZXR1cm4gbi5zb21lKFQpJiYocis9LTIpLHQmJihyKz0yKSxuLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIVQoZSl9KSkucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlKyhBLnRlc3QodCk/MzpcIlwiPT09dD8xOjEwKX0pLHIpfWZ1bmN0aW9uIGooZSx0KXtmb3IodmFyIG49ZS5yb3V0ZXNNZXRhLHI9e30sbz1cIi9cIixpPVtdLGE9MDthPG4ubGVuZ3RoOysrYSl7dmFyIGw9blthXSxzPWE9PT1uLmxlbmd0aC0xLGM9XCIvXCI9PT1vP3Q6dC5zbGljZShvLmxlbmd0aCl8fFwiL1wiLHU9SSh7cGF0aDpsLnJlbGF0aXZlUGF0aCxjYXNlU2Vuc2l0aXZlOmwuY2FzZVNlbnNpdGl2ZSxlbmQ6c30sYyk7aWYoIXUpcmV0dXJuIG51bGw7T2JqZWN0LmFzc2lnbihyLHUucGFyYW1zKTt2YXIgZD1sLnJvdXRlO2kucHVzaCh7cGFyYW1zOnIscGF0aG5hbWU6Rihbbyx1LnBhdGhuYW1lXSkscGF0aG5hbWVCYXNlOk0oRihbbyx1LnBhdGhuYW1lQmFzZV0pKSxyb3V0ZTpkfSksXCIvXCIhPT11LnBhdGhuYW1lQmFzZSYmKG89Rihbbyx1LnBhdGhuYW1lQmFzZV0pKX1yZXR1cm4gaX1mdW5jdGlvbiBJKGUsdCl7XCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPXtwYXRoOmUsY2FzZVNlbnNpdGl2ZTohMSxlbmQ6ITB9KTt2YXIgbj1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09dCYmKHQ9ITEpO3ZvaWQgMD09PW4mJihuPSEwKTtOKFwiKlwiPT09ZXx8IWUuZW5kc1dpdGgoXCIqXCIpfHxlLmVuZHNXaXRoKFwiLypcIiksJ1JvdXRlIHBhdGggXCInK2UrJ1wiIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIFwiJytlLnJlcGxhY2UoL1xcKiQvLFwiLypcIikrJ1wiIGJlY2F1c2UgdGhlIGAqYCBjaGFyYWN0ZXIgbXVzdCBhbHdheXMgZm9sbG93IGEgYC9gIGluIHRoZSBwYXR0ZXJuLiBUbyBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgcGxlYXNlIGNoYW5nZSB0aGUgcm91dGUgcGF0aCB0byBcIicrZS5yZXBsYWNlKC9cXCokLyxcIi8qXCIpKydcIi4nKTt2YXIgcj1bXSxvPVwiXlwiK2UucmVwbGFjZSgvXFwvKlxcKj8kLyxcIlwiKS5yZXBsYWNlKC9eXFwvKi8sXCIvXCIpLnJlcGxhY2UoL1tcXFxcLiorXiQ/e318KClbXFxdXS9nLFwiXFxcXCQmXCIpLnJlcGxhY2UoLzooXFx3KykvZywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci5wdXNoKHQpLFwiKFteXFxcXC9dKylcIn0pKTtlLmVuZHNXaXRoKFwiKlwiKT8oci5wdXNoKFwiKlwiKSxvKz1cIipcIj09PWV8fFwiLypcIj09PWU/XCIoLiopJFwiOlwiKD86XFxcXC8oLispfFxcXFwvKikkXCIpOm4/bys9XCJcXFxcLyokXCI6XCJcIiE9PWUmJlwiL1wiIT09ZSYmKG8rPVwiKD86KD89XFxcXC98JCkpXCIpO3JldHVybltuZXcgUmVnRXhwKG8sdD92b2lkIDA6XCJpXCIpLHJdfShlLnBhdGgsZS5jYXNlU2Vuc2l0aXZlLGUuZW5kKSxyPWgobiwyKSxvPXJbMF0saT1yWzFdLGE9dC5tYXRjaChvKTtpZighYSlyZXR1cm4gbnVsbDt2YXIgbD1hWzBdLHM9bC5yZXBsYWNlKC8oLilcXC8rJC8sXCIkMVwiKSxjPWEuc2xpY2UoMSk7cmV0dXJue3BhcmFtczppLnJlZHVjZSgoZnVuY3Rpb24oZSx0LG4pe2lmKFwiKlwiPT09dCl7dmFyIHI9Y1tuXXx8XCJcIjtzPWwuc2xpY2UoMCxsLmxlbmd0aC1yLmxlbmd0aCkucmVwbGFjZSgvKC4pXFwvKyQvLFwiJDFcIil9cmV0dXJuIGVbdF09ZnVuY3Rpb24oZSx0KXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaChuKXtyZXR1cm4gTighMSwnVGhlIHZhbHVlIGZvciB0aGUgVVJMIHBhcmFtIFwiJyt0KydcIiB3aWxsIG5vdCBiZSBkZWNvZGVkIGJlY2F1c2UgdGhlIHN0cmluZyBcIicrZSsnXCIgaXMgYSBtYWxmb3JtZWQgVVJMIHNlZ21lbnQuIFRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIGEgYmFkIHBlcmNlbnQgZW5jb2RpbmcgKCcrbitcIikuXCIpLGV9fShjW25dfHxcIlwiLHQpLGV9KSx7fSkscGF0aG5hbWU6bCxwYXRobmFtZUJhc2U6cyxwYXR0ZXJuOmV9fWZ1bmN0aW9uIEwoZSl7dHJ5e3JldHVybiBkZWNvZGVVUkkoZSl9Y2F0Y2godCl7cmV0dXJuIE4oITEsJ1RoZSBVUkwgcGF0aCBcIicrZSsnXCIgY291bGQgbm90IGJlIGRlY29kZWQgYmVjYXVzZSBpdCBpcyBpcyBhIG1hbGZvcm1lZCBVUkwgc2VnbWVudC4gVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gYSBiYWQgcGVyY2VudCBlbmNvZGluZyAoJyt0K1wiKS5cIiksZX19ZnVuY3Rpb24gRChlLHQpe2lmKFwiL1wiPT09dClyZXR1cm4gZTtpZighZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgodC50b0xvd2VyQ2FzZSgpKSlyZXR1cm4gbnVsbDt2YXIgbj10LmVuZHNXaXRoKFwiL1wiKT90Lmxlbmd0aC0xOnQubGVuZ3RoLHI9ZS5jaGFyQXQobik7cmV0dXJuIHImJlwiL1wiIT09cj9udWxsOmUuc2xpY2Uobil8fFwiL1wifWZ1bmN0aW9uIE4oZSx0KXtpZighZSl7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGNvbnNvbGUmJmNvbnNvbGUud2Fybih0KTt0cnl7dGhyb3cgbmV3IEVycm9yKHQpfWNhdGNoKG4pe319fWZ1bmN0aW9uIFIoZSx0LG4scil7cmV0dXJuXCJDYW5ub3QgaW5jbHVkZSBhICdcIitlK1wiJyBjaGFyYWN0ZXIgaW4gYSBtYW51YWxseSBzcGVjaWZpZWQgYHRvLlwiK3QrXCJgIGZpZWxkIFtcIitKU09OLnN0cmluZ2lmeShyKStcIl0uICBQbGVhc2Ugc2VwYXJhdGUgaXQgb3V0IHRvIHRoZSBgdG8uXCIrbisnYCBmaWVsZC4gQWx0ZXJuYXRpdmVseSB5b3UgbWF5IHByb3ZpZGUgdGhlIGZ1bGwgcGF0aCBhcyBhIHN0cmluZyBpbiA8TGluayB0bz1cIi4uLlwiPiBhbmQgdGhlIHJvdXRlciB3aWxsIHBhcnNlIGl0IGZvciB5b3UuJ31mdW5jdGlvbiBCKGUpe3JldHVybiBlLmZpbHRlcigoZnVuY3Rpb24oZSx0KXtyZXR1cm4gMD09PXR8fGUucm91dGUucGF0aCYmZS5yb3V0ZS5wYXRoLmxlbmd0aD4wfSkpfWZ1bmN0aW9uIFUoZSx0LG4scil7dmFyIG87dm9pZCAwPT09ciYmKHI9ITEpLFwic3RyaW5nXCI9PXR5cGVvZiBlP289XyhlKTooUyghKG89dih7fSxlKSkucGF0aG5hbWV8fCFvLnBhdGhuYW1lLmluY2x1ZGVzKFwiP1wiKSxSKFwiP1wiLFwicGF0aG5hbWVcIixcInNlYXJjaFwiLG8pKSxTKCFvLnBhdGhuYW1lfHwhby5wYXRobmFtZS5pbmNsdWRlcyhcIiNcIiksUihcIiNcIixcInBhdGhuYW1lXCIsXCJoYXNoXCIsbykpLFMoIW8uc2VhcmNofHwhby5zZWFyY2guaW5jbHVkZXMoXCIjXCIpLFIoXCIjXCIsXCJzZWFyY2hcIixcImhhc2hcIixvKSkpO3ZhciBpLGE9XCJcIj09PWV8fFwiXCI9PT1vLnBhdGhuYW1lLGw9YT9cIi9cIjpvLnBhdGhuYW1lO2lmKHJ8fG51bGw9PWwpaT1uO2Vsc2V7dmFyIHM9dC5sZW5ndGgtMTtpZihsLnN0YXJ0c1dpdGgoXCIuLlwiKSl7Zm9yKHZhciBjPWwuc3BsaXQoXCIvXCIpO1wiLi5cIj09PWNbMF07KWMuc2hpZnQoKSxzLT0xO28ucGF0aG5hbWU9Yy5qb2luKFwiL1wiKX1pPXM+PTA/dFtzXTpcIi9cIn12YXIgdT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PVwiL1wiKTt2YXIgbj1cInN0cmluZ1wiPT10eXBlb2YgZT9fKGUpOmUscj1uLnBhdGhuYW1lLG89bi5zZWFyY2gsaT12b2lkIDA9PT1vP1wiXCI6byxhPW4uaGFzaCxsPXZvaWQgMD09PWE/XCJcIjphLHM9cj9yLnN0YXJ0c1dpdGgoXCIvXCIpP3I6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnJlcGxhY2UoL1xcLyskLyxcIlwiKS5zcGxpdChcIi9cIik7cmV0dXJuIGUuc3BsaXQoXCIvXCIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe1wiLi5cIj09PWU/bi5sZW5ndGg+MSYmbi5wb3AoKTpcIi5cIiE9PWUmJm4ucHVzaChlKX0pKSxuLmxlbmd0aD4xP24uam9pbihcIi9cIik6XCIvXCJ9KHIsdCk6dDtyZXR1cm57cGF0aG5hbWU6cyxzZWFyY2g6eihpKSxoYXNoOkgobCl9fShvLGkpLGQ9bCYmXCIvXCIhPT1sJiZsLmVuZHNXaXRoKFwiL1wiKSxmPShhfHxcIi5cIj09PWwpJiZuLmVuZHNXaXRoKFwiL1wiKTtyZXR1cm4gdS5wYXRobmFtZS5lbmRzV2l0aChcIi9cIil8fCFkJiYhZnx8KHUucGF0aG5hbWUrPVwiL1wiKSx1fXZhciBGPWZ1bmN0aW9uKGUpe3JldHVybiBlLmpvaW4oXCIvXCIpLnJlcGxhY2UoL1xcL1xcLysvZyxcIi9cIil9LE09ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvXFwvKyQvLFwiXCIpLnJlcGxhY2UoL15cXC8qLyxcIi9cIil9LHo9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiP1wiIT09ZT9lLnN0YXJ0c1dpdGgoXCI/XCIpP2U6XCI/XCIrZTpcIlwifSxIPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZcIiNcIiE9PWU/ZS5zdGFydHNXaXRoKFwiI1wiKT9lOlwiI1wiK2U6XCJcIn0sVj1mdW5jdGlvbihlKXshZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmZyhlLHQpfShvLGUpO3ZhciB0LG4scj0odD1vLG49cCgpLGZ1bmN0aW9uKCl7dmFyIGUscj1tKHQpO2lmKG4pe3ZhciBvPW0odGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdChyLGFyZ3VtZW50cyxvKX1lbHNlIGU9ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHUodGhpcyxlKX0pO2Z1bmN0aW9uIG8oKXtyZXR1cm4gYyh0aGlzLG8pLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBzKG8pfShkKEVycm9yKSk7dmFyIFc9cygoZnVuY3Rpb24gZSh0LG4scixvKXtjKHRoaXMsZSksdm9pZCAwPT09byYmKG89ITEpLHRoaXMuc3RhdHVzPXQsdGhpcy5zdGF0dXNUZXh0PW58fFwiXCIsdGhpcy5pbnRlcm5hbD1vLHIgaW5zdGFuY2VvZiBFcnJvcj8odGhpcy5kYXRhPXIudG9TdHJpbmcoKSx0aGlzLmVycm9yPXIpOnRoaXMuZGF0YT1yfSkpO2Z1bmN0aW9uIEcoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBXfXZhciAkPVtcInBvc3RcIixcInB1dFwiLFwicGF0Y2hcIixcImRlbGV0ZVwiXSxLPShuZXcgU2V0KCQpLFtcImdldFwiXS5jb25jYXQoJCkpO25ldyBTZXQoSyksbmV3IFNldChbMzAxLDMwMiwzMDMsMzA3LDMwOF0pLG5ldyBTZXQoWzMwNywzMDhdKSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ2b2lkIDAhPT13aW5kb3cuZG9jdW1lbnQmJndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50O2Z1bmN0aW9uIHEoZSl7cmV0dXJuIHE9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0scShlKX1mdW5jdGlvbiBRKGUpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBhZShlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPWVbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9ZVtcIkBAaXRlcmF0b3JcIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxpZShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBYKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX1mdW5jdGlvbiBZKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBaKGUsdCxuKXtyZXR1cm4gdCYmWShlLnByb3RvdHlwZSx0KSxuJiZZKGUsbiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIEooZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksdCYmZWUoZSx0KX1mdW5jdGlvbiBlZShlLHQpe3JldHVybiBlZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sZWUoZSx0KX1mdW5jdGlvbiB0ZShlKXt2YXIgdD1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBuLHI9cmUoZSk7aWYodCl7dmFyIG89cmUodGhpcykuY29uc3RydWN0b3I7bj1SZWZsZWN0LmNvbnN0cnVjdChyLGFyZ3VtZW50cyxvKX1lbHNlIG49ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG5lKHRoaXMsbil9fWZ1bmN0aW9uIG5lKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1xKHQpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIGV9KGUpfWZ1bmN0aW9uIHJlKGUpe3JldHVybiByZT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxyZShlKX1mdW5jdGlvbiBvZShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxpZShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gaWUoZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gYWUoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2FlKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBhZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGxlKCl7cmV0dXJuIGxlPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBzZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYoMCE9PWV8fDEvZT09MS90KXx8ZSE9ZSYmdCE9dH0sY2U9by51c2VTdGF0ZSx1ZT1vLnVzZUVmZmVjdCxkZT1vLnVzZUxheW91dEVmZmVjdCxmZT1vLnVzZURlYnVnVmFsdWU7ZnVuY3Rpb24gcGUoZSl7dmFyIHQ9ZS5nZXRTbmFwc2hvdCxuPWUudmFsdWU7dHJ5e3ZhciByPXQoKTtyZXR1cm4hc2UobixyKX1jYXRjaChvKXtyZXR1cm4hMH19XCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvd3x8dm9pZCAwPT09d2luZG93LmRvY3VtZW50fHx3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudDt2YXIgZ2U9by5jcmVhdGVDb250ZXh0KG51bGwpO3ZhciBtZT1vLmNyZWF0ZUNvbnRleHQobnVsbCk7dmFyIGhlPW8uY3JlYXRlQ29udGV4dChudWxsKTt2YXIgYmU9by5jcmVhdGVDb250ZXh0KG51bGwpO3ZhciB5ZT1vLmNyZWF0ZUNvbnRleHQobnVsbCk7dmFyIHZlPW8uY3JlYXRlQ29udGV4dChudWxsKTt2YXIgd2U9by5jcmVhdGVDb250ZXh0KHtvdXRsZXQ6bnVsbCxtYXRjaGVzOltdfSk7dmFyIFNlPW8uY3JlYXRlQ29udGV4dChudWxsKTtmdW5jdGlvbiBQZSgpe3JldHVybiBudWxsIT1vLnVzZUNvbnRleHQodmUpfWZ1bmN0aW9uIHhlKCl7cmV0dXJuIFBlKCl8fFMoITEpLG8udXNlQ29udGV4dCh2ZSkubG9jYXRpb259ZnVuY3Rpb24gT2UoKXtQZSgpfHxTKCExKTt2YXIgZT1vLnVzZUNvbnRleHQoeWUpLHQ9ZS5iYXNlbmFtZSxuPWUubmF2aWdhdG9yLHI9by51c2VDb250ZXh0KHdlKS5tYXRjaGVzLGk9eGUoKS5wYXRobmFtZSxhPUpTT04uc3RyaW5naWZ5KEIocikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXRobmFtZUJhc2V9KSkpLGw9by51c2VSZWYoITEpO3JldHVybiBvLnVzZUVmZmVjdCgoZnVuY3Rpb24oKXtsLmN1cnJlbnQ9ITB9KSksby51c2VDYWxsYmFjaygoZnVuY3Rpb24oZSxyKXtpZih2b2lkIDA9PT1yJiYocj17fSksbC5jdXJyZW50KWlmKFwibnVtYmVyXCIhPXR5cGVvZiBlKXt2YXIgbz1VKGUsSlNPTi5wYXJzZShhKSxpLFwicGF0aFwiPT09ci5yZWxhdGl2ZSk7XCIvXCIhPT10JiYoby5wYXRobmFtZT1cIi9cIj09PW8ucGF0aG5hbWU/dDpGKFt0LG8ucGF0aG5hbWVdKSksKHIucmVwbGFjZT9uLnJlcGxhY2U6bi5wdXNoKShvLHIuc3RhdGUscil9ZWxzZSBuLmdvKGUpfSksW3QsbixhLGldKX1mdW5jdGlvbiBfZShlLHQpe3ZhciBuPSh2b2lkIDA9PT10P3t9OnQpLnJlbGF0aXZlLHI9by51c2VDb250ZXh0KHdlKS5tYXRjaGVzLGk9eGUoKS5wYXRobmFtZSxhPUpTT04uc3RyaW5naWZ5KEIocikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5wYXRobmFtZUJhc2V9KSkpO3JldHVybiBvLnVzZU1lbW8oKGZ1bmN0aW9uKCl7cmV0dXJuIFUoZSxKU09OLnBhcnNlKGEpLGksXCJwYXRoXCI9PT1uKX0pLFtlLGEsaSxuXSl9ZnVuY3Rpb24gQ2UoKXt2YXIgZT1mdW5jdGlvbigpe3ZhciBlLHQ9by51c2VDb250ZXh0KFNlKSxuPUllKEFlLlVzZVJvdXRlRXJyb3IpLHI9by51c2VDb250ZXh0KHdlKSxpPXIubWF0Y2hlc1tyLm1hdGNoZXMubGVuZ3RoLTFdO2lmKHQpcmV0dXJuIHQ7cmV0dXJuIHJ8fFMoITEpLCFpLnJvdXRlLmlkJiZTKCExKSxudWxsPT0oZT1uLmVycm9ycyk/dm9pZCAwOmVbaS5yb3V0ZS5pZF19KCksdD1HKGUpP2Uuc3RhdHVzK1wiIFwiK2Uuc3RhdHVzVGV4dDplIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOkpTT04uc3RyaW5naWZ5KGUpLG49ZSBpbnN0YW5jZW9mIEVycm9yP2Uuc3RhY2s6bnVsbCxyPVwicmdiYSgyMDAsMjAwLDIwMCwgMC41KVwiLGk9e3BhZGRpbmc6XCIwLjVyZW1cIixiYWNrZ3JvdW5kQ29sb3I6cn0sYT17cGFkZGluZzpcIjJweCA0cHhcIixiYWNrZ3JvdW5kQ29sb3I6cn07cmV0dXJuIG8uY3JlYXRlRWxlbWVudChvLkZyYWdtZW50LG51bGwsby5jcmVhdGVFbGVtZW50KFwiaDJcIixudWxsLFwiVW5oYW5kbGVkIFRocm93biBFcnJvciFcIiksby5jcmVhdGVFbGVtZW50KFwiaDNcIix7c3R5bGU6e2ZvbnRTdHlsZTpcIml0YWxpY1wifX0sdCksbj9vLmNyZWF0ZUVsZW1lbnQoXCJwcmVcIix7c3R5bGU6aX0sbik6bnVsbCxvLmNyZWF0ZUVsZW1lbnQoXCJwXCIsbnVsbCxcIlx1ZDgzZFx1ZGNiZiBIZXkgZGV2ZWxvcGVyIFx1ZDgzZFx1ZGM0YlwiKSxvLmNyZWF0ZUVsZW1lbnQoXCJwXCIsbnVsbCxcIllvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIHdoZW4geW91ciBhcHAgdGhyb3dzIGVycm9ycyBieSBwcm92aWRpbmcgeW91ciBvd25cdTAwYTBcIixvLmNyZWF0ZUVsZW1lbnQoXCJjb2RlXCIse3N0eWxlOmF9LFwiZXJyb3JFbGVtZW50XCIpLFwiIHByb3BzIG9uXHUwMGEwXCIsby5jcmVhdGVFbGVtZW50KFwiY29kZVwiLHtzdHlsZTphfSxcIjxSb3V0ZT5cIikpKX12YXIga2UsQWUsVGU9ZnVuY3Rpb24oZSl7SihuLGUpO3ZhciB0PXRlKG4pO2Z1bmN0aW9uIG4oZSl7dmFyIHI7cmV0dXJuIFgodGhpcyxuKSwocj10LmNhbGwodGhpcyxlKSkuc3RhdGU9e2xvY2F0aW9uOmUubG9jYXRpb24sZXJyb3I6ZS5lcnJvcn0scn1yZXR1cm4gWihuLFt7a2V5OlwiY29tcG9uZW50RGlkQ2F0Y2hcIix2YWx1ZTpmdW5jdGlvbihlLHQpe2NvbnNvbGUuZXJyb3IoXCJSZWFjdCBSb3V0ZXIgY2F1Z2h0IHRoZSBmb2xsb3dpbmcgZXJyb3IgZHVyaW5nIHJlbmRlclwiLGUsdCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZS5lcnJvcj9vLmNyZWF0ZUVsZW1lbnQoU2UuUHJvdmlkZXIse3ZhbHVlOnRoaXMuc3RhdGUuZXJyb3IsY2hpbGRyZW46dGhpcy5wcm9wcy5jb21wb25lbnR9KTp0aGlzLnByb3BzLmNoaWxkcmVufX1dLFt7a2V5OlwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2Vycm9yOmV9fX0se2tleTpcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubG9jYXRpb24hPT1lLmxvY2F0aW9uP3tlcnJvcjplLmVycm9yLGxvY2F0aW9uOmUubG9jYXRpb259OntlcnJvcjplLmVycm9yfHx0LmVycm9yLGxvY2F0aW9uOnQubG9jYXRpb259fX1dKSxufShvLkNvbXBvbmVudCk7ZnVuY3Rpb24gRWUoZSl7dmFyIHQ9ZS5yb3V0ZUNvbnRleHQsbj1lLm1hdGNoLHI9ZS5jaGlsZHJlbixpPW8udXNlQ29udGV4dChnZSk7cmV0dXJuIGkmJm4ucm91dGUuZXJyb3JFbGVtZW50JiYoaS5fZGVlcGVzdFJlbmRlcmVkQm91bmRhcnlJZD1uLnJvdXRlLmlkKSxvLmNyZWF0ZUVsZW1lbnQod2UuUHJvdmlkZXIse3ZhbHVlOnR9LHIpfWZ1bmN0aW9uIGplKGUsdCxuKXtpZih2b2lkIDA9PT10JiYodD1bXSksbnVsbD09ZSl7aWYobnVsbD09bnx8IW4uZXJyb3JzKXJldHVybiBudWxsO2U9bi5tYXRjaGVzfXZhciByPWUsaT1udWxsPT1uP3ZvaWQgMDpuLmVycm9ycztpZihudWxsIT1pKXt2YXIgYT1yLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucm91dGUuaWQmJihudWxsPT1pP3ZvaWQgMDppW2Uucm91dGUuaWRdKX0pKTthPj0wfHxTKCExKSxyPXIuc2xpY2UoMCxNYXRoLm1pbihyLmxlbmd0aCxhKzEpKX1yZXR1cm4gci5yZWR1Y2VSaWdodCgoZnVuY3Rpb24oZSxhLGwpe3ZhciBzPWEucm91dGUuaWQ/bnVsbD09aT92b2lkIDA6aVthLnJvdXRlLmlkXTpudWxsLGM9bj9hLnJvdXRlLmVycm9yRWxlbWVudHx8by5jcmVhdGVFbGVtZW50KENlLG51bGwpOm51bGwsdT1mdW5jdGlvbigpe3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoRWUse21hdGNoOmEscm91dGVDb250ZXh0OntvdXRsZXQ6ZSxtYXRjaGVzOnQuY29uY2F0KHIuc2xpY2UoMCxsKzEpKX19LHM/Yzp2b2lkIDAhPT1hLnJvdXRlLmVsZW1lbnQ/YS5yb3V0ZS5lbGVtZW50OmUpfTtyZXR1cm4gbiYmKGEucm91dGUuZXJyb3JFbGVtZW50fHwwPT09bCk/by5jcmVhdGVFbGVtZW50KFRlLHtsb2NhdGlvbjpuLmxvY2F0aW9uLGNvbXBvbmVudDpjLGVycm9yOnMsY2hpbGRyZW46dSgpfSk6dSgpfSksbnVsbCl9ZnVuY3Rpb24gSWUoZSl7dmFyIHQ9by51c2VDb250ZXh0KGhlKTtyZXR1cm4gdHx8UyghMSksdH0hZnVuY3Rpb24oZSl7ZS5Vc2VSZXZhbGlkYXRvcj1cInVzZVJldmFsaWRhdG9yXCJ9KGtlfHwoa2U9e30pKSxmdW5jdGlvbihlKXtlLlVzZUxvYWRlckRhdGE9XCJ1c2VMb2FkZXJEYXRhXCIsZS5Vc2VBY3Rpb25EYXRhPVwidXNlQWN0aW9uRGF0YVwiLGUuVXNlUm91dGVFcnJvcj1cInVzZVJvdXRlRXJyb3JcIixlLlVzZU5hdmlnYXRpb249XCJ1c2VOYXZpZ2F0aW9uXCIsZS5Vc2VSb3V0ZUxvYWRlckRhdGE9XCJ1c2VSb3V0ZUxvYWRlckRhdGFcIixlLlVzZU1hdGNoZXM9XCJ1c2VNYXRjaGVzXCIsZS5Vc2VSZXZhbGlkYXRvcj1cInVzZVJldmFsaWRhdG9yXCJ9KEFlfHwoQWU9e30pKTt2YXIgTGU7ZnVuY3Rpb24gRGUoZSl7dmFyIHQ9ZS5iYXNlbmFtZSxuPWUuY2hpbGRyZW4saT1lLmluaXRpYWxFbnRyaWVzLGE9ZS5pbml0aWFsSW5kZXgsbD1vLnVzZVJlZigpO251bGw9PWwuY3VycmVudCYmKGwuY3VycmVudD1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHQsbj1lLG89bi5pbml0aWFsRW50cmllcyxpPXZvaWQgMD09PW8/W1wiL1wiXTpvLGE9bi5pbml0aWFsSW5kZXgsbD1uLnY1Q29tcGF0LHM9dm9pZCAwIT09bCYmbDt0PWkubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBnKGUsXCJzdHJpbmdcIj09dHlwZW9mIGU/bnVsbDplLnN0YXRlLDA9PT10P1wiZGVmYXVsdFwiOnZvaWQgMCl9KSk7dmFyIGM9ZihudWxsPT1hP3QubGVuZ3RoLTE6YSksdT1yLlBvcCxkPW51bGw7ZnVuY3Rpb24gZihlKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSwwKSx0Lmxlbmd0aC0xKX1mdW5jdGlvbiBwKCl7cmV0dXJuIHRbY119ZnVuY3Rpb24gZyhlLG4scil7dm9pZCAwPT09biYmKG49bnVsbCk7dmFyIG89eCh0P3AoKS5wYXRobmFtZTpcIi9cIixlLG4scik7cmV0dXJuIFAoXCIvXCI9PT1vLnBhdGhuYW1lLmNoYXJBdCgwKSxcInJlbGF0aXZlIHBhdGhuYW1lcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBtZW1vcnkgaGlzdG9yeTogXCIrSlNPTi5zdHJpbmdpZnkoZSkpLG99cmV0dXJue2dldCBpbmRleCgpe3JldHVybiBjfSxnZXQgYWN0aW9uKCl7cmV0dXJuIHV9LGdldCBsb2NhdGlvbigpe3JldHVybiBwKCl9LGNyZWF0ZUhyZWY6ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTpPKGUpfSxlbmNvZGVMb2NhdGlvbjpmdW5jdGlvbihlKXt2YXIgdD1cInN0cmluZ1wiPT10eXBlb2YgZT9fKGUpOmU7cmV0dXJue3BhdGhuYW1lOnQucGF0aG5hbWV8fFwiXCIsc2VhcmNoOnQuc2VhcmNofHxcIlwiLGhhc2g6dC5oYXNofHxcIlwifX0scHVzaDpmdW5jdGlvbihlLG4pe3U9ci5QdXNoO3ZhciBvPWcoZSxuKTtjKz0xLHQuc3BsaWNlKGMsdC5sZW5ndGgsbykscyYmZCYmZCh7YWN0aW9uOnUsbG9jYXRpb246b30pfSxyZXBsYWNlOmZ1bmN0aW9uKGUsbil7dT1yLlJlcGxhY2U7dmFyIG89ZyhlLG4pO3RbY109byxzJiZkJiZkKHthY3Rpb246dSxsb2NhdGlvbjpvfSl9LGdvOmZ1bmN0aW9uKGUpe3U9ci5Qb3AsYz1mKGMrZSksZCYmZCh7YWN0aW9uOnUsbG9jYXRpb246cCgpfSl9LGxpc3RlbjpmdW5jdGlvbihlKXtyZXR1cm4gZD1lLGZ1bmN0aW9uKCl7ZD1udWxsfX19fSh7aW5pdGlhbEVudHJpZXM6aSxpbml0aWFsSW5kZXg6YSx2NUNvbXBhdDohMH0pKTt2YXIgcz1sLmN1cnJlbnQsYz1vZShvLnVzZVN0YXRlKHthY3Rpb246cy5hY3Rpb24sbG9jYXRpb246cy5sb2NhdGlvbn0pLDIpLHU9Y1swXSxkPWNbMV07cmV0dXJuIG8udXNlTGF5b3V0RWZmZWN0KChmdW5jdGlvbigpe3JldHVybiBzLmxpc3RlbihkKX0pLFtzXSksby5jcmVhdGVFbGVtZW50KFJlLHtiYXNlbmFtZTp0LGNoaWxkcmVuOm4sbG9jYXRpb246dS5sb2NhdGlvbixuYXZpZ2F0aW9uVHlwZTp1LmFjdGlvbixuYXZpZ2F0b3I6c30pfWZ1bmN0aW9uIE5lKGUpe1MoITEpfWZ1bmN0aW9uIFJlKGUpe3ZhciB0PWUuYmFzZW5hbWUsbj12b2lkIDA9PT10P1wiL1wiOnQsaT1lLmNoaWxkcmVuLGE9dm9pZCAwPT09aT9udWxsOmksbD1lLmxvY2F0aW9uLHM9ZS5uYXZpZ2F0aW9uVHlwZSxjPXZvaWQgMD09PXM/ci5Qb3A6cyx1PWUubmF2aWdhdG9yLGQ9ZS5zdGF0aWMsZj12b2lkIDAhPT1kJiZkO1BlKCkmJlMoITEpO3ZhciBwPW4ucmVwbGFjZSgvXlxcLyovLFwiL1wiKSxnPW8udXNlTWVtbygoZnVuY3Rpb24oKXtyZXR1cm57YmFzZW5hbWU6cCxuYXZpZ2F0b3I6dSxzdGF0aWM6Zn19KSxbcCx1LGZdKTtcInN0cmluZ1wiPT10eXBlb2YgbCYmKGw9XyhsKSk7dmFyIG09bCxoPW0ucGF0aG5hbWUsYj12b2lkIDA9PT1oP1wiL1wiOmgseT1tLnNlYXJjaCx2PXZvaWQgMD09PXk/XCJcIjp5LHc9bS5oYXNoLFA9dm9pZCAwPT09dz9cIlwiOncseD1tLnN0YXRlLE89dm9pZCAwPT09eD9udWxsOngsQz1tLmtleSxrPXZvaWQgMD09PUM/XCJkZWZhdWx0XCI6QyxBPW8udXNlTWVtbygoZnVuY3Rpb24oKXt2YXIgZT1EKGIscCk7cmV0dXJuIG51bGw9PWU/bnVsbDp7cGF0aG5hbWU6ZSxzZWFyY2g6dixoYXNoOlAsc3RhdGU6TyxrZXk6a319KSxbcCxiLHYsUCxPLGtdKTtyZXR1cm4gbnVsbD09QT9udWxsOm8uY3JlYXRlRWxlbWVudCh5ZS5Qcm92aWRlcix7dmFsdWU6Z30sby5jcmVhdGVFbGVtZW50KHZlLlByb3ZpZGVyLHtjaGlsZHJlbjphLHZhbHVlOntsb2NhdGlvbjpBLG5hdmlnYXRpb25UeXBlOmN9fSkpfWZ1bmN0aW9uIEJlKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmxvY2F0aW9uLGk9by51c2VDb250ZXh0KG1lKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtQZSgpfHxTKCExKTt2YXIgbixpPW8udXNlQ29udGV4dCh5ZSkubmF2aWdhdG9yLGE9by51c2VDb250ZXh0KGhlKSxsPW8udXNlQ29udGV4dCh3ZSkubWF0Y2hlcyxzPWxbbC5sZW5ndGgtMV0sYz1zP3MucGFyYW1zOnt9LHU9KHMmJnMucGF0aG5hbWUscz9zLnBhdGhuYW1lQmFzZTpcIi9cIiksZD0ocyYmcy5yb3V0ZSx4ZSgpKTtpZih0KXt2YXIgZixwPVwic3RyaW5nXCI9PXR5cGVvZiB0P18odCk6dDtcIi9cIj09PXV8fChudWxsPT0oZj1wLnBhdGhuYW1lKT92b2lkIDA6Zi5zdGFydHNXaXRoKHUpKXx8UyghMSksbj1wfWVsc2Ugbj1kO3ZhciBnPW4ucGF0aG5hbWV8fFwiL1wiLG09QyhlLHtwYXRobmFtZTpcIi9cIj09PXU/ZzpnLnNsaWNlKHUubGVuZ3RoKXx8XCIvXCJ9KSxoPWplKG0mJm0ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxlLHtwYXJhbXM6T2JqZWN0LmFzc2lnbih7fSxjLGUucGFyYW1zKSxwYXRobmFtZTpGKFt1LGkuZW5jb2RlTG9jYXRpb24/aS5lbmNvZGVMb2NhdGlvbihlLnBhdGhuYW1lKS5wYXRobmFtZTplLnBhdGhuYW1lXSkscGF0aG5hbWVCYXNlOlwiL1wiPT09ZS5wYXRobmFtZUJhc2U/dTpGKFt1LGkuZW5jb2RlTG9jYXRpb24/aS5lbmNvZGVMb2NhdGlvbihlLnBhdGhuYW1lQmFzZSkucGF0aG5hbWU6ZS5wYXRobmFtZUJhc2VdKX0pfSkpLGwsYXx8dm9pZCAwKTtyZXR1cm4gdCYmaD9vLmNyZWF0ZUVsZW1lbnQodmUuUHJvdmlkZXIse3ZhbHVlOntsb2NhdGlvbjpsZSh7cGF0aG5hbWU6XCIvXCIsc2VhcmNoOlwiXCIsaGFzaDpcIlwiLHN0YXRlOm51bGwsa2V5OlwiZGVmYXVsdFwifSxuKSxuYXZpZ2F0aW9uVHlwZTpyLlBvcH19LGgpOmh9KGkmJiF0P2kucm91dGVyLnJvdXRlczpGZSh0KSxuKX0hZnVuY3Rpb24oZSl7ZVtlLnBlbmRpbmc9MF09XCJwZW5kaW5nXCIsZVtlLnN1Y2Nlc3M9MV09XCJzdWNjZXNzXCIsZVtlLmVycm9yPTJdPVwiZXJyb3JcIn0oTGV8fChMZT17fSkpO3ZhciBVZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXt9KSk7by5Db21wb25lbnQ7ZnVuY3Rpb24gRmUoZSx0KXt2b2lkIDA9PT10JiYodD1bXSk7dmFyIG49W107cmV0dXJuIG8uQ2hpbGRyZW4uZm9yRWFjaChlLChmdW5jdGlvbihlLHIpe2lmKG8uaXNWYWxpZEVsZW1lbnQoZSkpaWYoZS50eXBlIT09by5GcmFnbWVudCl7ZS50eXBlIT09TmUmJlMoITEpLGUucHJvcHMuaW5kZXgmJmUucHJvcHMuY2hpbGRyZW4mJlMoITEpO3ZhciBpPVtdLmNvbmNhdChRKHQpLFtyXSksYT17aWQ6ZS5wcm9wcy5pZHx8aS5qb2luKFwiLVwiKSxjYXNlU2Vuc2l0aXZlOmUucHJvcHMuY2FzZVNlbnNpdGl2ZSxlbGVtZW50OmUucHJvcHMuZWxlbWVudCxpbmRleDplLnByb3BzLmluZGV4LHBhdGg6ZS5wcm9wcy5wYXRoLGxvYWRlcjplLnByb3BzLmxvYWRlcixhY3Rpb246ZS5wcm9wcy5hY3Rpb24sZXJyb3JFbGVtZW50OmUucHJvcHMuZXJyb3JFbGVtZW50LGhhc0Vycm9yQm91bmRhcnk6bnVsbCE9ZS5wcm9wcy5lcnJvckVsZW1lbnQsc2hvdWxkUmV2YWxpZGF0ZTplLnByb3BzLnNob3VsZFJldmFsaWRhdGUsaGFuZGxlOmUucHJvcHMuaGFuZGxlfTtlLnByb3BzLmNoaWxkcmVuJiYoYS5jaGlsZHJlbj1GZShlLnByb3BzLmNoaWxkcmVuLGkpKSxuLnB1c2goYSl9ZWxzZSBuLnB1c2guYXBwbHkobixGZShlLnByb3BzLmNoaWxkcmVuLHQpKX0pKSxufXZhciBNZSx6ZT1mdW5jdGlvbihlKXt2YXIgdD1cIlwiO3RyeXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO24uaW5uZXJIVE1MPWUsbi5jaGlsZHJlbi5sZW5ndGg+MCYmbi5jaGlsZHJlblswXS5oYXNBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSYmKHQ9bi5jaGlsZHJlblswXS5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSl9Y2F0Y2gocil7fXJldHVybiB0fTtmdW5jdGlvbiBIZShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVmUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/SGUoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtXZShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6SGUoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gV2UoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfSFmdW5jdGlvbihlKXtlW2UuU2V0Rmxvd1Rva2VuVmFsdWU9MF09XCJTZXRGbG93VG9rZW5WYWx1ZVwifShNZXx8KE1lPXt9KSk7ZnVuY3Rpb24gR2UoZSx0KXtpZih0LnR5cGU9PT1NZS5TZXRGbG93VG9rZW5WYWx1ZSlyZXR1cm4gVmUoVmUoe30sZSkse30se2Zsb3dUb2tlblZhbHVlOnQucGF5bG9hZH0pO3Rocm93IG5ldyBFcnJvcihcIkF1dGhlbnRpY2F0aW9uUmVkdWNlciByZWNlaXZlZCB1bmV4cGVjdGVkIGFjdGlvbiBcIi5jb25jYXQodC50eXBlKSl9dmFyICRlPW4oNTMxOTcpO2Z1bmN0aW9uIEtlKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBxZShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gUWUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFhlKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIFhlKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBYZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBZZT17Zmxvd1Rva2VuVmFsdWU6XCJcIn0sWmU9KDAsby5jcmVhdGVDb250ZXh0KSh7YXV0aFN0YXRlOlllLGRpc3BhdGNoU3RhdGVDaGFuZ2U6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJBdXRoZW50aWNhdGlvbkNvbnRleHQgbm90IGluaXRpYWxpemVkXCIpfX0pLEplPWZ1bmN0aW9uKCl7cmV0dXJuKDAsby51c2VDb250ZXh0KShaZSl9LGV0PWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5pdGlhbFN0YXRlLG49ZS5jaGlsZHJlbixyPVFlKCgwLG8udXNlUmVkdWNlcikoR2UsdCksMiksaT1yWzBdLGE9clsxXSxsPSgwLG8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJue2F1dGhTdGF0ZTppLGRpc3BhdGNoU3RhdGVDaGFuZ2U6YX19KSxbaV0pO3JldHVybigwLCRlLmpzeCkoWmUuUHJvdmlkZXIse3ZhbHVlOmwsY2hpbGRyZW46bn0pfTtmdW5jdGlvbiB0dChlKXt2YXIgdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9LZShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3FlKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpLZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sWWUpO3JldHVybiBudWxsIT1lJiZlLnNGVCYmKHQuZmxvd1Rva2VuVmFsdWU9emUoZS5zRlQpfHxlLnNGVCksIXQuZmxvd1Rva2VuVmFsdWUmJm51bGwhPWUmJmUuc0ZUVGFnJiYodC5mbG93VG9rZW5WYWx1ZT16ZShlLnNGVFRhZykpLHR9dmFyIG50LHJ0LG90LGl0LGF0LGx0LHN0PW4oOTQ1NTQpLGN0PW4oMjQ0NTcpOyFmdW5jdGlvbihlKXtlLnVzZXJuYW1lPVwibG9naW5cIixlLnB1cnBvc2U9XCJwdXJwb3NlXCIsZS5mbG93VG9rZW49XCJmbG93dG9rZW5cIixlLmNhbmFyeUZsb3dUb2tlbj1cImNhbmFyeUZsb3dUb2tlblwiLGUuY2hhbm5lbD1cImNoYW5uZWxcIixlLnVpTW9kZT1cIlVJTW9kZVwiLGUucGhvbmVDb3VudHJ5PVwiTW9iaWxlQ291bnRyeVwiLGUucGhvbmVDb3VudHJ5Q29kZT1cIk1vYmlsZUNDXCIsZS51bmF1dGhTZXNzaW9uSWQ9XCJ1YWlkXCIsZS5wcm9vZkNvbmZpcm1hdGlvbj1cIlByb29mQ29uZmlybWF0aW9uXCIsZS5jaGFsbGVuZ2VTb2x1dGlvbj1cIkNoYWxsZW5nZVNvbHV0aW9uXCIsZS5jaGFsbGVuZ2VUeXBlPVwiQ2hhbGxlbmdlVHlwZVwiLGUuY2hhbGxlbmdlSWQ9XCJDaGFsbGVuZ2VJZFwiLGUucGhvbmVSZXBNZXRhZGF0YT1cIlBob25lUmVwTWV0YWRhdGFcIixlLmNoYWxsZW5nZVZpZXdTdXBwb3J0ZWQ9XCJDaGFsbGVuZ2VWaWV3U3VwcG9ydGVkXCJ9KG50fHwobnQ9e30pKSxmdW5jdGlvbihlKXtlLnBhc3N3b3JkPVwiZU9UVF9PbmVUaW1lUGFzc3dvcmRcIixlLnJlbW90ZU5HQz1cImVPVFRfUmVtb3RlTkdDXCIsZS5ub1Bhc3N3b3JkPVwiZU9UVF9Ob1Bhc3N3b3JkQWNjb3VudExvZ2luQ29kZVwiLGUub3RjTG9naW49XCJlT1RUX090Y0xvZ2luXCIsZS54Ym94UmVtb3RlQ29ubmVjdD1cIlJlbW90ZVNpZ25JbldpdGhVc2VyQ29kZVwifShydHx8KHJ0PXt9KSksZnVuY3Rpb24oZSl7ZS5hdXRoZW50aWNhdG9yPVwiQXV0aGVudGljYXRvclwiLGUubW9iaWxlU21zPVwiU01TXCIsZS5lbWFpbEFkZHJlc3M9XCJFbWFpbFwiLGUudm9pY2VDYWxsPVwiVm9pY2VcIixlLnB1c2hOb3RpZmljYXRpb25zPVwiUHVzaE5vdGlmaWNhdGlvbnNcIn0ob3R8fChvdD17fSkpLGZ1bmN0aW9uKGUpe2UuZW1haWxBZGRyZXNzPVwiQWx0RW1haWxcIixlLmVtYWlsQWRkcmVzc0VuY3J5cHRlZD1cIkFsdEVtYWlsRVwiLGUubW9iaWxlPVwiTW9iaWxlTnVtXCIsZS5tb2JpbGVFbmNyeXB0ZWQ9XCJNb2JpbGVOdW1FXCIsZS5zZXNzaW9uQXBwcm92ZXI9XCJTQVBJZFwifShpdHx8KGl0PXt9KSksZnVuY3Rpb24oZSl7ZS5zdGF0ZT1cIlN0YXRlXCIsZS5zZXNzaW9uTG9va3VwS2V5PVwiU2Vzc2lvbkxvb2t1cEtleVwiLGUuZGlzcGxheVNpZ25Gb3JVST1cIkRpc3BsYXlTaWduRm9yVUlcIixlLmZsb3dUb2tlbj1cIkZsb3dUb2tlblwiLGUuZGV2aWNlcz1cIkRldmljZXNcIixlLnVzZXJDb2RlPVwiVXNlckNvZGVcIixlLmNoYWxsZW5nZVR5cGU9XCJDaGFsbGVuZ2VUeXBlXCIsZS5hcmtvc2VEYXRhRXhjaGFuZ2VCbG9iPVwiQXJrb3NlRGF0YUV4Y2hhbmdlQmxvYlwiLGUucGhvbmVSZXBNZXRhZGF0YT1cIlBob25lUmVwTWV0YWRhdGFcIn0oYXR8fChhdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5ub25lPTBdPVwibm9uZVwiLGVbZS5lcnJvcj0yMDBdPVwiZXJyb3JcIixlW2Uuc3VjY2Vzcz0yMDFdPVwic3VjY2Vzc1wiLGVbZS5oaXBFcnJvcj0yMDJdPVwiaGlwRXJyb3JcIixlW2UuZnRFcnJvcj0yMDNdPVwiZnRFcnJvclwiLGVbZS5pbnB1dEVycm9yPTIwNF09XCJpbnB1dEVycm9yXCIsZVtlLmRlc3RpbmF0aW9uRXJyb3I9MjA1XT1cImRlc3RpbmF0aW9uRXJyb3JcIixlW2UudGltZW91dD0zMDBdPVwidGltZW91dFwiLGVbZS5jaGFsbGVuZ2VSZXF1aXJlZEVycm9yPTIxNDc3NTk1MjVdPVwiY2hhbGxlbmdlUmVxdWlyZWRFcnJvclwiLGVbZS5jaGFsbGVuZ2VWZXJpZmljYXRpb25FcnJvcj0yMTQ3NzU5NTI2XT1cImNoYWxsZW5nZVZlcmlmaWNhdGlvbkVycm9yXCIsZVtlLnVzZXJCbG9ja2VkPTIxNDc3NTk1MjddPVwidXNlckJsb2NrZWRcIixlW2UubWV0YURhdGFFeHBpcmVkPTIxNDc3NTk1MzddPVwibWV0YURhdGFFeHBpcmVkXCJ9KGx0fHwobHQ9e30pKTt2YXIgdXQsZHQsZnQscHQ7b3QubW9iaWxlU21zLG90LmVtYWlsQWRkcmVzcyxvdC52b2ljZUNhbGw7IWZ1bmN0aW9uKGUpe2UuY2FwdGNoYT1cImNhcHRjaGFcIixlLm5vbmU9XCJub25lXCIsZS5wcm9tcHQ9XCJwcm9tcHRcIn0odXR8fCh1dD17fSkpLGZ1bmN0aW9uKGUpe2UuY29udGludWF0aW9uVG9rZW49XCJjb250aW51YXRpb25fdG9rZW5cIixlLmpwZWc9XCJqcGVnXCIsZS5tcDQ9XCJtcDRcIixlLm5vbmU9XCJub25lXCIsZS5vb2I9XCJvb2JcIixlLnByZXZlcmlmaWVkPVwicHJldmVyaWZpZWRcIixlLnZpc3VhbD1cInZpc3VhbFwiLGUuYXVkaW89XCJhdWRpb1wifShkdHx8KGR0PXt9KSksZnVuY3Rpb24oZSl7ZS5jaGFsbGVuZ2VDaGFubmVsPVwiY2hhbGxlbmdlX2NoYW5uZWxcIixlLmNoYWxsZW5nZU1ldGhvZD1cImNoYWxsZW5nZV9tZXRob2RcIixlLmNoYWxsZW5nZUlucHV0PVwiY2hhbGxlbmdlX2lucHV0XCIsZS5jaGFsbGVuZ2VUYXJnZXQ9XCJjaGFsbGVuZ2VfdGFyZ2V0XCIsZS5jaGFsbGVuZ2VUeXBlPVwiY2hhbGxlbmdlX3R5cGVcIixlLmNoYWxsZW5nZVR5cGVSZXF1ZXN0ZWQ9XCJjaGFsbGVuZ2VfdHlwZV9yZXF1ZXN0ZWRcIixlLmNvbnRpbnVhdGlvblRva2VuPVwiY29udGludWF0aW9uX3Rva2VuXCIsZS5ncmFudFR5cGU9XCJncmFudF90eXBlXCIsZS5vb2I9XCJvb2JcIn0oZnR8fChmdD17fSkpLGZ1bmN0aW9uKGUpe2VbZS52aXN1YWw9ZHQudmlzdWFsXT1cInZpc3VhbFwiLGVbZS5hdWRpbz1kdC5hdWRpb109XCJhdWRpb1wiLGVbZS5ub25lPWR0Lm5vbmVdPVwibm9uZVwifShwdHx8KHB0PXt9KSk7dmFyIGd0LG10PXt2aXN1YWw6Y3QuTlcuTmF0aXZlVmlzdWFsLGF1ZGlvOmN0Lk5XLk5hdGl2ZUF1ZGlvfTtmdW5jdGlvbiBodChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gYnQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/aHQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXt5dChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6aHQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24geXQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfSFmdW5jdGlvbihlKXtlLmltYWdlSlBFRz1cImltYWdlL2pwZWdcIixlLmF1ZGlvTVAzPVwiYXVkaW8vbXAzXCJ9KGd0fHwoZ3Q9e30pKTt2YXIgdnQsd3Q9e3R5cGU6Y3QuTlcuVW5rbm93bixmbG93SWQ6XCJcIixzY2VuYXJpb0lkOlwiXCIscGhvbmVSZXBNZXRhZGF0YTpcIlwiLHJlcE1hcE1ldGFkYXRhOntyaXNrQXNzZXNzbWVudERldGFpbHM6XCJcIixwaG9uZVJlcFJpc2tTY29yZURldGFpbHM6XCJcIixlbmNBdHRlbXB0VG9rZW46XCJcIixkZnBSZXF1ZXN0SWQ6XCJcIixkZnBVcmw6XCJcIixyZWNvbW1lbmRlZENoYWxsZW5nZVJpc2tTY29yZTpcIlwiLHJlcE1hcFJlcXVlc3RJZGVudGlmaWVyRGV0YWlsczpcIlwifSxlcnJvck1lc3NhZ2U6XCJcIixhcGlOYW1lOmN0LlZSLlVua25vd24sYXJrb3NlOntwYXJ0bmVySWQ6XCJcIix1cmw6XCJcIix0aW1lb3V0OlwiXCIsZGF0YUV4Y2hhbmdlQmxvYjpcIlwifSxoaXA6e3VybDpcIlwiLGRhdGFjZW50ZXI6XCJcIn0sbmF0aXZlSGlwOntjaGFsbGVuZ2VBcnRpZmFjdDpcIlwiLGNoYWxsZW5nZU1ldGhvZDp1dC5jYXB0Y2hhLGNoYWxsZW5nZVR5cGU6cHQudmlzdWFsLGNoYWxsZW5nZVR5cGVzOltwdC52aXN1YWwscHQuYXVkaW9dLGNvbnRpbnVhdGlvblRva2VuOlwiXCJ9fTshZnVuY3Rpb24oZSl7ZVtlLlNldEFya29zZUFjdGlvbj0wXT1cIlNldEFya29zZUFjdGlvblwiLGVbZS5TZXRIaXBBY3Rpb249MV09XCJTZXRIaXBBY3Rpb25cIixlW2UuU2V0QWJ1c2VCbG9ja0FjdGlvbj0yXT1cIlNldEFidXNlQmxvY2tBY3Rpb25cIixlW2UuU2V0Q29tbW9uQWN0aW9uPTNdPVwiU2V0Q29tbW9uQWN0aW9uXCIsZVtlLlNldFJlcE1hcE1ldGFkYXRhPTRdPVwiU2V0UmVwTWFwTWV0YWRhdGFcIixlW2UuU2V0TmF0aXZlSGlwQWN0aW9uPTVdPVwiU2V0TmF0aXZlSGlwQWN0aW9uXCJ9KHZ0fHwodnQ9e30pKTt2YXIgU3Q9KDAsby5jcmVhdGVDb250ZXh0KSh7Y2hhbGxlbmdlU3RhdGU6d3QsZGlzcGF0Y2hDaGFsbGVuZ2VTdGF0ZUNoYW5nZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIkNoYWxsZW5nZSBjb250ZXh0IG5vdCBpbml0aWFsaXplZFwiKX19KTt2YXIgUHQ9ZnVuY3Rpb24oKXtyZXR1cm4oMCxvLnVzZUNvbnRleHQpKFN0KX07ZnVuY3Rpb24geHQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIE90KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIE90KGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBPdChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIF90KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBDdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9fdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2t0KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpfdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBrdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gQXQoZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlIHZ0LlNldFJlcE1hcE1ldGFkYXRhOnJldHVybiBDdChDdCh7fSxlKSx7fSx7cmVwTWFwTWV0YWRhdGE6Q3QoQ3Qoe30sZS5yZXBNYXBNZXRhZGF0YSksdC5wYXlsb2FkKX0pO2Nhc2UgdnQuU2V0QXJrb3NlQWN0aW9uOnJldHVybiBDdChDdCh7fSxlKSx7fSx7dHlwZTpjdC5OVy5FbmZvcmNlbWVudCxlcnJvck1lc3NhZ2U6XCJcIixhcmtvc2U6Q3QoQ3Qoe30sZS5hcmtvc2UpLHQucGF5bG9hZCl9KTtjYXNlIHZ0LlNldEhpcEFjdGlvbjpyZXR1cm4gQ3QoQ3Qoe30sZSkse30se3R5cGU6Y3QuTlcuVmlzdWFsLGVycm9yTWVzc2FnZTpcIlwifSk7Y2FzZSB2dC5TZXROYXRpdmVIaXBBY3Rpb246dmFyIG49dC5wYXlsb2FkLmNoYWxsZW5nZVR5cGUscj12b2lkIDA9PT1uP3B0LnZpc3VhbDpuO3JldHVybiBDdChDdCh7fSxlKSx7fSx7dHlwZTptdFtyXSxlcnJvck1lc3NhZ2U6XCJcIixuYXRpdmVIaXA6Q3QoQ3Qoe30sZS5uYXRpdmVIaXApLHQucGF5bG9hZCl9KTtjYXNlIHZ0LlNldEFidXNlQmxvY2tBY3Rpb246cmV0dXJuIEN0KEN0KHt9LGUpLHt9LHtlcnJvck1lc3NhZ2U6XCJcIix0eXBlOmN0Lk5XLkJsb2NrfSk7Y2FzZSB2dC5TZXRDb21tb25BY3Rpb246dmFyIG89dC5wYXlsb2FkLGk9by50eXBlLGE9dm9pZCAwPT09aT9lLnR5cGU6aSxsPW8uc2NlbmFyaW9JZCxzPXZvaWQgMD09PWw/ZS5zY2VuYXJpb0lkOmwsYz1vLnBob25lUmVwTWV0YWRhdGEsdT12b2lkIDA9PT1jP2UucGhvbmVSZXBNZXRhZGF0YTpjLGQ9by5lcnJvck1lc3NhZ2UsZj12b2lkIDA9PT1kP2UuZXJyb3JNZXNzYWdlOmQscD1vLmFwaU5hbWUsZz12b2lkIDA9PT1wP2UuYXBpTmFtZTpwO3JldHVybiBDdChDdCh7fSxlKSx7fSx7dHlwZTphLHNjZW5hcmlvSWQ6cyxwaG9uZVJlcE1ldGFkYXRhOnUsZXJyb3JNZXNzYWdlOmYsYXBpTmFtZTpnfSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJjaGFsbGVuZ2VSZWR1Y2VyIHJlY2VpdmVkIHVuZXhwZWN0ZWQgYWN0aW9uIFwiLmNvbmNhdCh0KSl9fXZhciBUdCxFdCxqdD1mdW5jdGlvbihlKXt2YXIgdD1lLmluaXRpYWxTdGF0ZSxuPWUuY2hpbGRyZW4scj14dCgoMCxvLnVzZVJlZHVjZXIpKEF0LHQpLDIpLGk9clswXSxhPXJbMV0sbD0oMCxvLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybntjaGFsbGVuZ2VTdGF0ZTppLGRpc3BhdGNoQ2hhbGxlbmdlU3RhdGVDaGFuZ2U6YX19KSxbaV0pO3JldHVybigwLCRlLmpzeCkoU3QuUHJvdmlkZXIse3ZhbHVlOmwsY2hpbGRyZW46bn0pfSxJdD1uKDEzNjg0KTshZnVuY3Rpb24oZSl7ZS5Ob25lPVwiTm9uZVwiLGUuQWNjb3VudFBpY2tlcj1cIkFjY291bnRQaWNrZXJcIixlLkFjY291bnRUcmFuc2ZlckVycm9yPVwiQWNjb3VudFRyYW5zZmVyRXJyb3JcIixlLkFjY291bnRUcmFuc2Zlck90Yz1cIkFjY291bnRUcmFuc2Zlck90Y1wiLGUuQWNjb3VudFRyYW5zZmVyUXJDb2RlPVwiQWNjb3VudFRyYW5zZmVyUXJDb2RlXCIsZS5BY3dBZGRFbWFpbD1cIkFjd0FkZEVtYWlsXCIsZS5BY3dBZGRQaG9uZT1cIkFjd0FkZFBob25lXCIsZS5BZGRQYXNzd29yZD1cIkFkZFBhc3N3b3JkXCIsZS5BZGRWZXJpZmljYXRpb25Db2RlPVwiQWRkVmVyaWZpY2F0aW9uQ29kZVwiLGUuQWxpYXNBY2NydWFsQ29sbGVjdEVtYWlsPVwiQWxpYXNBY2NydWFsQ29sbGVjdEVtYWlsXCIsZS5BbGlhc0FjY3J1YWxDb2xsZWN0UGFzc3dvcmQ9XCJBbGlhc0FjY3J1YWxDb2xsZWN0UGFzc3dvcmRcIixlLkFsaWFzQWNjcnVhbENvbGxlY3RQaG9uZT1cIkFsaWFzQWNjcnVhbENvbGxlY3RQaG9uZVwiLGUuQWxpYXNBY2NydWFsRXZpY3Rpb25JbmZvPVwiQWxpYXNBY2NydWFsRXZpY3Rpb25JbmZvXCIsZS5BbGlhc0FjY3J1YWxMZWFybk1vcmU9XCJBbGlhc0FjY3J1YWxMZWFybk1vcmVcIixlLkFsaWFzQWNjcnVhbFN1Z2dlc3Rpb25zPVwiQWxpYXNBY2NydWFsU3VnZ2VzdGlvbnNcIixlLkFsaWFzQWNjcnVhbFZlcmlmeUVtYWlsPVwiQWxpYXNBY2NydWFsVmVyaWZ5RW1haWxcIixlLkFsaWFzQWNjcnVhbFZlcmlmeVBob25lPVwiQWxpYXNBY2NydWFsVmVyaWZ5UGhvbmVcIixlLkFwcFN0b3JlUmVkaXJlY3Q9XCJBcHBTdG9yZVJlZGlyZWN0XCIsZS5CZW5lZml0cz1cIkJlbmVmaXRzXCIsZS5DaGFsbGVuZ2U9XCJDaGFsbGVuZ2VcIixlLkNvbmZpcm1TZW5kPVwiQ29uZmlybVNlbmRcIixlLkNvbnRhY3RFbWFpbD1cIkNvbnRhY3RFbWFpbFwiLGUuQ291bnRyeUJpcnRoZGF0ZT1cIkNvdW50cnlCaXJ0aGRhdGVcIixlLkNyZWRlbnRpYWxQaWNrZXI9XCJDcmVkZW50aWFsUGlja2VyXCIsZS5FbnRlclJlY292ZXJ5Q29kZT1cIkVudGVyUmVjb3ZlcnlDb2RlXCIsZS5FcnJvcj1cIkVycm9yXCIsZS5GZXRjaFNlc3Npb25zUHJvZ3Jlc3M9XCJGZXRjaFNlc3Npb25zUHJvZ3Jlc3NcIixlLkZpZG89XCJGaWRvXCIsZS5JZHBEaXNhbWJpZ3VhdGlvbj1cIklkcERpc2FtYmlndWF0aW9uXCIsZS5JZHBSZWRpcmVjdD1cIklkcFJlZGlyZWN0XCIsZS5JZHBSZWRpcmVjdFNwZWVkYnVtcD1cIklkcFJlZGlyZWN0U3BlZWRidW1wXCIsZS5LbXNpPVwiS21zaVwiLGUuTGVhcm5BYm91dFBhcmVudGFsQ29uc2VudD1cIkxlYXJuQWJvdXRQYXJlbnRhbENvbnNlbnRcIixlLkxlYXJuTW9yZU9mZmxpbmVBY2NvdW50PVwiTGVhcm5Nb3JlT2ZmbGluZUFjY291bnRcIixlLkxvZ2luUGFzc2tleUludGVyc3RpdGlhbD1cIkxvZ2luUGFzc2tleUludGVyc3RpdGlhbFwiLGUuTG9zdFByb29mcz1cIkxvc3RQcm9vZnNcIixlLk5ld1Bhc3N3b3JkPVwiTmV3UGFzc3dvcmRcIixlLk9uZVRpbWVDb2RlPVwiT25lVGltZUNvZGVcIixlLk93bmVyc2hpcENoYWxsZW5nZT1cIk93bmVyc2hpcENoYWxsZW5nZVwiLGUuUGFyZW50YWxIYW5kb3Zlcj1cIlBhcmVudGFsSGFuZG92ZXJcIixlLlBhc3N3b3JkPVwiUGFzc3dvcmRcIixlLlBob25lRGlzYW1iaWd1YXRpb249XCJQaG9uZURpc2FtYmlndWF0aW9uXCIsZS5QaG9uZU51bWJlckNvbGxlY3Rpb249XCJQaG9uZU51bWJlckNvbGxlY3Rpb25cIixlLlByb29mQ29uZmlybWF0aW9uPVwiUHJvb2ZDb25maXJtYXRpb25cIixlLlB1c2hOb3RpZmljYXRpb25zPVwiUHVzaE5vdGlmaWNhdGlvbnNcIixlLlJlY292ZXJ5Q29kZT1cIlJlY292ZXJ5Q29kZVwiLGUuUmVtb3RlQ29ubmVjdENhbmFyeVZhbGlkYXRpb249XCJSZW1vdGVDb25uZWN0Q2FuYXJ5VmFsaWRhdGlvblwiLGUuUmVtb3RlTG9naW5Qb2xsaW5nPVwiUmVtb3RlTG9naW5Qb2xsaW5nXCIsZS5SZXNldFBhc3N3b3JkPVwiUmVzZXRQYXNzd29yZFwiLGUuUmVzZXRQYXNzd29yZEFidXNlQmxvY2tlZD1cIlJlc2V0UGFzc3dvcmRBYnVzZUJsb2NrZWRcIixlLlJlc2V0UGFzc3dvcmRDYXB0Y2hhPVwiUmVzZXRQYXNzd29yZENhcHRjaGFcIixlLlJlc2V0UGFzc3dvcmRQcm9vZlBpY2tlcj1cIlJlc2V0UGFzc3dvcmRQcm9vZlBpY2tlclwiLGUuUmVzZXRQYXNzd29yZFByb29mUGlja2VyVGZhPVwiUmVzZXRQYXNzd29yZFByb29mUGlja2VyVGZhXCIsZS5SZXNldFBhc3N3b3JkU2lnbkluTmFtZT1cIlJlc2V0UHdkU2lnbkluTmFtZVwiLGUuUmVzZXRQYXNzd29yZFN1Y2Nlc3M9XCJSZXNldFBhc3N3b3JkU3VjY2Vzc1wiLGUuU2VjdXJpdHlJbmZvVXBkYXRlZD1cIlNlY3VyaXR5SW5mb1VwZGF0ZWRcIixlLlNlZUhvd0RhdGFJc01hbmFnZWQ9XCJTZWVIb3dEYXRhSXNNYW5hZ2VkXCIsZS5TZXJ2aWNlQWJ1c2VFbnRlckNvZGU9XCJTZXJ2aWNlQWJ1c2VFbnRlckNvZGVcIixlLlNlcnZpY2VBYnVzZUVycm9yPVwiU2VydmljZUFidXNlRXJyb3JcIixlLlNlcnZpY2VBYnVzZUxhbmRpbmc9XCJTZXJ2aWNlQWJ1c2VMYW5kaW5nXCIsZS5TZXJ2aWNlQWJ1c2VQaG9uZU51bWJlckNvbGxlY3Rpb249XCJTZXJ2aWNlQWJ1c2VQaG9uZU51bWJlckNvbGxlY3Rpb25cIixlLlNlcnZpY2VBYnVzZVN1Y2Nlc3M9XCJTZXJ2aWNlQWJ1c2VTdWNjZXNzXCIsZS5TZXNzaW9uQXBwcm92YWw9XCJTZXNzaW9uQXBwcm92YWxcIixlLlNlc3Npb25UaW1lb3V0PVwiU2Vzc2lvblRpbWVvdXRcIixlLlNldFNpbmdsZVBhc3N3b3JkPVwiU2V0U2luZ2xlUGFzc3dvcmRcIixlLlNldHVwQXV0aGVudGljYXRvcj1cIlNldHVwQXV0aGVudGljYXRvclwiLGUuU2lnbkluT3B0aW9ucz1cIlNpZ25Jbk9wdGlvbnNcIixlLlNpZ25VcEFsdGVybmF0ZU1lbWJlcm5hbWVTdWdnZXN0aW9ucz1cIlNpZ25VcEFsdGVybmF0ZU1lbWJlcm5hbWVTdWdnZXN0aW9uc1wiLGUuU2lnblVwQmxvY2tlZD1cIlNpZ25VcEJsb2NrZWRcIixlLlNpZ25VcENoaW5hUGlwbD1cIlNpZ25VcENoaW5hUGlwbFwiLGUuU2lnblVwRXZpY3Rpb25FcnJvcj1cIlNpZ25VcEV2aWN0aW9uRXJyb3JcIixlLlNpZ25VcEV2aWN0aW9uU3BlZWRidW1wPVwiU2lnblVwRXZpY3Rpb25TcGVlZGJ1bXBcIixlLlNpZ251cEtvcmVhUHJpdmFjeUNvbnNlbnQ9XCJTaWdudXBLb3JlYVByaXZhY3lDb25zZW50XCIsZS5TaWduVXBNZW1iZXJuYW1lVGFrZW5MZWFybk1vcmU9XCJTaWduVXBNZW1iZXJuYW1lVGFrZW5MZWFybk1vcmVcIixlLlNpZ251cE5hbWVDb2xsZWN0aW9uPVwiU2lnbnVwTmFtZUNvbGxlY3Rpb25cIixlLlNpZ25VcFBhc3N3b3JkQ29sbGVjdGlvbj1cIlNpZ25VcFBhc3N3b3JkQ29sbGVjdGlvblwiLGUuU2lnblVwUmlza0FwaUJsb2NrZWQ9XCJTaWduVXBSaXNrQXBpQmxvY2tlZFwiLGUuU2lnblVwVXNlcm5hbWVSZWNvdmVyeVNwZWVkYnVtcD1cIlNpZ25VcFVzZXJuYW1lUmVjb3ZlcnlTcGVlZGJ1bXBcIixlLlNpZ25VcFZlcmlmaWNhdGlvbj1cIlNpZ25VcFZlcmlmaWNhdGlvblwiLGUuU2tpcEF1dG9Dc3I9XCJTa2lwQXV0b0NzclwiLGUuU2t5cGVHb29kTmV3cz1cIlNreXBlR29vZE5ld3NcIixlLlNzb0NvbnNlbnQ9XCJTc29Db25zZW50XCIsZS5TdGFydFdhaXRGbG93PVwiU3RhcnRXYWl0Rmxvd1wiLGUuU3VibWl0UmVxdWVzdD1cIlN1Ym1pdFJlcXVlc3RcIixlLlRlbmFudFBpY2tlcj1cIlRlbmFudFBpY2tlclwiLGUuVHJhbnNmZXJMb2dpbj1cIlRyYW5zZmVyTG9naW5cIixlLlVzZXJuYW1lPVwiVXNlcm5hbWVcIixlLlVzZXJuYW1lQ29sbGVjdGlvbj1cIlVzZXJuYW1lQ29sbGVjdGlvblwiLGUuVmFsaWRhdGVBY2NvdW50PVwiVmFsaWRhdGVBY2NvdW50XCIsZS5WZXJpZnlFbWFpbD1cIlZlcmlmeUVtYWlsXCIsZS5WZXJpZnlJZGVudGl0eT1cIlZlcmlmeUlkZW50aXR5XCIsZS5WaWV3QWdyZWVtZW50PVwiVmlld0FncmVlbWVudFwiLGUuV2FpdEZsb3c9XCJXYWl0Rmxvd1wiLGUuQ2hhbmdlUGluPVwiQ2hhbmdlUGluXCIsZS5QYXNza2V5RW5yb2xsPVwiUGFzc2tleUVucm9sbFwiLGUuUGFzc2tleUNvbnRpbnVlPVwiUGFzc2tleUNvbnRpbnVlXCIsZS5QYXNza2V5U3VjY2Vzcz1cIlBhc3NrZXlTdWNjZXNzXCIsZS5QYXNza2V5RXJyb3I9XCJQYXNza2V5RXJyb3JcIn0oVHR8fChUdD17fSkpLGZ1bmN0aW9uKGUpe2UuTm9uZT1cIk5vbmVcIixlLkFjY291bnRUcmFuc2Zlcj1cIkFjY291bnRUcmFuc2ZlclwiLGUuQWN3PVwiQWN3XCIsZS5BbGlhc0FjY3J1YWw9XCJBbGlhc0FjY3J1YWxcIixlLkFwcFN0b3JlUmVkaXJlY3Q9XCJBcHBTdG9yZVJlZGlyZWN0XCIsZS5BdXRoTWV0aG9kQ29sbGVjdGlvbj1cIkF1dGhNZXRob2RDb2xsZWN0aW9uXCIsZS5DcmVkZW50aWFsQ29sbGVjdGlvbj1cIkNyZWRlbnRpYWxDb2xsZWN0aW9uXCIsZS5LbXNpPVwiS21zaVwiLGUuTG9naW49XCJMb2dpblwiLGUuT3duZXJzaGlwQ2hhbGxlbmdlPVwiT3duZXJzaGlwQ2hhbGxlbmdlXCIsZS5QYXJlbnRhbENvbnNlbnQ9XCJQYXJlbnRhbENvbnNlbnRcIixlLlJlc2V0UGFzc3dvcmQ9XCJSZXNldFBhc3N3b3JkXCIsZS5SZXNldFBhc3N3b3JkU2lnbkluTmFtZT1cIlJlc2V0UGFzc3dvcmRTaWduSW5OYW1lXCIsZS5TZXJ2aWNlQWJ1c2U9XCJTZXJ2aWNlQWJ1c2VcIixlLlNpZ251cD1cIlNpZ251cFwiLGUuU3NvQ29uc2VudD1cIlNzb0NvbnNlbnRcIixlLlRlbmFudFBpY2tlcj1cIlRlbmFudFBpY2tlclwiLGUuVGZhPVwiVGZhXCIsZS5UcmFuc2ZlckxvZ2luPVwiVHJhbnNmZXJMb2dpblwiLGUuVmVyaWZ5RW1haWw9XCJWZXJpZnlFbWFpbFwiLGUuQ2hhbmdlUGluPVwiQ2hhbmdlUGluXCIsZS5QYXNza2V5SW50ZXJydXB0PVwiUGFzc2tleUludGVycnVwdFwifShFdHx8KEV0PXt9KSk7dmFyIEx0LER0PVwiL1wiLmNvbmNhdChUdC5WaWV3QWdyZWVtZW50LFwiLypcIiksTnQ9bigyMDExMyksUnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm57bG9nVXNlckFjdGlvbjooMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24obil7dmFyIHI9bi5hY3Rpb25OYW1lLG89bi5hY3Rpb25WYWx1ZTtlLmFkZEV2ZW50KHtfdGFibGU6TnQuUi5Vc2VyQWN0aW9uLGRpbWVuc2lvbnM6KDAsTnQuSUspKHQpLGFjdGlvbk5hbWU6cixhY3Rpb25WYWx1ZTooMCxOdC5Haykobyl9KX0pLFtlLHRdKSxsb2dTZXJ2aWNlRGlhZ0V2ZW50OigwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbihuKXt2YXIgcj1uLm1ldHJpY05hbWUsbz1uLm1ldHJpY1ZhbHVlO2UuYWRkRXZlbnQoe190YWJsZTpOdC5SLlNlcnZpY2VEaWFnLGRpbWVuc2lvbnM6KDAsTnQuSUspKHQpLG1ldHJpY05hbWU6cixtZXRyaWNWYWx1ZTooMCxOdC5Haykobyl9KX0pLFtlLHRdKX19LEJ0PW4oNzk5MzkpO2Z1bmN0aW9uIFV0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBGdChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9VdChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe010KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpVdChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBNdChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9IWZ1bmN0aW9uKGUpe2VbZS5BY3RpdmF0ZVZpZXc9MF09XCJBY3RpdmF0ZVZpZXdcIixlW2UuQmVnaW5OYXZpZ2F0ZT0xXT1cIkJlZ2luTmF2aWdhdGVcIixlW2UuRGF0YUxvYWRlZD0yXT1cIkRhdGFMb2FkZWRcIixlW2UuRGVhY3RpdmF0ZVZpZXc9M109XCJEZWFjdGl2YXRlVmlld1wiLGVbZS5IaWRlQmFja0Fycm93QnV0dG9uPTRdPVwiSGlkZUJhY2tBcnJvd0J1dHRvblwiLGVbZS5TZXREZWJ1Z0RldGFpbHM9NV09XCJTZXREZWJ1Z0RldGFpbHNcIixlW2UuU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yPTZdPVwiU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yXCIsZVtlLlNldFVzZXI9N109XCJTZXRVc2VyXCIsZVtlLlNldFVzZXJGbG93VHlwZT04XT1cIlNldFVzZXJGbG93VHlwZVwiLGVbZS5TaG93Q2xvc2VJbkJhbm5lcj05XT1cIlNob3dDbG9zZUluQmFubmVyXCIsZVtlLlRvZ2dsZURlYnVnTW9kZT0xMF09XCJUb2dnbGVEZWJ1Z01vZGVcIixlW2UuU2V0R2FtZXBhZE5hdmlnYXRpb25Nb2R1bGU9MTFdPVwiU2V0R2FtZXBhZE5hdmlnYXRpb25Nb2R1bGVcIn0oTHR8fChMdD17fSkpO3ZhciB6dD17ZGlzYWJsZUhlaWdodEFuaW1hdGlvbjohMSxmb2N1c0VsZVJlZjpudWxsLGhpZGVCYW5uZXJMb2dvOiExLGlzV2lkZVZpZXc6ITEsbG9hZGluZ0RhdGE6ITEsc2hvd0JhY2tCdXR0b25PbkFjdGl2ZVZpZXc6ITEsc2hvd0Nsb3NlQnV0dG9uT25BY3RpdmVWaWV3OiExLHNob3dJZGVudGl0eUJhbm5lcjohMH07ZnVuY3Rpb24gSHQoZSx0KXt2YXIgbj1lO3JldHVybiB0LnVzZXJuYW1lJiYobi51c2VybmFtZT0oMCxCdC5oKSh0LnVzZXJuYW1lKT90LnVzZXJuYW1lOigwLEJ0LlUpKHQudXNlcm5hbWUpKSx0LmRpc3BsYXlVc2VybmFtZSYmKG4uZGlzcGxheVVzZXJuYW1lPSgwLEJ0LmgpKHQuZGlzcGxheVVzZXJuYW1lKT90LmRpc3BsYXlVc2VybmFtZTooMCxCdC5VKSh0LmRpc3BsYXlVc2VybmFtZSkpLG59ZnVuY3Rpb24gVnQoZSx0KXt2YXIgbj1lO3JldHVybiB0JiZOdW1iZXIuaXNJbnRlZ2VyKCt0KSYmK3QgaW4gY3QuWTYmJihuPXBhcnNlSW50KHQsMTApKSxufWZ1bmN0aW9uIFd0KGUsdCl7dmFyIG49dC50eXBlO3N3aXRjaChuKXtjYXNlIEx0LkJlZ2luTmF2aWdhdGU6cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPUl0LmRlZmF1bHQuaW5zdGFuY2UsaT1vLmFjdGl2ZUZsYXZvcixhPW8udGVsZW1ldHJ5O251bGw9PWF8fGEuYWRkRXZlbnQoe190YWJsZTpOdC5SLlVzZXJBY3Rpb24sYWN0aW9uTmFtZTpcIkJlZ2luTmF2aWdhdGlvblwiLGFjdGlvblZhbHVlOnQuZGVzdGluYXRpb258fFwiXCIsZGltZW5zaW9uczooMCxOdC5JSykoRnQoRnQoe30sZSkse30se2FjdGl2ZUZsYXZvcjppfSkpfSk7dmFyIGw9bnVsbCE9PShuPW51bGw9PT0ocj10LmRpc3BsYXlPcHRpb25zKXx8dm9pZCAwPT09cj92b2lkIDA6ci5uYXZpZ2F0aW9uRGlyZWN0aW9uKSYmdm9pZCAwIT09bj9uOmUubmF2aWdhdGlvbkRpcmVjdGlvbjtyZXR1cm4gRnQoRnQoe30sZSkse30se3Nob3dQcm9ncmVzc0luZGljYXRvcjohMCxuYXZpZ2F0aW9uRGlyZWN0aW9uOmx9KX0oZSx0KTtjYXNlIEx0LkFjdGl2YXRlVmlldzpyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbixyPXQudmlld09wdGlvbnMsbz1yLnNob3dJZGVudGl0eUJhbm5lcixpPXIuc2hvd0JhY2tCdXR0b25PbkFjdGl2ZVZpZXcsYT1yLnNob3dDbG9zZUJ1dHRvbk9uQWN0aXZlVmlldyxsPXIuYmFja0J1dHRvbkhhbmRsZXIscz1yLmNsb3NlQnV0dG9uSGFuZGxlcixjPXIuaXNXaWRlVmlldyx1PXIuaGlkZUJhbm5lckxvZ28sZD1yLmxvYWRpbmdEYXRhLGY9ci5zaG93TW9yZU9wdGlvbnMscD1yLmRpc2FibGVIZWlnaHRBbmltYXRpb24sZz1udWxsIT09KG49dC52aWV3T3B0aW9ucy5zaG93UGFnZVRpdGxlKSYmdm9pZCAwIT09bj9uOmUuc2hvd1BhZ2VUaXRsZTtyZXR1cm4gRnQoRnQoe30sZSkse30se3Nob3dQcm9ncmVzc0luZGljYXRvcjpkLGFjdGl2ZVZpZXc6dC52aWV3LGFjdGl2ZUZsb3c6dC5mbG93LHNob3dJZGVudGl0eUJhbm5lcjpvLHNob3dCYWNrQnV0dG9uT25BY3RpdmVWaWV3Omksc2hvd0Nsb3NlQnV0dG9uT25BY3RpdmVWaWV3OmEsYmFja0J1dHRvbkhhbmRsZXI6bCxjbG9zZUJ1dHRvbkhhbmRsZXI6cyxpc1dpZGVWaWV3OmMsaGlkZUJhbm5lckxvZ286dSxzaG93TW9yZU9wdGlvbnM6ZixzaG93UGFnZVRpdGxlOmcsZGlzYWJsZUhlaWdodEFuaW1hdGlvbjpwfSl9KGUsdCk7Y2FzZSBMdC5EZWFjdGl2YXRlVmlldzpyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gRnQoRnQoe30sZSksdC52aWV3T3B0aW9ucyl9KGUsdCk7Y2FzZSBMdC5EYXRhTG9hZGVkOnJldHVybiBGdChGdCh7fSxlKSx7fSx7c2hvd1Byb2dyZXNzSW5kaWNhdG9yOiExfSk7Y2FzZSBMdC5IaWRlQmFja0Fycm93QnV0dG9uOnJldHVybiBGdChGdCh7fSxlKSx7fSx7c2hvd0JhY2tCdXR0b25PbkFjdGl2ZVZpZXc6IXQucGF5bG9hZH0pO2Nhc2UgTHQuU2V0RGVidWdEZXRhaWxzOnJldHVybiBGdChGdCh7fSxlKSx7fSx7ZGVidWdJbmZvOnQucGF5bG9hZH0pO2Nhc2UgTHQuU2hvd0Nsb3NlSW5CYW5uZXI6cmV0dXJuIEZ0KEZ0KHt9LGUpLHt9LHtzaG93Q2xvc2VCdXR0b25PbkFjdGl2ZVZpZXc6dC5wYXlsb2FkfSk7Y2FzZSBMdC5Ub2dnbGVEZWJ1Z01vZGU6cmV0dXJuIEZ0KEZ0KHt9LGUpLHt9LHtkZWJ1Z0luZm86RnQoRnQoe30sZS5kZWJ1Z0luZm8pLHt9LHtkZWJ1Z01vZGVBY3RpdmU6IWUuZGVidWdJbmZvLmRlYnVnTW9kZUFjdGl2ZX0pfSk7Y2FzZSBMdC5TZXRVc2VyOnJldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuPUh0KGUudXNlcix0LnBheWxvYWQpO3JldHVybiBGdChGdCh7fSxlKSx7fSx7dXNlcjpufSl9KGUsdCk7Y2FzZSBMdC5TZXRVc2VyRmxvd1R5cGU6cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49VnQoZS51c2VyRmxvd1R5cGUsdC5wYXlsb2FkKTtyZXR1cm4gRnQoRnQoe30sZSkse30se3VzZXJGbG93VHlwZTpufSl9KGUsdCk7Y2FzZSBMdC5TZXRTaG93UHJvZ3Jlc3NJbmRpY2F0b3I6cmV0dXJuIEZ0KEZ0KHt9LGUpLHt9LHtzaG93UHJvZ3Jlc3NJbmRpY2F0b3I6dC5wYXlsb2FkfSk7Y2FzZSBMdC5TZXRHYW1lcGFkTmF2aWdhdGlvbk1vZHVsZTpyZXR1cm4gRnQoRnQoe30sZSkse30se2dhbWVwYWRNYW5hZ2VyOnQucGF5bG9hZH0pO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiR2xvYmFsUmVkdWNlciByZWNlaXZlZCB1bmV4cGVjdGVkIGFjdGlvbiBcIi5jb25jYXQobikpfX1mdW5jdGlvbiBHdChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gJHQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/R3QoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtLdChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6R3QoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gS3QoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHF0KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBRdChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBRdChlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gUXQoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgWHQ9e2Vycm9yQ29kZTpcIlwiLGVycm9yTWVzc2FnZTpcIlwiLGRlYnVnTW9kZUFjdGl2ZTohMSx0aW1lU3RhbXA6XCJcIn0sWXQ9e2FjdGl2ZUZsb3c6RXQuTm9uZSxhY3RpdmVWaWV3OlR0Lk5vbmUsYWxsb3dHcmF5T3V0TGlnaHRib3g6ITAsZGVidWdJbmZvOlh0LGRpc2FibGVIZWlnaHRBbmltYXRpb246ITEsaGlkZUJhbm5lckxvZ286ITEsaXNXaWRlVmlldzohMSxuYXZpZ2F0aW9uRGlyZWN0aW9uOlwiZm9yd2FyZFwiLHNob3dCYWNrQnV0dG9uT25BY3RpdmVWaWV3OiExLHNob3dDbG9zZUJ1dHRvbk9uQWN0aXZlVmlldzohMSxzaG93SWRlbnRpdHlCYW5uZXI6ITAsc2hvd1Byb2dyZXNzSW5kaWNhdG9yOiExLHVzZXI6e2Rpc3BsYXlVc2VybmFtZTp7fSx1c2VybmFtZTp7fX0sdXNlckZsb3dUeXBlOmN0Llk2LlVua25vd24sc2hvd1BhZ2VUaXRsZTohMX0sWnQ9KDAsby5jcmVhdGVDb250ZXh0KSh7Z2xvYmFsU3RhdGU6WXQsZGlzcGF0Y2hTdGF0ZUNoYW5nZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIkdsb2JhbENvbnRleHQgbm90IGluaXRpYWxpemVkXCIpfX0pLEp0PWZ1bmN0aW9uKCl7cmV0dXJuKDAsby51c2VDb250ZXh0KShadCl9LGVuPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5pdGlhbFN0YXRlLG49ZS5jaGlsZHJlbixyPXF0KCgwLG8udXNlUmVkdWNlcikoV3QsdCksMiksaT1yWzBdLGE9clsxXSxsPSgwLG8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJue2dsb2JhbFN0YXRlOmksZGlzcGF0Y2hTdGF0ZUNoYW5nZTphfX0pLFtpXSk7cmV0dXJuKDAsJGUuanN4KShadC5Qcm92aWRlcix7dmFsdWU6bCxjaGlsZHJlbjpufSl9O2Z1bmN0aW9uIHRuKGUsdCxuKXt2YXIgcj0kdCgkdCh7fSxZdCkse30se2RlYnVnSW5mbzokdCh7fSxYdCl9KTtyZXR1cm4gbnVsbCE9ZSYmZS5zRXJyb3JDb2RlJiYoci5kZWJ1Z0luZm8uZXJyb3JDb2RlPWUuc0Vycm9yQ29kZSksbnVsbCE9ZSYmZS5zdHJTZXJ2aWNlRXhjZXB0aW9uTWVzc2FnZSYmKHIuZGVidWdJbmZvLmVycm9yTWVzc2FnZT1lLnN0clNlcnZpY2VFeGNlcHRpb25NZXNzYWdlKSxudWxsIT1lJiZlLmZJc0RlYnVnVHJhY2luZ0VuYWJsZWQmJihyLmRlYnVnSW5mby5kZWJ1Z01vZGVBY3RpdmU9ITApLG51bGwhPWUmJmUuc3RyVGltZXN0YW1wJiYoci5kZWJ1Z0luZm8udGltZVN0YW1wPWUuc3RyVGltZXN0YW1wKSxudWxsIT1lJiZlLmZBbGxvd0dyYXlPdXRMaWdodEJveCYmKHIuYWxsb3dHcmF5T3V0TGlnaHRib3g9ZS5mQWxsb3dHcmF5T3V0TGlnaHRCb3gpLG51bGwhPWUmJmUuZlNob3dQYWdlTGV2ZWxUaXRsZUFuZERlc2MmJihyLnNob3dQYWdlVGl0bGU9ZS5mU2hvd1BhZ2VMZXZlbFRpdGxlQW5kRGVzYyksdCYmKHIudXNlcj1IdChZdC51c2VyLHQpKSxyLmFjdGl2ZUZsb3c9bnx8RXQuTm9uZSxyfWZ1bmN0aW9uIG5uKGUpe3ZhciB0PUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLG49KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUscj1uLmFjdGl2ZVZpZXcsaT1uLmFjdGl2ZUZsb3c7cmV0dXJuKDAsby51c2VNZW1vKSgoZnVuY3Rpb24oKXtyZXR1cm57ZGltZW5zaW9uczooMCxOdC5JSykoe2FjdGl2ZVZpZXc6cixhY3RpdmVGbG93OmksYWN0aXZlRmxhdm9yOnR9KSxjdXJyZW50U3RhdGU6ZX19KSxbcixpLHQsZV0pfXZhciBybjshZnVuY3Rpb24oZSl7ZS5Ob25lPVwiXCIsZS5BY2NvdW50VHJhbnNmZXJEZW5pZWQ9XCJBY2NvdW50VHJhbnNmZXJfRGVuaWVkXCIsZS5BY2NvdW50VHJhbnNmZXJFcnJvck1pc3NpbmdPdGM9XCJBY2NvdW50VHJhbnNmZXJFcnJvcl9NaXNzaW5nT3RjXCIsZS5BY2NvdW50VHJhbnNmZXJFcnJvclVua25vd25FcnJvcj1cIkFjY291bnRUcmFuc2ZlckVycm9yX1Vua25vd25FcnJvclwiLGUuQWNjb3VudFRyYW5zZmVyTW9iaWxlRGVuaWVkPVwiQWNjb3VudFRyYW5zZmVyX01vYmlsZURlbmllZFwiLGUuQWNjb3VudFRyYW5zZmVyU3VjY2Vzcz1cIkFjY291bnRUcmFuc2Zlcl9TdWNjZXNzXCIsZS5BY2NvdW50VHJhbnNmZXJUaW1lb3V0PVwiQWNjb3VudFRyYW5zZmVyX1RpbWVvdXRcIixlLkFjd1NTT0JyaWRnZUxvYWRGYWlsZWQ9XCJBY3dfU1NPQnJpZGdlX0xvYWRfRmFpbGVkXCIsZS5BY3dTU09CcmlkZ2VMb2FkU3VjY2Vzcz1cIkFjd19TU09CcmlkZ2VfTG9hZF9TdWNjZXNzXCIsZS5BY3dTU09Ub2tlblJlcXVlc3RGYWlsZWQ9XCJBY3dfU1NPVG9rZW5SZXF1ZXN0X0ZhaWxlZFwiLGUuQWN3U1NPVG9rZW5SZXF1ZXN0U3RhcnQ9XCJBY3dfU1NPVG9rZW5SZXF1ZXN0X1N0YXJ0XCIsZS5BY3dTU09Ub2tlblJlcXVlc3RTdWNjZXNzPVwiQWN3X1NTT1Rva2VuUmVxdWVzdF9TdWNjZXNzXCIsZS5BY3dTU09VcmxPcGVuRmFpbGVkPVwiQWN3X1NTT1VybE9wZW5fRmFpbGVkXCIsZS5BY3dTU09VcmxPcGVuU3VjY2Vzcz1cIkFjd19TU09VcmxPcGVuX1N1Y2Nlc3NcIixlLkNvYnJhbmRpbmdFcnJvcj1cIkNvYnJhbmRpbmdFcnJvclwiLGUuQ29icmFuZGluZ05vdEZvdW5kSW5NYXA9XCJDb2JyYW5kaW5nTm90Rm91bmRJbk1hcFwiLGUuSWZyYW1lTG9hZER1cmF0aW9uREZQPVwiSWZyYW1lTG9hZER1cmF0aW9uX0RGUFwiLGUuSWZyYW1lTG9hZER1cmF0aW9uSHVtYW49XCJJZnJhbWVMb2FkRHVyYXRpb25fSHVtYW5cIixlLkltYWdlTm90Rm91bmQ9XCJJbWFnZV9Ob3RGb3VuZFwiLGUuSW52YWxpZENsaWVudElkPVwiSW52YWxpZENsaWVudElkXCIsZS5JbnZhbGlkQ29icmFuZElkPVwiSW52YWxpZENvYnJhbmRJZFwiLGUuSW52YWxpZENvYnJhbmRJZEZvckNsaWVudD1cIkludmFsaWRDb2JyYW5kSWRGb3JDbGllbnRcIixlLkludmFsaWRUZW5hbnRMaXN0PVwiSW52YWxpZFRlbmFudExpc3RcIixlLk90Y0NyZWRlbnRpYWxVbmRlZmluZWQ9XCJPdGNDcmVkZW50aWFsX1VuZGVmaW5lZFwiLGUuUXJMb2dvTm90Rm91bmQ9XCJRckxvZ29fTm90Rm91bmRcIixlLlJlZGlyZWN0PVwiUmVkaXJlY3RcIn0ocm58fChybj17fSkpO3ZhciBvbj1cImZcIixhbj1cIl9fX1wiLGxuPXt9LHNuPXthbGw6MSxhbmltYXRpb246MSxiYWNrZ3JvdW5kOjEsYmFja2dyb3VuZFBvc2l0aW9uOjEsYm9yZGVyOjEsYm9yZGVyQmxvY2s6MSxib3JkZXJCbG9ja0VuZDoxLGJvcmRlckJsb2NrU3RhcnQ6MSxib3JkZXJCb3R0b206MSxib3JkZXJDb2xvcjoxLGJvcmRlckltYWdlOjEsYm9yZGVySW5saW5lOjEsYm9yZGVySW5saW5lRW5kOjEsYm9yZGVySW5saW5lU3RhcnQ6MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmFkaXVzOjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJTdHlsZToxLGJvcmRlclRvcDoxLGJvcmRlcldpZHRoOjEsY29sdW1uczoxLGNvbHVtblJ1bGU6MSxmbGV4OjEsZmxleEZsb3c6MSxmb250OjEsZ2FwOjEsZ3JpZDoxLGdyaWRBcmVhOjEsZ3JpZENvbHVtbjoxLGdyaWRSb3c6MSxncmlkVGVtcGxhdGU6MSxsaW5lQ2xhbXA6MSxsaXN0U3R5bGU6MSxtYXJnaW46MSxtYXNrOjEsbWFza0JvcmRlcjoxLG1vdGlvbjoxLG9mZnNldDoxLG91dGxpbmU6MSxvdmVyZmxvdzoxLG92ZXJzY3JvbGxCZWhhdmlvcjoxLHBhZGRpbmc6MSxwbGFjZUl0ZW1zOjEscGxhY2VTZWxmOjEsdGV4dERlY29yYXRpb246MSx0ZXh0RW1waGFzaXM6MSx0cmFuc2l0aW9uOjF9O3ZhciBjbj1mdW5jdGlvbihlKXtmb3IodmFyIHQsbj0wLHI9MCxvPWUubGVuZ3RoO28+PTQ7KytyLG8tPTQpdD0xNTQwNDgzNDc3Kig2NTUzNSYodD0yNTUmZS5jaGFyQ29kZUF0KHIpfCgyNTUmZS5jaGFyQ29kZUF0KCsrcikpPDw4fCgyNTUmZS5jaGFyQ29kZUF0KCsrcikpPDwxNnwoMjU1JmUuY2hhckNvZGVBdCgrK3IpKTw8MjQpKSsoNTk3OTcqKHQ+Pj4xNik8PDE2KSxuPTE1NDA0ODM0NzcqKDY1NTM1Jih0Xj10Pj4+MjQpKSsoNTk3OTcqKHQ+Pj4xNik8PDE2KV4xNTQwNDgzNDc3Kig2NTUzNSZuKSsoNTk3OTcqKG4+Pj4xNik8PDE2KTtzd2l0Y2gobyl7Y2FzZSAzOm5ePSgyNTUmZS5jaGFyQ29kZUF0KHIrMikpPDwxNjtjYXNlIDI6bl49KDI1NSZlLmNoYXJDb2RlQXQocisxKSk8PDg7Y2FzZSAxOm49MTU0MDQ4MzQ3NyooNjU1MzUmKG5ePTI1NSZlLmNoYXJDb2RlQXQocikpKSsoNTk3OTcqKG4+Pj4xNik8PDE2KX1yZXR1cm4oKChuPTE1NDA0ODM0NzcqKDY1NTM1JihuXj1uPj4+MTMpKSsoNTk3OTcqKG4+Pj4xNik8PDE2KSlebj4+PjE1KT4+PjApLnRvU3RyaW5nKDM2KX07ZnVuY3Rpb24gdW4oZSx0KXtyZXR1cm4gYW4rZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYoNz09PXQpcmV0dXJuIGU7Zm9yKHZhciBuPXQ7bjw3O24rKyllKz1cIjBcIjtyZXR1cm4gZX0oY24oZSt0KSl9ZnVuY3Rpb24gZG4oZSx0KXt2YXIgbj1cIlwiO2Zvcih2YXIgciBpbiBlKXt2YXIgbz1lW3JdO2lmKG8pe3ZhciBpPUFycmF5LmlzQXJyYXkobyk7bis9XCJydGxcIj09PXQ/KGk/b1sxXTpvKStcIiBcIjooaT9vWzBdOm8pK1wiIFwifX1yZXR1cm4gbi5zbGljZSgwLC0xKX1mdW5jdGlvbiBmbihlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXt2YXIgbz1kbihlW3JdLHQpLGk9dW4obyx0KSxhPWkrXCIgXCIrbztsbltpXT1bZVtyXSx0XSxuW3JdPWF9cmV0dXJuIG59ZnVuY3Rpb24gcG4oZSl7cmV0dXJuIHBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHBuKGUpfWZ1bmN0aW9uIGduKGUpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj10WzBdLHI9dFsxXTtyZXR1cm4gZVtuXT1yLGVbcl09bixlfSkse30pfWZ1bmN0aW9uIG1uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlfWZ1bmN0aW9uIGhuKGUsdCl7cmV0dXJuLTEhPT1lLmluZGV4T2YodCl9ZnVuY3Rpb24gYm4oZSx0LG4scil7cmV0dXJuIHQrKG89biwwPT09cGFyc2VGbG9hdChvKT9vOlwiLVwiPT09b1swXT9vLnNsaWNlKDEpOlwiLVwiK28pK3I7dmFyIG99ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGUucmVwbGFjZSgvICsvZyxcIiBcIikuc3BsaXQoXCIgXCIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpfSkpLmZpbHRlcihCb29sZWFuKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5saXN0LHI9ZS5zdGF0ZSxvPSh0Lm1hdGNoKC9cXCgvZyl8fFtdKS5sZW5ndGgsaT0odC5tYXRjaCgvXFwpL2cpfHxbXSkubGVuZ3RoO3JldHVybiByLnBhcmVuc0RlcHRoPjA/bltuLmxlbmd0aC0xXT1uW24ubGVuZ3RoLTFdK1wiIFwiK3Q6bi5wdXNoKHQpLHIucGFyZW5zRGVwdGgrPW8taSx7bGlzdDpuLHN0YXRlOnJ9fSkse2xpc3Q6W10sc3RhdGU6e3BhcmVuc0RlcHRoOjB9fSkubGlzdH1mdW5jdGlvbiB2bihlKXt2YXIgdD15bihlKTtpZih0Lmxlbmd0aDw9M3x8dC5sZW5ndGg+NClyZXR1cm4gZTt2YXIgbj10WzBdLHI9dFsxXSxvPXRbMl07cmV0dXJuW24sdFszXSxvLHJdLmpvaW4oXCIgXCIpfXZhciB3bj17cGFkZGluZzpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlO3JldHVybiBtbih0KT90OnZuKHQpfSx0ZXh0U2hhZG93OmZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxuPTAscj0wLG89ITE7cjxlLmxlbmd0aDspb3x8XCIsXCIhPT1lW3JdP1wiKFwiPT09ZVtyXT8obz0hMCxyKyspOlwiKVwiPT09ZVtyXT8obz0hMSxyKyspOnIrKzoodC5wdXNoKGUuc3Vic3RyaW5nKG4scikudHJpbSgpKSxuPSsrcik7cmV0dXJuIG4hPXImJnQucHVzaChlLnN1YnN0cmluZyhuLHIrMSkpLHR9KGUudmFsdWUpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvKC0qKShbLnxcXGRdKykvLChmdW5jdGlvbihlLHQsbil7cmV0dXJuXCIwXCI9PT1uP2U6XCJcIisoXCJcIj09PXQ/XCItXCI6XCJcIikrbn0pKX0pKTtyZXR1cm4gdC5qb2luKFwiLFwiKX0sYm9yZGVyQ29sb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHZuKGUudmFsdWUpfSxib3JkZXJSYWRpdXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZTtpZihtbih0KSlyZXR1cm4gdDtpZihobih0LFwiL1wiKSl7dmFyIG49dC5zcGxpdChcIi9cIikscj1uWzBdLG89blsxXTtyZXR1cm4gd24uYm9yZGVyUmFkaXVzKHt2YWx1ZTpyLnRyaW0oKX0pK1wiIC8gXCIrd24uYm9yZGVyUmFkaXVzKHt2YWx1ZTpvLnRyaW0oKX0pfXZhciBpPXluKHQpO3N3aXRjaChpLmxlbmd0aCl7Y2FzZSAyOnJldHVybiBpLnJldmVyc2UoKS5qb2luKFwiIFwiKTtjYXNlIDQ6dmFyIGE9aVswXSxsPWlbMV0scz1pWzJdO3JldHVybltsLGEsaVszXSxzXS5qb2luKFwiIFwiKTtkZWZhdWx0OnJldHVybiB0fX0sYmFja2dyb3VuZDpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlLG49ZS52YWx1ZXNUb0NvbnZlcnQscj1lLmlzUnRsLG89ZS5iZ0ltZ0RpcmVjdGlvblJlZ2V4LGk9ZS5iZ1Bvc0RpcmVjdGlvblJlZ2V4O2lmKG1uKHQpKXJldHVybiB0O3ZhciBhPXQucmVwbGFjZSgvKHVybFxcKC4qP1xcKSl8KHJnYmE/XFwoLio/XFwpKXwoaHNsXFwoLio/XFwpKXwoI1thLWZBLUYwLTldKyl8KChefCApKFxcRCkrKCB8JCkpL2csXCJcIikudHJpbSgpO3JldHVybiB0PXQucmVwbGFjZShhLHduLmJhY2tncm91bmRQb3NpdGlvbih7dmFsdWU6YSx2YWx1ZXNUb0NvbnZlcnQ6bixpc1J0bDpyLGJnUG9zRGlyZWN0aW9uUmVnZXg6aX0pKSx3bi5iYWNrZ3JvdW5kSW1hZ2Uoe3ZhbHVlOnQsdmFsdWVzVG9Db252ZXJ0Om4sYmdJbWdEaXJlY3Rpb25SZWdleDpvfSl9LGJhY2tncm91bmRJbWFnZTpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlLG49ZS52YWx1ZXNUb0NvbnZlcnQscj1lLmJnSW1nRGlyZWN0aW9uUmVnZXg7cmV0dXJuIGhuKHQsXCJ1cmwoXCIpfHxobih0LFwibGluZWFyLWdyYWRpZW50KFwiKT90LnJlcGxhY2UociwoZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlLnJlcGxhY2UocixuW3JdKX0pKTp0fSxiYWNrZ3JvdW5kUG9zaXRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZSxuPWUudmFsdWVzVG9Db252ZXJ0LHI9ZS5pc1J0bCxvPWUuYmdQb3NEaXJlY3Rpb25SZWdleDtyZXR1cm4gdC5yZXBsYWNlKHI/L14oKC18XFxkfFxcLikrJSkvOm51bGwsKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5kZXhPZihcIi5cIik7aWYoLTE9PT10KWU9MTAwLXBhcnNlRmxvYXQoZSkrXCIlXCI7ZWxzZXt2YXIgbj1lLmxlbmd0aC10LTI7ZT0oZT0xMDAtcGFyc2VGbG9hdChlKSkudG9GaXhlZChuKStcIiVcIn1yZXR1cm4gZX0odCl9KSkucmVwbGFjZShvLChmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pKX0sYmFja2dyb3VuZFBvc2l0aW9uWDpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlLG49ZS52YWx1ZXNUb0NvbnZlcnQscj1lLmlzUnRsLG89ZS5iZ1Bvc0RpcmVjdGlvblJlZ2V4O3JldHVybiBtbih0KT90OnduLmJhY2tncm91bmRQb3NpdGlvbih7dmFsdWU6dCx2YWx1ZXNUb0NvbnZlcnQ6bixpc1J0bDpyLGJnUG9zRGlyZWN0aW9uUmVnZXg6b30pfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PWUudmFsdWUsbj1lLnByb3BlcnRpZXNUb0NvbnZlcnQ7cmV0dXJuIHQuc3BsaXQoLyxcXHMqL2cpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdChcIiBcIik7cmV0dXJuIHRbMF09blt0WzBdXXx8dFswXSx0LmpvaW4oXCIgXCIpfSkpLmpvaW4oXCIsIFwiKX0sdHJhbnNpdGlvblByb3BlcnR5OmZ1bmN0aW9uKGUpe3ZhciB0PWUudmFsdWUsbj1lLnByb3BlcnRpZXNUb0NvbnZlcnQ7cmV0dXJuIHQuc3BsaXQoLyxcXHMqL2cpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV18fGV9KSkuam9pbihcIiwgXCIpfSx0cmFuc2Zvcm06ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZSxuPVwiKD86KD86KD86XFxcXFswLTlhLWZdezEsNn0pKD86XFxcXHJcXFxcbnxcXFxccyk/KXxcXFxcXFxcXFteXFxcXHJcXFxcblxcXFxmMC05YS1mXSlcIixyPVwiKCg/Oi0/KD86WzAtOV0qXFxcXC5bMC05XSt8WzAtOV0rKSg/OlxcXFxzKig/OmVtfGV4fHB4fGNtfG1tfGlufHB0fHBjfGRlZ3xyYWR8Z3JhZHxtc3xzfGh6fGtoenwlKXwtPyg/OltfYS16XXxbXlxcXFx1MDAyMC1cXFxcdTAwN2VdfFwiK24rXCIpKD86W19hLXowLTktXXxbXlxcXFx1MDAyMC1cXFxcdTAwN2VdfFwiK24rXCIpKik/KXwoPzppbmhlcml0fGF1dG8pKVwiLG89bmV3IFJlZ0V4cChcIih0cmFuc2xhdGVYXFxcXHMqXFxcXChcXFxccyopXCIrcitcIihcXFxccypcXFxcKSlcIixcImdpXCIpLGk9bmV3IFJlZ0V4cChcIih0cmFuc2xhdGVcXFxccypcXFxcKFxcXFxzKilcIityK1wiKCg/OlxcXFxzKixcXFxccypcIityK1wiKXswLDF9XFxcXHMqXFxcXCkpXCIsXCJnaVwiKSxhPW5ldyBSZWdFeHAoXCIodHJhbnNsYXRlM2RcXFxccypcXFxcKFxcXFxzKilcIityK1wiKCg/OlxcXFxzKixcXFxccypcIityK1wiKXswLDJ9XFxcXHMqXFxcXCkpXCIsXCJnaVwiKSxsPW5ldyBSZWdFeHAoXCIocm90YXRlW1pZXT9cXFxccypcXFxcKFxcXFxzKilcIityK1wiKFxcXFxzKlxcXFwpKVwiLFwiZ2lcIik7cmV0dXJuIHQucmVwbGFjZShvLGJuKS5yZXBsYWNlKGksYm4pLnJlcGxhY2UoYSxibikucmVwbGFjZShsLGJuKX19O3duLm9iamVjdFBvc2l0aW9uPXduLmJhY2tncm91bmRQb3NpdGlvbix3bi5tYXJnaW49d24ucGFkZGluZyx3bi5ib3JkZXJXaWR0aD13bi5wYWRkaW5nLHduLmJveFNoYWRvdz13bi50ZXh0U2hhZG93LHduLndlYmtpdEJveFNoYWRvdz13bi5ib3hTaGFkb3csd24ubW96Qm94U2hhZG93PXduLmJveFNoYWRvdyx3bi5XZWJraXRCb3hTaGFkb3c9d24uYm94U2hhZG93LHduLk1vekJveFNoYWRvdz13bi5ib3hTaGFkb3csd24uYm9yZGVyU3R5bGU9d24uYm9yZGVyQ29sb3Isd24ud2Via2l0VHJhbnNmb3JtPXduLnRyYW5zZm9ybSx3bi5tb3pUcmFuc2Zvcm09d24udHJhbnNmb3JtLHduLldlYmtpdFRyYW5zZm9ybT13bi50cmFuc2Zvcm0sd24uTW96VHJhbnNmb3JtPXduLnRyYW5zZm9ybSx3bi50cmFuc2Zvcm1PcmlnaW49d24uYmFja2dyb3VuZFBvc2l0aW9uLHduLndlYmtpdFRyYW5zZm9ybU9yaWdpbj13bi50cmFuc2Zvcm1PcmlnaW4sd24ubW96VHJhbnNmb3JtT3JpZ2luPXduLnRyYW5zZm9ybU9yaWdpbix3bi5XZWJraXRUcmFuc2Zvcm1PcmlnaW49d24udHJhbnNmb3JtT3JpZ2luLHduLk1velRyYW5zZm9ybU9yaWdpbj13bi50cmFuc2Zvcm1PcmlnaW4sd24ud2Via2l0VHJhbnNpdGlvbj13bi50cmFuc2l0aW9uLHduLm1velRyYW5zaXRpb249d24udHJhbnNpdGlvbix3bi5XZWJraXRUcmFuc2l0aW9uPXduLnRyYW5zaXRpb24sd24uTW96VHJhbnNpdGlvbj13bi50cmFuc2l0aW9uLHduLndlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eT13bi50cmFuc2l0aW9uUHJvcGVydHksd24ubW96VHJhbnNpdGlvblByb3BlcnR5PXduLnRyYW5zaXRpb25Qcm9wZXJ0eSx3bi5XZWJraXRUcmFuc2l0aW9uUHJvcGVydHk9d24udHJhbnNpdGlvblByb3BlcnR5LHduLk1velRyYW5zaXRpb25Qcm9wZXJ0eT13bi50cmFuc2l0aW9uUHJvcGVydHksd25bXCJ0ZXh0LXNoYWRvd1wiXT13bi50ZXh0U2hhZG93LHduW1wiYm9yZGVyLWNvbG9yXCJdPXduLmJvcmRlckNvbG9yLHduW1wiYm9yZGVyLXJhZGl1c1wiXT13bi5ib3JkZXJSYWRpdXMsd25bXCJiYWNrZ3JvdW5kLWltYWdlXCJdPXduLmJhY2tncm91bmRJbWFnZSx3bltcImJhY2tncm91bmQtcG9zaXRpb25cIl09d24uYmFja2dyb3VuZFBvc2l0aW9uLHduW1wiYmFja2dyb3VuZC1wb3NpdGlvbi14XCJdPXduLmJhY2tncm91bmRQb3NpdGlvblgsd25bXCJvYmplY3QtcG9zaXRpb25cIl09d24ub2JqZWN0UG9zaXRpb24sd25bXCJib3JkZXItd2lkdGhcIl09d24ucGFkZGluZyx3bltcImJveC1zaGFkb3dcIl09d24udGV4dFNoYWRvdyx3bltcIi13ZWJraXQtYm94LXNoYWRvd1wiXT13bi50ZXh0U2hhZG93LHduW1wiLW1vei1ib3gtc2hhZG93XCJdPXduLnRleHRTaGFkb3csd25bXCJib3JkZXItc3R5bGVcIl09d24uYm9yZGVyQ29sb3Isd25bXCItd2Via2l0LXRyYW5zZm9ybVwiXT13bi50cmFuc2Zvcm0sd25bXCItbW96LXRyYW5zZm9ybVwiXT13bi50cmFuc2Zvcm0sd25bXCJ0cmFuc2Zvcm0tb3JpZ2luXCJdPXduLnRyYW5zZm9ybU9yaWdpbix3bltcIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpblwiXT13bi50cmFuc2Zvcm1PcmlnaW4sd25bXCItbW96LXRyYW5zZm9ybS1vcmlnaW5cIl09d24udHJhbnNmb3JtT3JpZ2luLHduW1wiLXdlYmtpdC10cmFuc2l0aW9uXCJdPXduLnRyYW5zaXRpb24sd25bXCItbW96LXRyYW5zaXRpb25cIl09d24udHJhbnNpdGlvbix3bltcInRyYW5zaXRpb24tcHJvcGVydHlcIl09d24udHJhbnNpdGlvblByb3BlcnR5LHduW1wiLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5XCJdPXduLnRyYW5zaXRpb25Qcm9wZXJ0eSx3bltcIi1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eVwiXT13bi50cmFuc2l0aW9uUHJvcGVydHk7dmFyIFNuPWduKFtbXCJwYWRkaW5nTGVmdFwiLFwicGFkZGluZ1JpZ2h0XCJdLFtcIm1hcmdpbkxlZnRcIixcIm1hcmdpblJpZ2h0XCJdLFtcImxlZnRcIixcInJpZ2h0XCJdLFtcImJvcmRlckxlZnRcIixcImJvcmRlclJpZ2h0XCJdLFtcImJvcmRlckxlZnRDb2xvclwiLFwiYm9yZGVyUmlnaHRDb2xvclwiXSxbXCJib3JkZXJMZWZ0U3R5bGVcIixcImJvcmRlclJpZ2h0U3R5bGVcIl0sW1wiYm9yZGVyTGVmdFdpZHRoXCIsXCJib3JkZXJSaWdodFdpZHRoXCJdLFtcImJvcmRlclRvcExlZnRSYWRpdXNcIixcImJvcmRlclRvcFJpZ2h0UmFkaXVzXCJdLFtcImJvcmRlckJvdHRvbUxlZnRSYWRpdXNcIixcImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzXCJdLFtcInBhZGRpbmctbGVmdFwiLFwicGFkZGluZy1yaWdodFwiXSxbXCJtYXJnaW4tbGVmdFwiLFwibWFyZ2luLXJpZ2h0XCJdLFtcImJvcmRlci1sZWZ0XCIsXCJib3JkZXItcmlnaHRcIl0sW1wiYm9yZGVyLWxlZnQtY29sb3JcIixcImJvcmRlci1yaWdodC1jb2xvclwiXSxbXCJib3JkZXItbGVmdC1zdHlsZVwiLFwiYm9yZGVyLXJpZ2h0LXN0eWxlXCJdLFtcImJvcmRlci1sZWZ0LXdpZHRoXCIsXCJib3JkZXItcmlnaHQtd2lkdGhcIl0sW1wiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1c1wiLFwiYm9yZGVyLXRvcC1yaWdodC1yYWRpdXNcIl0sW1wiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1c1wiLFwiYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXNcIl1dKSxQbj1bXCJjb250ZW50XCJdLHhuPWduKFtbXCJsdHJcIixcInJ0bFwiXSxbXCJsZWZ0XCIsXCJyaWdodFwiXSxbXCJ3LXJlc2l6ZVwiLFwiZS1yZXNpemVcIl0sW1wic3ctcmVzaXplXCIsXCJzZS1yZXNpemVcIl0sW1wibnctcmVzaXplXCIsXCJuZS1yZXNpemVcIl1dKSxPbj1uZXcgUmVnRXhwKFwiKF58XFxcXFd8XykoKGx0cil8KHJ0bCl8KGxlZnQpfChyaWdodCkpKFxcXFxXfF98JClcIixcImdcIiksX249bmV3IFJlZ0V4cChcIihsZWZ0KXwocmlnaHQpXCIpO2Z1bmN0aW9uIENuKGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsbil7dmFyIHI9ZVtuXTtpZihcInN0cmluZ1wiPT10eXBlb2YgciYmKHI9ci50cmltKCkpLGhuKFBuLG4pKXJldHVybiB0W25dPXIsdDt2YXIgbz1rbihuLHIpLGk9by5rZXksYT1vLnZhbHVlO3JldHVybiB0W2ldPWEsdH0pLEFycmF5LmlzQXJyYXkoZSk/W106e30pfWZ1bmN0aW9uIGtuKGUsdCl7dmFyIG4scj0vXFwvXFwqXFxzP0Bub2ZsaXBcXHM/XFwqXFwvLy50ZXN0KHQpLG89cj9lOlNuW249ZV18fG4saT1yP3Q6ZnVuY3Rpb24oZSx0KXtpZighZnVuY3Rpb24oZSl7cmV0dXJuIHQ9ZSwhKFwiYm9vbGVhblwiPT10eXBlb2YgdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV9KGUpfHxmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmZS5tYXRjaCgvdmFyXFwoLipcXCkvZyl9KGUpKTt2YXIgdH0odCkpcmV0dXJuIHQ7aWYobj10LG4mJlwib2JqZWN0XCI9PT1wbihuKSlyZXR1cm4gQ24odCk7dmFyIG47dmFyIHIsbz1tbih0KSxpPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9KHQpLGE9b3x8aT90OnQucmVwbGFjZSgvICFpbXBvcnRhbnQuKj8kLyxcIlwiKSxsPSFvJiZhLmxlbmd0aCE9PXQubGVuZ3RoLHM9d25bZV07cj1zP3Moe3ZhbHVlOmEsdmFsdWVzVG9Db252ZXJ0OnhuLHByb3BlcnRpZXNUb0NvbnZlcnQ6U24saXNSdGw6ITAsYmdJbWdEaXJlY3Rpb25SZWdleDpPbixiZ1Bvc0RpcmVjdGlvblJlZ2V4Ol9ufSk6eG5bYV18fGE7aWYobClyZXR1cm4gcitcIiAhaW1wb3J0YW50XCI7cmV0dXJuIHJ9KG8sdCk7cmV0dXJue2tleTpvLHZhbHVlOml9fXZhciBBbj1cIi1tcy1cIixUbj1cIi1tb3otXCIsRW49XCItd2Via2l0LVwiLGpuPVwiY29tbVwiLEluPVwicnVsZVwiLExuPVwiZGVjbFwiLERuPVwiQGtleWZyYW1lc1wiLE5uPU1hdGguYWJzLFJuPVN0cmluZy5mcm9tQ2hhckNvZGUsQm49T2JqZWN0LmFzc2lnbjtmdW5jdGlvbiBVbihlKXtyZXR1cm4gZS50cmltKCl9ZnVuY3Rpb24gRm4oZSx0KXtyZXR1cm4oZT10LmV4ZWMoZSkpP2VbMF06ZX1mdW5jdGlvbiBNbihlLHQsbil7cmV0dXJuIGUucmVwbGFjZSh0LG4pfWZ1bmN0aW9uIHpuKGUsdCl7cmV0dXJuIGUuaW5kZXhPZih0KX1mdW5jdGlvbiBIbihlLHQpe3JldHVybiAwfGUuY2hhckNvZGVBdCh0KX1mdW5jdGlvbiBWbihlLHQsbil7cmV0dXJuIGUuc2xpY2UodCxuKX1mdW5jdGlvbiBXbihlKXtyZXR1cm4gZS5sZW5ndGh9ZnVuY3Rpb24gR24oZSl7cmV0dXJuIGUubGVuZ3RofWZ1bmN0aW9uICRuKGUsdCl7cmV0dXJuIHQucHVzaChlKSxlfWZ1bmN0aW9uIEtuKGUsdCl7Zm9yKHZhciBuPVwiXCIscj1HbihlKSxvPTA7bzxyO28rKyluKz10KGVbb10sbyxlLHQpfHxcIlwiO3JldHVybiBufWZ1bmN0aW9uIHFuKGUsdCxuLHIpe3N3aXRjaChlLnR5cGUpe2Nhc2VcIkBpbXBvcnRcIjpjYXNlIExuOnJldHVybiBlLnJldHVybj1lLnJldHVybnx8ZS52YWx1ZTtjYXNlIGpuOnJldHVyblwiXCI7Y2FzZSBEbjpyZXR1cm4gZS5yZXR1cm49ZS52YWx1ZStcIntcIitLbihlLmNoaWxkcmVuLHIpK1wifVwiO2Nhc2UgSW46ZS52YWx1ZT1lLnByb3BzLmpvaW4oXCIsXCIpfXJldHVybiBXbihuPUtuKGUuY2hpbGRyZW4scikpP2UucmV0dXJuPWUudmFsdWUrXCJ7XCIrbitcIn1cIjpcIlwifXZhciBRbj0xLFhuPTEsWW49MCxabj0wLEpuPTAsZXI9XCJcIjtmdW5jdGlvbiB0cihlLHQsbixyLG8saSxhKXtyZXR1cm57dmFsdWU6ZSxyb290OnQscGFyZW50Om4sdHlwZTpyLHByb3BzOm8sY2hpbGRyZW46aSxsaW5lOlFuLGNvbHVtbjpYbixsZW5ndGg6YSxyZXR1cm46XCJcIn19ZnVuY3Rpb24gbnIoZSx0KXtyZXR1cm4gQm4odHIoXCJcIixudWxsLG51bGwsXCJcIixudWxsLG51bGwsMCksZSx7bGVuZ3RoOi1lLmxlbmd0aH0sdCl9ZnVuY3Rpb24gcnIoKXtyZXR1cm4gSm49Wm4+MD9IbihlciwtLVpuKTowLFhuLS0sMTA9PT1KbiYmKFhuPTEsUW4tLSksSm59ZnVuY3Rpb24gb3IoKXtyZXR1cm4gSm49Wm48WW4/SG4oZXIsWm4rKyk6MCxYbisrLDEwPT09Sm4mJihYbj0xLFFuKyspLEpufWZ1bmN0aW9uIGlyKCl7cmV0dXJuIEhuKGVyLFpuKX1mdW5jdGlvbiBhcigpe3JldHVybiBabn1mdW5jdGlvbiBscihlLHQpe3JldHVybiBWbihlcixlLHQpfWZ1bmN0aW9uIHNyKGUpe3N3aXRjaChlKXtjYXNlIDA6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiA1O2Nhc2UgMzM6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgNDc6Y2FzZSA2MjpjYXNlIDY0OmNhc2UgMTI2OmNhc2UgNTk6Y2FzZSAxMjM6Y2FzZSAxMjU6cmV0dXJuIDQ7Y2FzZSA1ODpyZXR1cm4gMztjYXNlIDM0OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDkxOnJldHVybiAyO2Nhc2UgNDE6Y2FzZSA5MzpyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBjcihlKXtyZXR1cm4gUW49WG49MSxZbj1Xbihlcj1lKSxabj0wLFtdfWZ1bmN0aW9uIHVyKGUpe3JldHVybiBlcj1cIlwiLGV9ZnVuY3Rpb24gZHIoZSl7cmV0dXJuIFVuKGxyKFpuLTEsZ3IoOTE9PT1lP2UrMjo0MD09PWU/ZSsxOmUpKSl9ZnVuY3Rpb24gZnIoZSl7Zm9yKDsoSm49aXIoKSkmJkpuPDMzOylvcigpO3JldHVybiBzcihlKT4yfHxzcihKbik+Mz9cIlwiOlwiIFwifWZ1bmN0aW9uIHByKGUsdCl7Zm9yKDstLXQmJm9yKCkmJiEoSm48NDh8fEpuPjEwMnx8Sm4+NTcmJkpuPDY1fHxKbj43MCYmSm48OTcpOyk7cmV0dXJuIGxyKGUsYXIoKSsodDw2JiYzMj09aXIoKSYmMzI9PW9yKCkpKX1mdW5jdGlvbiBncihlKXtmb3IoO29yKCk7KXN3aXRjaChKbil7Y2FzZSBlOnJldHVybiBabjtjYXNlIDM0OmNhc2UgMzk6MzQhPT1lJiYzOSE9PWUmJmdyKEpuKTticmVhaztjYXNlIDQwOjQxPT09ZSYmZ3IoZSk7YnJlYWs7Y2FzZSA5MjpvcigpfXJldHVybiBabn1mdW5jdGlvbiBtcihlLHQpe2Zvcig7b3IoKSYmZStKbiE9PTU3JiYoZStKbiE9PTg0fHw0NyE9PWlyKCkpOyk7cmV0dXJuXCIvKlwiK2xyKHQsWm4tMSkrXCIqXCIrUm4oNDc9PT1lP2U6b3IoKSl9ZnVuY3Rpb24gaHIoZSl7Zm9yKDshc3IoaXIoKSk7KW9yKCk7cmV0dXJuIGxyKGUsWm4pfWZ1bmN0aW9uIGJyKGUpe3JldHVybiB1cih5cihcIlwiLG51bGwsbnVsbCxudWxsLFtcIlwiXSxlPWNyKGUpLDAsWzBdLGUpKX1mdW5jdGlvbiB5cihlLHQsbixyLG8saSxhLGwscyl7Zm9yKHZhciBjPTAsdT0wLGQ9YSxmPTAscD0wLGc9MCxtPTEsaD0xLGI9MSx5PTAsdj1cIlwiLHc9byxTPWksUD1yLHg9djtoOylzd2l0Y2goZz15LHk9b3IoKSl7Y2FzZSA0MDppZigxMDghPWcmJjU4PT14LmNoYXJDb2RlQXQoZC0xKSl7LTEhPXpuKHgrPU1uKGRyKHkpLFwiJlwiLFwiJlxcZlwiKSxcIiZcXGZcIikmJihiPS0xKTticmVha31jYXNlIDM0OmNhc2UgMzk6Y2FzZSA5MTp4Kz1kcih5KTticmVhaztjYXNlIDk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6eCs9ZnIoZyk7YnJlYWs7Y2FzZSA5Mjp4Kz1wcihhcigpLTEsNyk7Y29udGludWU7Y2FzZSA0Nzpzd2l0Y2goaXIoKSl7Y2FzZSA0MjpjYXNlIDQ3OiRuKHdyKG1yKG9yKCksYXIoKSksdCxuKSxzKTticmVhaztkZWZhdWx0OngrPVwiL1wifWJyZWFrO2Nhc2UgMTIzKm06bFtjKytdPVduKHgpKmI7Y2FzZSAxMjUqbTpjYXNlIDU5OmNhc2UgMDpzd2l0Y2goeSl7Y2FzZSAwOmNhc2UgMTI1Omg9MDtjYXNlIDU5K3U6cD4wJiZXbih4KS1kJiYkbihwPjMyP1NyKHgrXCI7XCIscixuLGQtMSk6U3IoTW4oeCxcIiBcIixcIlwiKStcIjtcIixyLG4sZC0yKSxzKTticmVhaztjYXNlIDU5OngrPVwiO1wiO2RlZmF1bHQ6aWYoJG4oUD12cih4LHQsbixjLHUsbyxsLHYsdz1bXSxTPVtdLGQpLGkpLDEyMz09PXkpaWYoMD09PXUpeXIoeCx0LFAsUCx3LGksZCxsLFMpO2Vsc2Ugc3dpdGNoKGYpe2Nhc2UgMTAwOmNhc2UgMTA5OmNhc2UgMTE1OnlyKGUsUCxQLHImJiRuKHZyKGUsUCxQLDAsMCxvLGwsdixvLHc9W10sZCksUyksbyxTLGQsbCxyP3c6Uyk7YnJlYWs7ZGVmYXVsdDp5cih4LFAsUCxQLFtcIlwiXSxTLDAsbCxTKX19Yz11PXA9MCxtPWI9MSx2PXg9XCJcIixkPWE7YnJlYWs7Y2FzZSA1ODpkPTErV24oeCkscD1nO2RlZmF1bHQ6aWYobTwxKWlmKDEyMz09eSktLW07ZWxzZSBpZigxMjU9PXkmJjA9PW0rKyYmMTI1PT1ycigpKWNvbnRpbnVlO3N3aXRjaCh4Kz1Sbih5KSx5Km0pe2Nhc2UgMzg6Yj11PjA/MTooeCs9XCJcXGZcIiwtMSk7YnJlYWs7Y2FzZSA0NDpsW2MrK109KFduKHgpLTEpKmIsYj0xO2JyZWFrO2Nhc2UgNjQ6NDU9PT1pcigpJiYoeCs9ZHIob3IoKSkpLGY9aXIoKSx1PWQ9V24odj14Kz1ocihhcigpKSkseSsrO2JyZWFrO2Nhc2UgNDU6NDU9PT1nJiYyPT1Xbih4KSYmKG09MCl9fXJldHVybiBpfWZ1bmN0aW9uIHZyKGUsdCxuLHIsbyxpLGEsbCxzLGMsdSl7Zm9yKHZhciBkPW8tMSxmPTA9PT1vP2k6W1wiXCJdLHA9R24oZiksZz0wLG09MCxoPTA7ZzxyOysrZylmb3IodmFyIGI9MCx5PVZuKGUsZCsxLGQ9Tm4obT1hW2ddKSksdj1lO2I8cDsrK2IpKHY9VW4obT4wP2ZbYl0rXCIgXCIreTpNbih5LC8mXFxmL2csZltiXSkpKSYmKHNbaCsrXT12KTtyZXR1cm4gdHIoZSx0LG4sMD09PW8/SW46bCxzLGMsdSl9ZnVuY3Rpb24gd3IoZSx0LG4pe3JldHVybiB0cihlLHQsbixqbixSbihKbiksVm4oZSwyLC0yKSwwKX1mdW5jdGlvbiBTcihlLHQsbixyKXtyZXR1cm4gdHIoZSx0LG4sTG4sVm4oZSwwLHIpLFZuKGUscisxLC0xKSxyKX1mdW5jdGlvbiBQcihlLHQsbil7c3dpdGNoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKCgodDw8Ml5IbihlLDApKTw8Ml5IbihlLDEpKTw8Ml5IbihlLDIpKTw8Ml5IbihlLDMpfShlLHQpKXtjYXNlIDUxMDM6cmV0dXJuIEVuK1wicHJpbnQtXCIrZStlO2Nhc2UgNTczNzpjYXNlIDQyMDE6Y2FzZSAzMTc3OmNhc2UgMzQzMzpjYXNlIDE2NDE6Y2FzZSA0NDU3OmNhc2UgMjkyMTpjYXNlIDU1NzI6Y2FzZSA2MzU2OmNhc2UgNTg0NDpjYXNlIDMxOTE6Y2FzZSA2NjQ1OmNhc2UgMzAwNTpjYXNlIDYzOTE6Y2FzZSA1ODc5OmNhc2UgNTYyMzpjYXNlIDYxMzU6Y2FzZSA0NTk5OmNhc2UgNDg1NTpjYXNlIDQyMTU6Y2FzZSA2Mzg5OmNhc2UgNTEwOTpjYXNlIDUzNjU6Y2FzZSA1NjIxOmNhc2UgMzgyOTpyZXR1cm4gRW4rZStlO2Nhc2UgNTM0OTpjYXNlIDQyNDY6Y2FzZSA0ODEwOmNhc2UgNjk2ODpjYXNlIDI3NTY6cmV0dXJuIEVuK2UrVG4rZStBbitlK2U7Y2FzZSA2ODI4OmNhc2UgNDI2ODpyZXR1cm4gRW4rZStBbitlK2U7Y2FzZSA2MTY1OnJldHVybiBFbitlK0FuK1wiZmxleC1cIitlK2U7Y2FzZSA1MTg3OnJldHVybiBFbitlK01uKGUsLyhcXHcrKS4rKDpbXl0rKS8sXCItd2Via2l0LWJveC0kMSQyLW1zLWZsZXgtJDEkMlwiKStlO2Nhc2UgNTQ0MzpyZXR1cm4gRW4rZStBbitcImZsZXgtaXRlbS1cIitNbihlLC9mbGV4LXwtc2VsZi9nLFwiXCIpKyhGbihlLC9mbGV4LXxiYXNlbGluZS8pP1wiXCI6QW4rXCJncmlkLXJvdy1cIitNbihlLC9mbGV4LXwtc2VsZi9nLFwiXCIpKStlO2Nhc2UgNDY3NTpyZXR1cm4gRW4rZStBbitcImZsZXgtbGluZS1wYWNrXCIrTW4oZSwvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi9nLFwiXCIpK2U7Y2FzZSA1NTQ4OnJldHVybiBFbitlK0FuK01uKGUsXCJzaHJpbmtcIixcIm5lZ2F0aXZlXCIpK2U7Y2FzZSA1MjkyOnJldHVybiBFbitlK0FuK01uKGUsXCJiYXNpc1wiLFwicHJlZmVycmVkLXNpemVcIikrZTtjYXNlIDYwNjA6cmV0dXJuIEVuK1wiYm94LVwiK01uKGUsXCItZ3Jvd1wiLFwiXCIpK0VuK2UrQW4rTW4oZSxcImdyb3dcIixcInBvc2l0aXZlXCIpK2U7Y2FzZSA0NTU0OnJldHVybiBFbitNbihlLC8oW14tXSkodHJhbnNmb3JtKS9nLFwiJDEtd2Via2l0LSQyXCIpK2U7Y2FzZSA2MTg3OnJldHVybiBNbihNbihNbihlLC8oem9vbS18Z3JhYikvLEVuK1wiJDFcIiksLyhpbWFnZS1zZXQpLyxFbitcIiQxXCIpLGUsXCJcIikrZTtjYXNlIDU0OTU6Y2FzZSAzOTU5OnJldHVybiBNbihlLC8oaW1hZ2Utc2V0XFwoW15dKikvLEVuK1wiJDEkYCQxXCIpO2Nhc2UgNDk2ODpyZXR1cm4gTW4oTW4oZSwvKC4rOikoZmxleC0pPyguKikvLFwiLXdlYmtpdC1ib3gtcGFjazokMy1tcy1mbGV4LXBhY2s6JDNcIiksL3MuKy1iW147XSsvLFwianVzdGlmeVwiKStFbitlK2U7Y2FzZSA0MjAwOmlmKCFGbihlLC9mbGV4LXxiYXNlbGluZS8pKXJldHVybiBBbitcImdyaWQtY29sdW1uLWFsaWduXCIrVm4oZSx0KStlO2JyZWFrO2Nhc2UgMjU5MjpjYXNlIDMzNjA6cmV0dXJuIEFuK01uKGUsXCJ0ZW1wbGF0ZS1cIixcIlwiKStlO2Nhc2UgNDM4NDpjYXNlIDM2MTY6cmV0dXJuIG4mJm4uc29tZSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdD1uLEZuKGUucHJvcHMsL2dyaWQtXFx3Ky1lbmQvKX0pKT9+em4oZSsobj1uW3RdLnZhbHVlKSxcInNwYW5cIik/ZTpBbitNbihlLFwiLXN0YXJ0XCIsXCJcIikrZStBbitcImdyaWQtcm93LXNwYW46XCIrKH56bihuLFwic3BhblwiKT9GbihuLC9cXGQrLyk6K0ZuKG4sL1xcZCsvKS0rRm4oZSwvXFxkKy8pKStcIjtcIjpBbitNbihlLFwiLXN0YXJ0XCIsXCJcIikrZTtjYXNlIDQ4OTY6Y2FzZSA0MTI4OnJldHVybiBuJiZuLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBGbihlLnByb3BzLC9ncmlkLVxcdystc3RhcnQvKX0pKT9lOkFuK01uKE1uKGUsXCItZW5kXCIsXCItc3BhblwiKSxcInNwYW4gXCIsXCJcIikrZTtjYXNlIDQwOTU6Y2FzZSAzNTgzOmNhc2UgNDA2ODpjYXNlIDI1MzI6cmV0dXJuIE1uKGUsLyguKyktaW5saW5lKC4rKS8sRW4rXCIkMSQyXCIpK2U7Y2FzZSA4MTE2OmNhc2UgNzA1OTpjYXNlIDU3NTM6Y2FzZSA1NTM1OmNhc2UgNTQ0NTpjYXNlIDU3MDE6Y2FzZSA0OTMzOmNhc2UgNDY3NzpjYXNlIDU1MzM6Y2FzZSA1Nzg5OmNhc2UgNTAyMTpjYXNlIDQ3NjU6aWYoV24oZSktMS10PjYpc3dpdGNoKEhuKGUsdCsxKSl7Y2FzZSAxMDk6aWYoNDUhPT1IbihlLHQrNCkpYnJlYWs7Y2FzZSAxMDI6cmV0dXJuIE1uKGUsLyguKzopKC4rKS0oW15dKykvLFwiJDEtd2Via2l0LSQyLSQzJDFcIitUbisoMTA4PT1IbihlLHQrMyk/XCIkM1wiOlwiJDItJDNcIikpK2U7Y2FzZSAxMTU6cmV0dXJufnpuKGUsXCJzdHJldGNoXCIpP1ByKE1uKGUsXCJzdHJldGNoXCIsXCJmaWxsLWF2YWlsYWJsZVwiKSx0LG4pK2U6ZX1icmVhaztjYXNlIDUxNTI6Y2FzZSA1OTIwOnJldHVybiBNbihlLC8oLis/KTooXFxkKykoXFxzKlxcL1xccyooc3Bhbik/XFxzKihcXGQrKSk/KC4qKS8sKGZ1bmN0aW9uKHQsbixyLG8saSxhLGwpe3JldHVybiBBbituK1wiOlwiK3IrbCsobz9BbituK1wiLXNwYW46XCIrKGk/YTorYS0rcikrbDpcIlwiKStlfSkpO2Nhc2UgNDk0OTppZigxMTUhPT1IbihlLHQrMSkpYnJlYWs7Y2FzZSA2NDQ0OnN3aXRjaChIbihlLFduKGUpLTMtKH56bihlLFwiIWltcG9ydGFudFwiKSYmMTApKSl7Y2FzZSAxMDc6cmV0dXJuIE1uKGUsXCI6XCIsXCI6XCIrRW4pK2U7Y2FzZSAxMDE6cmV0dXJuIE1uKGUsLyguKzopKFteOyFdKykoO3whLispPy8sXCIkMVwiK0VuKyg0NT09PUhuKGUsMTQpP1wiaW5saW5lLVwiOlwiXCIpK1wiYm94JDMkMVwiK0VuK1wiJDIkMyQxXCIrQW4rXCIkMmJveCQzXCIpK2U7Y2FzZSAxMDU6cmV0dXJuIE1uKGUsXCI6XCIsXCI6XCIrQW4pK2V9YnJlYWs7Y2FzZSA1OTM2OnN3aXRjaChIbihlLHQrMTEpKXtjYXNlIDExNDpyZXR1cm4gRW4rZStBbitNbihlLC9bc3ZoXVxcdystW3RibHJdezJ9LyxcInRiXCIpK2U7Y2FzZSAxMDg6cmV0dXJuIEVuK2UrQW4rTW4oZSwvW3N2aF1cXHcrLVt0YmxyXXsyfS8sXCJ0Yi1ybFwiKStlO2Nhc2UgNDU6cmV0dXJuIEVuK2UrQW4rTW4oZSwvW3N2aF1cXHcrLVt0YmxyXXsyfS8sXCJsclwiKStlfWNhc2UgMjkwMzpyZXR1cm4gRW4rZStBbitlK2U7Y2FzZSA1NzE5OmNhc2UgMjY0NzpjYXNlIDIxMzU6Y2FzZSAzOTI3OmNhc2UgMjM5MTpyZXR1cm4gTW4oZSxcInNjcm9sbC1cIixcInNjcm9sbC1zbmFwLVwiKStlfXJldHVybiBlfWZ1bmN0aW9uIHhyKGUpe3ZhciB0PUduKGUpO3JldHVybiBmdW5jdGlvbihuLHIsbyxpKXtmb3IodmFyIGE9XCJcIixsPTA7bDx0O2wrKylhKz1lW2xdKG4scixvLGkpfHxcIlwiO3JldHVybiBhfX1mdW5jdGlvbiBPcihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dC5yb290fHwodD10LnJldHVybikmJmUodCl9fWZ1bmN0aW9uIF9yKGUsdCxuLHIpe2lmKGUubGVuZ3RoPi0xJiYhZS5yZXR1cm4pc3dpdGNoKGUudHlwZSl7Y2FzZSBMbjpyZXR1cm4gdm9pZChlLnJldHVybj1QcihlLnZhbHVlLGUubGVuZ3RoLG4pKTtjYXNlIERuOnJldHVybiBLbihbbnIoZSx7dmFsdWU6TW4oZS52YWx1ZSxcIkBcIixcIkBcIitFbil9KV0scik7Y2FzZSBJbjppZihlLmxlbmd0aClyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAodCkuam9pbihcIlwiKX0oZS5wcm9wcywoZnVuY3Rpb24odCl7c3dpdGNoKEZuKHQsLyg6OnBsYWNcXHcrfDpyZWFkLVxcdyspLykpe2Nhc2VcIjpyZWFkLW9ubHlcIjpjYXNlXCI6cmVhZC13cml0ZVwiOnJldHVybiBLbihbbnIoZSx7cHJvcHM6W01uKHQsLzoocmVhZC1cXHcrKS8sXCI6LW1vei0kMVwiKV19KV0scik7Y2FzZVwiOjpwbGFjZWhvbGRlclwiOnJldHVybiBLbihbbnIoZSx7cHJvcHM6W01uKHQsLzoocGxhY1xcdyspLyxcIjotd2Via2l0LWlucHV0LSQxXCIpXX0pLG5yKGUse3Byb3BzOltNbih0LC86KHBsYWNcXHcrKS8sXCI6LW1vei0kMVwiKV19KSxucihlLHtwcm9wczpbTW4odCwvOihwbGFjXFx3KykvLEFuK1wiaW5wdXQtJDFcIildfSldLHIpfXJldHVyblwiXCJ9KSl9fXZhciBDcj0vW0EtWl0vZyxrcj0vXm1zLS8sQXI9e307ZnVuY3Rpb24gVHIoZSl7cmV0dXJuXCItXCIrZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIEVyKGUpe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChBcixlKSlyZXR1cm4gQXJbZV07aWYoXCItLVwiPT09ZS5zdWJzdHIoMCwyKSlyZXR1cm4gZTt2YXIgdD1lLnJlcGxhY2UoQ3IsVHIpO3JldHVybiBBcltlXT1rci50ZXN0KHQpP1wiLVwiK3Q6dH1mdW5jdGlvbiBqcihlKXtyZXR1cm5cIiZcIj09PWUuY2hhckF0KDApP2Uuc2xpY2UoMSk6ZX1mdW5jdGlvbiBJcihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gTHIoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gTHIoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIExyKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIERyPS8sKCAqW14gJl0pL2c7ZnVuY3Rpb24gTnIoZSl7dmFyIHQ9W107cmV0dXJuIEtuKGJyKGUpLHhyKFtfcixxbixPcigoZnVuY3Rpb24oZSl7cmV0dXJuIHQucHVzaChlKX0pKV0pKSx0fWZ1bmN0aW9uIFJyKGUpe3ZhciB0PWUuY2xhc3NOYW1lLG49ZS5tZWRpYSxyPWUucHNldWRvLG89ZS5zdXBwb3J0LGk9ZS5wcm9wZXJ0eSxhPWUucnRsQ2xhc3NOYW1lLGw9ZS5ydGxQcm9wZXJ0eSxzPWUucnRsVmFsdWUsYz1lLnZhbHVlLHU9XCIuXCIuY29uY2F0KHQpLGQ9XCJ7IFwiLmNvbmNhdChFcihpKSxcIjogXCIpLmNvbmNhdChjLFwiOyB9XCIpLGY9bnVsbCxwPW51bGw7bCYmYSYmKGY9XCIuXCIuY29uY2F0KGEpLHA9XCJ7IFwiLmNvbmNhdChFcihsKSxcIjogXCIpLmNvbmNhdChzLFwiOyB9XCIpKTt2YXIgZz1cIlwiO2lmKDA9PT1yLmluZGV4T2YoXCI6Z2xvYmFsKFwiKSl7dmFyIG09SXIoL2dsb2JhbFxcKCguKylcXCkoLispPy8uZXhlYyhyKSwzKSxoPW1bMV0sYj1tWzJdLHk9anIoKHZvaWQgMD09PWI/XCJcIjpiKS50cmltKCkpLHY9XCJcIi5jb25jYXQodSkuY29uY2F0KHksXCIgXCIpLmNvbmNhdChkKSx3PWw/XCJcIi5jb25jYXQoZikuY29uY2F0KHksXCIgXCIpLmNvbmNhdChwKTpcIlwiO2c9XCJcIi5jb25jYXQoaCxcIiB7IFwiKS5jb25jYXQodixcIjsgXCIpLmNvbmNhdCh3LFwiIH1cIil9ZWxzZXt2YXIgUz1cIiZcIitqcihyLnJlcGxhY2UoRHIsXCIsJiQxXCIpKTtnPVwiXCIuY29uY2F0KHUsXCJ7XCIpLmNvbmNhdChTLFwiIFwiKS5jb25jYXQoZCxcIn07XCIpLGwmJihnPVwiXCIuY29uY2F0KGcsXCI7IFwiKS5jb25jYXQoZikuY29uY2F0KFMsXCIgXCIpLmNvbmNhdChwLFwiO1wiKSl9cmV0dXJuIG4mJihnPVwiQG1lZGlhIFwiLmNvbmNhdChuLFwiIHsgXCIpLmNvbmNhdChnLFwiIH1cIikpLG8mJihnPVwiQHN1cHBvcnRzIFwiLmNvbmNhdChvLFwiIHsgXCIpLmNvbmNhdChnLFwiIH1cIikpLE5yKGcpfWZ1bmN0aW9uIEJyKGUpe3ZhciB0PVwiXCI7Zm9yKHZhciBuIGluIGUpe3ZhciByPWVbbl07XCJzdHJpbmdcIiE9dHlwZW9mIHImJlwibnVtYmVyXCIhPXR5cGVvZiByfHwodCs9RXIobikrXCI6XCIrcitcIjtcIil9cmV0dXJuIHR9ZnVuY3Rpb24gVXIoZSl7dmFyIHQ9XCJcIjtmb3IodmFyIG4gaW4gZSl0Kz1cIlwiLmNvbmNhdChuLFwie1wiKS5jb25jYXQoQnIoZVtuXSksXCJ9XCIpO3JldHVybiB0fWZ1bmN0aW9uIEZyKGUsdCl7dmFyIG49XCJAa2V5ZnJhbWVzIFwiLmNvbmNhdChlLFwiIHtcIikuY29uY2F0KHQsXCJ9XCIpLHI9W107cmV0dXJuIEtuKGJyKG4pLHhyKFtfcixxbixPcigoZnVuY3Rpb24oZSl7cmV0dXJuIHIucHVzaChlKX0pKV0pKSxyfWZ1bmN0aW9uIE1yKGUsdCl7cmV0dXJuIDA9PT1lLmxlbmd0aD90OlwiXCIuY29uY2F0KGUsXCIgYW5kIFwiKS5jb25jYXQodCl9ZnVuY3Rpb24genIoZSl7cmV0dXJuXCJAbWVkaWFcIj09PWUuc3Vic3RyKDAsNil9dmFyIEhyPS9eKDp8XFxbfD58JikvO2Z1bmN0aW9uIFZyKGUpe3JldHVybiBIci50ZXN0KGUpfWZ1bmN0aW9uIFdyKGUpe3JldHVyblwiQHN1cHBvcnRzXCI9PT1lLnN1YnN0cigwLDkpfWZ1bmN0aW9uIEdyKGUpe3JldHVybiBHcj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxHcihlKX1mdW5jdGlvbiAkcihlKXtyZXR1cm4gbnVsbCE9ZSYmXCJvYmplY3RcIj09PUdyKGUpJiYhMT09PUFycmF5LmlzQXJyYXkoZSl9dmFyIEtyPXtcInVzLXdcIjpcIndcIixcInVzLXZcIjpcImlcIixuazpcImxcIixzaTpcInZcIixjdTpcImZcIix2ZTpcImhcIix0aTpcImFcIn07ZnVuY3Rpb24gcXIoZSx0LG4pe2lmKHR8fG4pcmV0dXJuXCJ0XCI7dmFyIHI9ZS50cmltKCk7cmV0dXJuIDU4PT09ci5jaGFyQ29kZUF0KDApJiYoS3Jbci5zbGljZSg0LDgpXXx8S3Jbci5zbGljZSgzLDUpXSl8fFwiZFwifWZ1bmN0aW9uIFFyKGUpe3ZhciB0PWUubWVkaWEsbj1lLnByb3BlcnR5LHI9ZS5wc2V1ZG8sbz1lLnN1cHBvcnQsaT1lLnZhbHVlLGE9Y24ocit0K28rbitpLnRyaW0oKSk7cmV0dXJuIG9uK2F9ZnVuY3Rpb24gWHIoZSx0LG4scil7dmFyIG89Y24oZSt0K24rciksaT1vLmNoYXJDb2RlQXQoMCk7cmV0dXJuIGk+PTQ4JiZpPD01Nz9TdHJpbmcuZnJvbUNoYXJDb2RlKGkrMTcpK28uc3Vic3RyKDEpOm99ZnVuY3Rpb24gWXIoZSx0KXt2YXIgbj1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKCFuKXtpZihBcnJheS5pc0FycmF5KGUpfHwobj1KcihlKSl8fHQmJmUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aCl7biYmKGU9bik7dmFyIHI9MCxvPWZ1bmN0aW9uKCl7fTtyZXR1cm57czpvLG46ZnVuY3Rpb24oKXtyZXR1cm4gcj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbcisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjpvfX10aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9dmFyIGksYT0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7bj1uLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1uLm5leHQoKTtyZXR1cm4gYT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtsPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgaX19fX1mdW5jdGlvbiBacihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxKcihlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gSnIoZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gZW8oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7cmV0dXJuXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uP0FycmF5LmZyb20oZSk6XCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2VvKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBlbyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHRvKGUsdCxuLHIpe2VbdF09cj9bbixyXTpufWZ1bmN0aW9uIG5vKGUsdCxuLHIpe2VbdF09ZVt0XXx8W10sZVt0XS5wdXNoKG4pLHImJmVbdF0ucHVzaChyKX1mdW5jdGlvbiBybyhlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCJcIixuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpcIlwiLHI9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOlwiXCIsbz1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XT9hcmd1bWVudHNbNF06e30saT1hcmd1bWVudHMubGVuZ3RoPjUmJnZvaWQgMCE9PWFyZ3VtZW50c1s1XT9hcmd1bWVudHNbNV06e30sYT1hcmd1bWVudHMubGVuZ3RoPjY/YXJndW1lbnRzWzZdOnZvaWQgMDtmb3IodmFyIGwgaW4gZSlpZighc24uaGFzT3duUHJvcGVydHkobCkpe3ZhciBzPWVbbF07aWYobnVsbCE9cylpZihcInN0cmluZ1wiPT10eXBlb2Ygc3x8XCJudW1iZXJcIj09dHlwZW9mIHMpe3ZhciBjPVhyKHQsbixyLGwpLHU9UXIoe21lZGlhOm4sdmFsdWU6cy50b1N0cmluZygpLHN1cHBvcnQ6cixwc2V1ZG86dCxwcm9wZXJ0eTpsfSksZD1hJiZ7a2V5OmwsdmFsdWU6YX18fGtuKGwscyksZj1kLmtleSE9PWx8fGQudmFsdWUhPT1zLHA9Zj9Rcih7dmFsdWU6ZC52YWx1ZS50b1N0cmluZygpLHByb3BlcnR5OmQua2V5LHBzZXVkbzp0LG1lZGlhOm4sc3VwcG9ydDpyfSk6dm9pZCAwLGc9Zj97cnRsQ2xhc3NOYW1lOnAscnRsUHJvcGVydHk6ZC5rZXkscnRsVmFsdWU6ZC52YWx1ZX06dm9pZCAwLG09cXIodCxuLHIpLGg9UnIoT2JqZWN0LmFzc2lnbih7Y2xhc3NOYW1lOnUsbWVkaWE6bixwc2V1ZG86dCxwcm9wZXJ0eTpsLHN1cHBvcnQ6cix2YWx1ZTpzfSxnKSksYj1acihoLDIpLHk9YlswXSx2PWJbMV07dG8obyxjLHUscCksbm8oaSxtLHksdil9ZWxzZSBpZihcImFuaW1hdGlvbk5hbWVcIj09PWwpe3ZhciB3LFM9QXJyYXkuaXNBcnJheShzKT9zOltzXSxQPVtdLHg9W10sTz1ZcihTKTt0cnl7Zm9yKE8ucygpOyEodz1PLm4oKSkuZG9uZTspe3ZhciBfPXcudmFsdWUsQz1VcihfKSxrPVVyKENuKF8pKSxBPW9uK2NuKEMpLFQ9dm9pZCAwLEU9RnIoQSxDKSxqPVtdO0M9PT1rP1Q9QTpqPUZyKFQ9b24rY24oayksayk7Zm9yKHZhciBJPTA7STxFLmxlbmd0aDtJKyspbm8oaSxcImtcIixFW0ldLGpbSV0pO1AucHVzaChBKSx4LnB1c2goVCl9fWNhdGNoKE4pe08uZShOKX1maW5hbGx5e08uZigpfXJvKHthbmltYXRpb25OYW1lOlAuam9pbihcIiwgXCIpfSx0LG4scixvLGkseC5qb2luKFwiLCBcIikpfWVsc2UgaWYoJHIocykpaWYoVnIobCkpcm8ocyx0K2pyKGwpLG4scixvLGkpO2Vsc2UgaWYoenIobCkpe3ZhciBMPU1yKG4sbC5zbGljZSg2KS50cmltKCkpO3JvKHMsdCxMLHIsbyxpKX1lbHNlIGlmKFdyKGwpKXt2YXIgRD1NcihyLGwuc2xpY2UoOSkudHJpbSgpKTtybyhzLHQsbixELG8saSl9ZWxzZSAwfXJldHVybltvLGldfWZ1bmN0aW9uIG9vKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBpbyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBpbyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gaW8oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBhbyhlKXt2YXIgdD17fSxuPXt9LHI9ZnVuY3Rpb24ocil7dmFyIG89b28ocm8oZVtyXSksMiksaT1vWzBdLGE9b1sxXTt0W3JdPWksT2JqZWN0LmtleXMoYSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bltlXT0obltlXXx8W10pLmNvbmNhdChhW2VdKX0pKX07Zm9yKHZhciBvIGluIGUpcihvKTtyZXR1cm5bdCxuXX1mdW5jdGlvbiBsbyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gc28oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gc28oZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHNvKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIGNvPVtcImRcIixcImxcIixcInZcIixcIndcIixcImZcIixcImlcIixcImhcIixcImFcIixcImtcIixcInRcIl07ZnVuY3Rpb24gdW8oZSx0LG4pe2lmKCFuLnN0eWxlRWxlbWVudHNbZV0pe2Zvcih2YXIgcj1jby5pbmRleE9mKGUpKzEsbz1udWxsO3I8Y28ubGVuZ3RoO3IrKyl7dmFyIGk9bi5zdHlsZUVsZW1lbnRzW2NvW3JdXTtpZihpKXtvPWk7YnJlYWt9fXZhciBhPXQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO2EuZGF0YXNldC5tYWtlU3R5bGVzQnVja2V0PWUsbi5zdHlsZUVsZW1lbnRzW2VdPWEsdC5oZWFkLmluc2VydEJlZm9yZShhLG8pfXJldHVybiBuLnN0eWxlRWxlbWVudHNbZV0uc2hlZXR9dmFyIGZvPTA7ZnVuY3Rpb24gcG8oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50P3ZvaWQgMDpkb2N1bWVudCx0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxuPXQudW5zdGFibGVfZmlsdGVyQ1NTUnVsZSxyPXtpbnNlcnRpb25DYWNoZTp7fSxzdHlsZUVsZW1lbnRzOnt9LGlkOlwiZFwiLmNvbmNhdChmbysrKSxpbnNlcnRDU1NSdWxlczpmdW5jdGlvbih0KXtmb3IodmFyIG8gaW4gdClmb3IodmFyIGk9dFtvXSxhPWUmJnVvKG8sZSxyKSxsPTAscz1pLmxlbmd0aDtsPHM7bCsrKXt2YXIgYz1pW2xdO2lmKCFyLmluc2VydGlvbkNhY2hlW2NdJiYoci5pbnNlcnRpb25DYWNoZVtjXT1vLGEpKXRyeXtuP24oYykmJmEuaW5zZXJ0UnVsZShjLGEuY3NzUnVsZXMubGVuZ3RoKTphLmluc2VydFJ1bGUoYyxhLmNzc1J1bGVzLmxlbmd0aCl9Y2F0Y2godSl7MH19fX07cmV0dXJuIHJ9XCI6KFwiLmNvbmNhdChbXCItbW96LXBsYWNlaG9sZGVyXCIsXCItbW96LWZvY3VzLWlubmVyXCIsXCItbW96LWZvY3VzcmluZ1wiLFwiLW1zLWlucHV0LXBsYWNlaG9sZGVyXCIsXCItbW96LXJlYWQtd3JpdGVcIixcIi1tb3otcmVhZC1vbmx5XCJdLmpvaW4oXCJ8XCIpLFwiKVwiKTt2YXIgZ289by5jcmVhdGVDb250ZXh0KHBvKCkpO2Z1bmN0aW9uIG1vKCl7cmV0dXJuIG8udXNlQ29udGV4dChnbyl9dmFyIGhvPW8uY3JlYXRlQ29udGV4dChcImx0clwiKTtmdW5jdGlvbiBibyhlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD17fSxuPW51bGwscj1udWxsLG89bnVsbCxpPW51bGw7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBsPWEuZGlyLHM9YS5yZW5kZXJlcjtpZihudWxsPT09bil7dmFyIGM9bG8oYW8oZSksMik7bj1jWzBdLHI9Y1sxXX12YXIgdT1cImx0clwiPT09bCxkPXU/cy5pZDpzLmlkK1wiclwiO3JldHVybiB1P251bGw9PT1vJiYobz1mbihuLGwpKTpudWxsPT09aSYmKGk9Zm4obixsKSksdm9pZCAwPT09dFtkXSYmKHMuaW5zZXJ0Q1NTUnVsZXMociksdFtkXT0hMCksdT9vOml9fShlKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1vLnVzZUNvbnRleHQoaG8pLG49bW8oKTtyZXR1cm4gdCh7ZGlyOmUscmVuZGVyZXI6bn0pfX12YXIgeW89W1wiVG9wXCIsXCJSaWdodFwiLFwiQm90dG9tXCIsXCJMZWZ0XCJdO2Z1bmN0aW9uIHZvKGUsdCl7Zm9yKHZhciBuPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkobj4yP24tMjowKSxvPTI7bzxuO28rKylyW28tMl09YXJndW1lbnRzW29dO2Zvcih2YXIgaT1yWzBdLGE9clsxXSxsPXZvaWQgMD09PWE/aTphLHM9clsyXSxjPXZvaWQgMD09PXM/aTpzLHU9clszXSxkPXZvaWQgMD09PXU/bDp1LGY9W2ksbCxjLGRdLHA9e30sZz0wO2c8Zi5sZW5ndGg7Zys9MSlpZihmW2ddfHwwPT09ZltnXSl7dmFyIG09ZSt5b1tnXSt0O3BbbV09ZltnXX1yZXR1cm4gcH1mdW5jdGlvbiB3bygpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiB2by5hcHBseSh2b2lkIDAsW1wiYm9yZGVyXCIsXCJXaWR0aFwiXS5jb25jYXQodCkpfWZ1bmN0aW9uIFNvKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHZvLmFwcGx5KHZvaWQgMCxbXCJib3JkZXJcIixcIlN0eWxlXCJdLmNvbmNhdCh0KSl9ZnVuY3Rpb24gUG8oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gdm8uYXBwbHkodm9pZCAwLFtcImJvcmRlclwiLFwiQ29sb3JcIl0uY29uY2F0KHQpKX12YXIgeG89e2JvcmRlcjpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSx3byhhcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF0pKSwoYXJndW1lbnRzLmxlbmd0aDw9MT92b2lkIDA6YXJndW1lbnRzWzFdKSYmU28oYXJndW1lbnRzLmxlbmd0aDw9MT92b2lkIDA6YXJndW1lbnRzWzFdKSksKGFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXSkmJlBvKGFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXSkpfSxib3JkZXJMZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7Ym9yZGVyTGVmdFdpZHRoOmFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXX0sKGFyZ3VtZW50cy5sZW5ndGg8PTE/dm9pZCAwOmFyZ3VtZW50c1sxXSkmJntib3JkZXJMZWZ0U3R5bGU6YXJndW1lbnRzLmxlbmd0aDw9MT92b2lkIDA6YXJndW1lbnRzWzFdfSksKGFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXSkmJntib3JkZXJMZWZ0Q29sb3I6YXJndW1lbnRzLmxlbmd0aDw9Mj92b2lkIDA6YXJndW1lbnRzWzJdfSl9LGJvcmRlckJvdHRvbTpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe2JvcmRlckJvdHRvbVdpZHRoOmFyZ3VtZW50cy5sZW5ndGg8PTA/dm9pZCAwOmFyZ3VtZW50c1swXX0sKGFyZ3VtZW50cy5sZW5ndGg8PTE/dm9pZCAwOmFyZ3VtZW50c1sxXSkmJntib3JkZXJCb3R0b21TdHlsZTphcmd1bWVudHMubGVuZ3RoPD0xP3ZvaWQgMDphcmd1bWVudHNbMV19KSwoYXJndW1lbnRzLmxlbmd0aDw9Mj92b2lkIDA6YXJndW1lbnRzWzJdKSYme2JvcmRlckJvdHRvbUNvbG9yOmFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXX0pfSxib3JkZXJSaWdodDpmdW5jdGlvbigpe3JldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe2JvcmRlclJpZ2h0V2lkdGg6YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdfSwoYXJndW1lbnRzLmxlbmd0aDw9MT92b2lkIDA6YXJndW1lbnRzWzFdKSYme2JvcmRlclJpZ2h0U3R5bGU6YXJndW1lbnRzLmxlbmd0aDw9MT92b2lkIDA6YXJndW1lbnRzWzFdfSksKGFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXSkmJntib3JkZXJSaWdodENvbG9yOmFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXX0pfSxib3JkZXJUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHtib3JkZXJUb3BXaWR0aDphcmd1bWVudHMubGVuZ3RoPD0wP3ZvaWQgMDphcmd1bWVudHNbMF19LChhcmd1bWVudHMubGVuZ3RoPD0xP3ZvaWQgMDphcmd1bWVudHNbMV0pJiZ7Ym9yZGVyVG9wU3R5bGU6YXJndW1lbnRzLmxlbmd0aDw9MT92b2lkIDA6YXJndW1lbnRzWzFdfSksKGFyZ3VtZW50cy5sZW5ndGg8PTI/dm9pZCAwOmFyZ3VtZW50c1syXSkmJntib3JkZXJUb3BDb2xvcjphcmd1bWVudHMubGVuZ3RoPD0yP3ZvaWQgMDphcmd1bWVudHNbMl19KX0sYm9yZGVyQ29sb3I6UG8sYm9yZGVyU3R5bGU6U28sYm9yZGVyUmFkaXVzOmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTplLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOmUscj1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106dDtyZXR1cm57Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXM6bixib3JkZXJCb3R0b21MZWZ0UmFkaXVzOnIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6dCxib3JkZXJUb3BMZWZ0UmFkaXVzOmV9fSxib3JkZXJXaWR0aDp3byxnYXA6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmU7cmV0dXJue2NvbHVtbkdhcDplLHJvd0dhcDp0fX0sbWFyZ2luOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHZvLmFwcGx5KHZvaWQgMCxbXCJtYXJnaW5cIixcIlwiXS5jb25jYXQodCkpfSxwYWRkaW5nOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHZvLmFwcGx5KHZvaWQgMCxbXCJwYWRkaW5nXCIsXCJcIl0uY29uY2F0KHQpKX0sb3ZlcmZsb3c6ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmU7cmV0dXJue292ZXJmbG93WDplLG92ZXJmbG93WTp0fX19O2Z1bmN0aW9uIE9vKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBfbyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9PbyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0NvKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpPbyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBDbyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGtvPWJvKHtpZnJhbWU6X28oX28oe30seG8uYm9yZGVyKFwiMFwiKSkse30se2NvbG9yOlwiIzAwMDAwMFwiLGZsb2F0OlwibGVmdFwiLHZpc2liaWxpdHk6XCJoaWRkZW5cIixwb3NpdGlvbjpcImFic29sdXRlXCIsd2lkdGg6XCIxcHhcIixoZWlnaHQ6XCIxcHhcIixsZWZ0OlwiLTEwMDAwcHhcIix0b3A6XCItMTAwMDBweFwifSl9KSxBbz1mdW5jdGlvbihlKXt2YXIgdD1QdCgpLmNoYWxsZW5nZVN0YXRlLnJlcE1hcE1ldGFkYXRhLmRmcFVybCxuPWUudXJsLHI9a28oKSxpPW8udXNlUmVmKG51bGwpLGE9bnx8SXQuZGVmYXVsdC5pbnN0YW5jZS5kZnBVcmx8fHQ7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1JdC5kZWZhdWx0Lmluc3RhbmNlLGk9ci5hY3RpdmVGbGF2b3IsYT1yLnRlbGVtZXRyeSxsPWUuY3VycmVudCxzPW5uKCkuZGltZW5zaW9ucyxjPXMudmlldyx1PXMuZmxvdyxkPVJ0KGEse2FjdGl2ZVZpZXc6YyxhY3RpdmVGbG93OnUsYWN0aXZlRmxhdm9yOml9KS5sb2dTZXJ2aWNlRGlhZ0V2ZW50OygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYoYyE9PVR0Lk5vbmUpe3ZhciBlPXQuY3VycmVudCxyPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2Qoe21ldHJpY05hbWU6bixtZXRyaWNWYWx1ZTpyLWV9KX19cmV0dXJuXCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT9lKCk6bnVsbD09bHx8bC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGUpLGZ1bmN0aW9uKCl7bnVsbD09bHx8bC5yZW1vdmVFdmVudExpc3RlbmVyKFwibG9hZFwiLGUpfX0pLFthLGUsaSx0LG4sYyxkLGxdKX0oaSwoMCxvLnVzZVJlZikoKG5ldyBEYXRlKS5nZXRUaW1lKCkpLHJuLklmcmFtZUxvYWREdXJhdGlvbkRGUCksYT8oMCwkZS5qc3gpKFwiaWZyYW1lXCIse3RpdGxlOlwiRGV2aWNlRmluZ2VyUHJpbnRpbmdcIixcImRhdGEtdGVzdGlkXCI6XCJkZXZpY2VGaW5nZXJQcmludGluZ1wiLGNsYXNzTmFtZTpyLmlmcmFtZSxzcmM6YSxyZWY6aX0pOm51bGx9O2Z1bmN0aW9uIFRvKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBFbyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9UbyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2pvKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpUbyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBqbyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIElvPWJvKHtsYXlvdXQ6e3dvcmRXcmFwOlwiYnJlYWstd29yZFwiLHdoaXRlU3BhY2U6XCJwcmUtd3JhcFwiLG92ZXJmbG93WDpcImhpZGRlblwifSxjaGlsZFN0eWxpbmc6e1wiJiAudGV4dC1oZWFkZXJcIjpFbyh7bWFyZ2luVG9wOlwiMS4yNXJlbVwiLG1hcmdpbkJvdHRvbTpcIjEuMjVyZW1cIn0seG8ucGFkZGluZygwKSksXCImIC50ZXh0LWJvZHksICYgcFwiOkVvKHttYXJnaW5Ub3A6XCIxNnB4XCIsbWFyZ2luQm90dG9tOlwiMTJweFwifSx4by5wYWRkaW5nKDApKSxcIiYgLm5vLW1hcmdpblwiOkVvKHt9LHhvLm1hcmdpbigwKSksXCImIC5ib2xkLCAmIHN0cm9uZ1wiOntmb250V2VpZ2h0OlwiYm9sZFwifX0sY2hpbmFQaXBsOnt3aGl0ZVNwYWNlOlwidW5zZXRcIn19KTtmdW5jdGlvbiBMbyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gRG8oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/TG8oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtObyhlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6TG8oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gTm8oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBSbz1ibyh7aWZyYW1lOkRvKERvKHt3aWR0aDpcIjBweFwiLG1pbkhlaWdodDpcIjUwMHB4XCJ9LHhvLmJvcmRlcihcIjBcIikpLHt9LHtPdmVyZmxvd1k6XCJoaWRkZW5cIixkaXNwbGF5OlwiYmxvY2tcIn0seG8ubWFyZ2luKFwiYXV0b1wiKSl9KSxCbz1cIiNlODExMjNcIixVbz0yOCxGbz0xNixNbz0yNCx6bz1cIiNmZmZcIixIbz00NDAsVm89MzM4LFdvPTI0LEdvPTQ0LCRvPVwiMHB4IDJweCA2cHggcmdiYSgwLCAwLCAwLCAwLjIpXCIsS289XCJAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCksIHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IFwiLmNvbmNhdCgzNjYsXCJweClcIikscW89XCIxcHhcIixRbz1cIiMwMDBcIixYbz1cImRhc2hlZFwiLFlvPVwicmdiYSgwLCAwLCAwLCAwLjEpXCIsWm89XCJyZ2JhKDAsIDAsIDAsIDAuMylcIixKbz1cIi00NHB4XCIsZWk9XCItMjRweFwiLHRpPVwiNDhweFwiO2Z1bmN0aW9uIG5pKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiByaShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9uaShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe29pKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpuaShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBvaShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGlpPWJvKHtkZWZhdWx0OnJpKHJpKHJpKHJpKHtoZWlnaHQ6XCJcIi5jb25jYXQoTW8sXCJweFwiKSxtaW5IZWlnaHQ6XCJcIi5jb25jYXQoTW8sXCJweFwiKSx3aWR0aDpcIlwiLmNvbmNhdChNbyxcInB4XCIpLG1pbldpZHRoOlwiXCIuY29uY2F0KE1vLFwicHhcIiksZmxvYXQ6XCJsZWZ0XCIsbWFyZ2luUmlnaHQ6XCIycHhcIixiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSx4by5wYWRkaW5nKDApKSx4by5ib3JkZXJXaWR0aCgwKSkseG8uYm9yZGVyUmFkaXVzKFwiXCIuY29uY2F0KDEyLFwicHhcIikpKSx7fSx7XCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOntmbG9hdDpcInJpZ2h0XCIsbWFyZ2luUmlnaHQ6XCIwcHhcIixtYXJnaW5MZWZ0OlwiMnB4XCJ9LFwiOmhvdmVyXCI6e2N1cnNvcjpcInBvaW50ZXJcIixiYWNrZ3JvdW5kQ29sb3I6WW8sXCI6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOlwicmdiYSgwLCAwLCAwLCAwLjIpXCJ9fSxcIjphY3RpdmVcIjp7b3V0bGluZVN0eWxlOlwibm9uZVwiLGJhY2tncm91bmRDb2xvcjpab30sXCI6Zm9jdXNcIjp7b3V0bGluZUNvbG9yOlwiIzAwMFwiLG91dGxpbmVXaWR0aDpcIjJweFwiLG91dGxpbmVTdHlsZTpcInNvbGlkXCIsYmFja2dyb3VuZENvbG9yOllvfX0pLGhpZ2hDb250cmFzdDp7XCJAbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSlcIjpyaShyaShyaShyaSh7b3V0bGluZVN0eWxlOlwibm9uZVwifSx4by5ib3JkZXJXaWR0aChcIjFweFwiKSkseG8uYm9yZGVyU3R5bGUoXCJzb2xpZFwiKSkseG8uYm9yZGVyQ29sb3IoXCJ3aW5kb3dcIikpLHt9LHtiYWNrZ3JvdW5kQ29sb3I6XCJ3aW5kb3dcIixjb2xvcjpcIndpbmRvd1RleHRcIixcIjpob3ZlclwiOnJpKHJpKHJpKHJpKHtvdXRsaW5lU3R5bGU6XCJub25lXCJ9LHhvLmJvcmRlcldpZHRoKFwiMXB4XCIpKSx4by5ib3JkZXJTdHlsZShcInNvbGlkXCIpKSx4by5ib3JkZXJDb2xvcihcImhpZ2hsaWdodFwiKSkse30se2JhY2tncm91bmRDb2xvcjpcIndpbmRvd1wiLGNvbG9yOlwid2luZG93VGV4dFwiLFwiOmZvY3VzXCI6cmkocmkocmkocmkoe291dGxpbmVTdHlsZTpcIm5vbmVcIn0seG8uYm9yZGVyV2lkdGgoXCIxcHhcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlckNvbG9yKFwiaGlnaGxpZ2h0XCIpKSx7fSx7YmFja2dyb3VuZENvbG9yOlwid2luZG93XCIsY29sb3I6XCJ3aW5kb3dUZXh0XCJ9KX0pLFwiOmZvY3VzXCI6cmkocmkocmkocmkoe291dGxpbmVTdHlsZTpcIm5vbmVcIn0seG8uYm9yZGVyV2lkdGgoXCIxcHhcIikpLHhvLmJvcmRlclN0eWxlKFwiZGFzaGVkXCIpKSx4by5ib3JkZXJDb2xvcihcImhpZ2hsaWdodFwiKSkse30se2JhY2tncm91bmRDb2xvcjpcIndpbmRvd1wiLGNvbG9yOlwid2luZG93VGV4dFwifSksXCI6YWN0aXZlXCI6cmkocmkocmkocmkoe291dGxpbmVTdHlsZTpcIm5vbmVcIn0seG8uYm9yZGVyV2lkdGgoXCIxcHhcIikpLHhvLmJvcmRlclN0eWxlKFwiZGFzaGVkXCIpKSx4by5ib3JkZXJDb2xvcihcImhpZ2hsaWdodFwiKSkse30se2JhY2tncm91bmRDb2xvcjpcIndpbmRvd1wiLGNvbG9yOlwid2luZG93VGV4dFwifSl9KX19KTtmdW5jdGlvbiBhaShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gbGkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/YWkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtzaShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6YWkoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gc2koZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBjaT1ibyh7YmFja2dyb3VuZExvZ286c2koe21heFdpZHRoOlwiMjU2cHhcIixtYXhIZWlnaHQ6XCIzNnB4XCIsZGlzcGxheTpcImJsb2NrXCIsbWFyZ2luTGVmdDpcImF1dG9cIixtYXJnaW5SaWdodDpcImF1dG9cIixtYXJnaW5Cb3R0b206XCIyNHB4XCIsYW5pbWF0aW9uRHVyYXRpb246XCIxc1wiLGFuaW1hdGlvbk5hbWU6e2Zyb206e29wYWNpdHk6MH0sdG86e29wYWNpdHk6MX19fSxLbyx7bWFyZ2luVG9wOlwiMjRweFwifSksdmVydGljYWxTcGxpdDpsaShsaSh7bWFyZ2luVG9wOlwiNDRweFwifSx4by5wYWRkaW5nKDAsXCI0NHB4XCIpKSx7fSxzaSh7fSxLbyxsaSh7fSx4by5wYWRkaW5nKDApKSkpfSk7ZnVuY3Rpb24gdWkoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBkaSxmaT1ibyh7YmFzZUJhY2tncm91bmQ6dWkoe3RvcDowLHdpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixiYWNrZ3JvdW5kU2l6ZTpcImNvdmVyXCIsYmFja2dyb3VuZFJlcGVhdDpcIm5vLXJlcGVhdFwiLGJhY2tncm91bmRQb3NpdGlvblg6XCJjZW50ZXJcIixiYWNrZ3JvdW5kUG9zaXRpb25ZOlwiY2VudGVyXCJ9LEtvLHtkaXNwbGF5Olwibm9uZVwifSksbm9ybWFsQmFja2dyb3VuZDp7cG9zaXRpb246XCJmaXhlZFwiLGxlZnQ6MCx6SW5kZXg6XCItMVwifSx2ZXJ0aWNhbFNwbGl0QmFja2dyb3VuZDp7cG9zaXRpb246XCJhYnNvbHV0ZVwifSxhbHdheXNTaG93OnVpKHt9LEtvLHtkaXNwbGF5OlwiaW5oZXJpdFwifSksb3ZlcmxheTp7YmFja2dyb3VuZENvbG9yOlwicmdiYSgwLCAwLCAwLCAwLjU1KVwiLGZpbHRlcjpcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChHcmFkaWVudFR5cGU9MCxzdGFydENvbG9yc3RyPScjOEMwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzhDMDAwMDAwJylcIixwb3NpdGlvbjpcImFic29sdXRlXCIsdG9wOjAsbGVmdDowLHdpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIn19KSxwaT1ibyh7YmFubmVyTG9nbzp7bWF4SGVpZ2h0OlwiMzZweFwifSxiYW5uZXJMb2dvVGV4dDp7Zm9udEZhbWlseTpcIlZlcmRhbmFcIixmb250U2l6ZTpcIjE2cHhcIixjb2xvcjpcIiMxODE4MThcIix3b3JkV3JhcDpcImJyZWFrLXdvcmRcIn0sbG9nbzp7bWF4V2lkdGg6XCIyNTZweFwiLGhlaWdodDpcIlwiLmNvbmNhdCgyNCxcInB4XCIpfX0pLGdpPWJvKHtjaGlsZEFjY291bnRCZW5lZml0OntkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJmbGV4LXN0YXJ0XCJ9LGJlbmVmaXREZXNjcmlwdGlvbjp7cGFkZGluZ0xlZnQ6XCIxMnB4XCJ9LGJlbmVmaXRJY29uOnttYXJnaW5Ub3A6XCJcIi5jb25jYXQoRm8sXCJweFwiKX0sbGlzdEJlbmVmaXRzOnttYXJnaW5Ub3A6XCIwcHhcIixcIiYgbGlcIjp7bWFyZ2luVG9wOlwiMHB4XCIsbWFyZ2luQm90dG9tOlwiMHB4XCJ9fSxiZW5lZml0czp7XCImICNsaXN0VGl0bGVcIjp7Zm9udFdlaWdodDo3MDAsZm9udFNpemU6XCIxNXB4XCIsbGluZUhlaWdodDpcIjIwcHhcIn19fSksbWk9XCJyZ2JhKDAsIDAsIDAsIDAuMylcIixoaT1cInJnYmEoMCwgMCwgMCwgMC4yKVwiLGJpPVwiI0ZGRlwiLHlpPVwiIzAwNjdCOFwiLHZpPVwiIzAwNURBNlwiO2Z1bmN0aW9uIHdpKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBTaShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj93aShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1BpKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp3aShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBQaShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHhpLE9pLF9pPVwiLVwiLmNvbmNhdChHbyxcInB4XCIpLENpPWJvKHtib2lsZXJQbGF0ZVRleHQ6U2koU2koU2koe3dvcmRXcmFwOlwiYnJlYWstd29yZFwiLGJhY2tncm91bmRDb2xvcjpcIiNmMmYyZjJcIn0seG8ucGFkZGluZyhcIjI0cHhcIixcIlwiLmNvbmNhdChHbyxcInB4XCIpLFwiMzZweFwiLFwiXCIuY29uY2F0KEdvLFwicHhcIikpKSx4by5tYXJnaW4oXCJcIi5jb25jYXQoNzYsXCJweFwiKSxfaSxfaSxfaSkpLHt9LChkaT17fSxQaShkaSxLbyxTaShTaSh7fSx4by5wYWRkaW5nKFwiXCIuY29uY2F0KDIwLFwicHhcIikpKSx4by5tYXJnaW4oXCJcIi5jb25jYXQoNTYsXCJweFwiKSwwLDAsMCkpKSxQaShkaSxcIiYgPiBwOmZpcnN0LWNoaWxkXCIse21hcmdpblRvcDowfSksUGkoZGksXCImID4gcDpsYXN0LWNoaWxkXCIse21hcmdpbkJvdHRvbTowfSksZGkpKSx0cmFuc3BhcmVudDp7YmFja2dyb3VuZENvbG9yOlwicmdiYSgyNDIsIDI0MiwgMjQyLCAwLjIpXCJ9LHZlcnRpY2FsU3BsaXQ6UGkoe21hcmdpbkJvdHRvbTowLGJhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9LEtvLHtiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSksdHJhbnNwYXJlbnRWZXJ0aWNhbFNwbGl0OlBpKHt9LEtvLHtiYWNrZ3JvdW5kQ29sb3I6XCJyZ2JhKDI0MiwgMjQyLCAyNDIsIDAuMilcIn0pfSk7ZnVuY3Rpb24ga2koZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX0hZnVuY3Rpb24oZSl7ZS5BbmNob3I9XCJBXCIsZS5TcGFuPVwiU1BBTlwifShPaXx8KE9pPXt9KSk7dmFyIEFpPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCYmISFkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMmJiEhZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcInN2Z1wiKS5jcmVhdGVTVkdSZWN0LFRpPWZ1bmN0aW9uKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSx0PXZvaWQgMCE9PWUuc3R5bGUuYW5pbWF0aW9uTmFtZTtpZighdCl7dmFyIG49W1wiV2Via2l0XCIsXCJNb3pcIixcIk9cIl0uZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PWUuc3R5bGVbXCJcIi5jb25jYXQodCxcIkFuaW1hdGlvbk5hbWVcIildfSkpO3Q9ISFufXJldHVybiB0fSxFaT1mdW5jdGlvbigpe2lmKCFJdC5kZWZhdWx0Lmluc3RhbmNlLmlzSGlzdG9yeVN1cHBvcnRlZClyZXR1cm4hMTt2YXIgZT1cIl9faGlzdG9yeV90ZXN0XCIsdD0hMTtpZih3aW5kb3cmJih0PXdpbmRvdy5oaXN0b3J5JiZ2b2lkIDAhPT13aW5kb3cuaGlzdG9yeS5zdGF0ZSYmdm9pZCAwIT09d2luZG93Lm9ucG9wc3RhdGUpLHQpdHJ5e3dpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShlLFwiXCIpLCh3aW5kb3cuaGlzdG9yeS5zdGF0ZSE9PWV8fG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZWRnZWNsaWVudC9cIik+LTEpJiYodD0hMSl9Y2F0Y2gobil7dD0hMX1yZXR1cm4gdH0samk9ZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0sdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTt0LnN0eWxlLmJvcmRlckxlZnRDb2xvcj1cInJlZFwiLHQuc3R5bGUuYm9yZGVyUmlnaHRDb2xvcj1cImJsdWVcIix0LnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIix0LnN0eWxlLnRvcD1cIi05OTlweFwiLGUuYXBwZW5kQ2hpbGQodCk7dmFyIG49d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkscj1uLmJvcmRlckxlZnRDb2xvcj09PW4uYm9yZGVyUmlnaHRDb2xvcjtyZXR1cm4gZS5yZW1vdmVDaGlsZCh0KSxyfSxJaT1mdW5jdGlvbigpe3ZhciBlLHQ9Y3QuJE8ubm9uZTtpZihqaSgpKXt2YXIgbj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0scj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShuKSxvPShlPXIuYmFja2dyb3VuZENvbG9yLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLFwiXCIpKT9lLnRvVXBwZXJDYXNlKCkubWF0Y2goL14jKChbMC05QS1GXXszfSl7MSwyfSl8KFswLTlBLUZdezh9KS8pP2U6ZS5tYXRjaCgvXnJnYmE/XFwoKFxcZCspLFxccyooXFxkKyksXFxzKihcXGQrKSg/OixcXHMqKFxcZCtcXC57MCwxfVxcZCopKT9cXCkkLyk/XCIjXCIuY29uY2F0KGUubWF0Y2goL15yZ2JhP1xcKChcXGQrKSxcXHMqKFxcZCspLFxccyooXFxkKykoPzosXFxzKihcXGQrXFwuezAsMX1cXGQqKSk/XFwpJC8pLnNsaWNlKDEpLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4oMz09PXQ/TWF0aC5yb3VuZCgyNTUqcGFyc2VGbG9hdChlKSk6cGFyc2VGbG9hdChlKSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsXCIwXCIpLnJlcGxhY2UoXCJOYU5cIixcIlwiKX0pKS5qb2luKFwiXCIpKTpcIlwiOlwiXCI7aWYobyl7bz03PT09by5sZW5ndGg/bzpvLnNsaWNlKDAsLTIpLFtcIiMwMDAwMDBcIixcIiMwMDBcIixcIiMyMDIwMjBcIixcIiMyZDMyMzZcIl0uaW5jbHVkZXMobykmJih0PWN0LiRPLmRhcmspO1tcIiNmZmZmZmZcIixcIiNmZmZcIixcIiNmZmZhZWZcIl0uaW5jbHVkZXMobykmJih0PWN0LiRPLmxpZ2h0KX19cmV0dXJuIHR9LExpPWZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQ6XCJcIixuPXQuaW5kZXhPZihcIk1TSUUgXCIpO2lmKG4+MClyZXR1cm4gcGFyc2VJbnQodC5zdWJzdHJpbmcobis1LHQuaW5kZXhPZihcIi5cIixuKSksMTApO3ZhciByPXQuaW5kZXhPZihcIlRyaWRlbnQvXCIpO2lmKHI+MCl7dmFyIG89dC5pbmRleE9mKFwicnY6XCIpO3JldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhvKzMsdC5pbmRleE9mKFwiLlwiLG8pKSwxMCl9aWYoZSl7dmFyIGk9dC5pbmRleE9mKFwiRWRnZS9cIik7aWYoaT4wKXJldHVybiBwYXJzZUludCh0LnN1YnN0cmluZyhpKzUsdC5pbmRleE9mKFwiLlwiLGkpKSwxMCk7dmFyIGE9dC5pbmRleE9mKFwiRWRnL1wiKTtpZihhPjApcmV0dXJuIHBhcnNlSW50KHQuc3Vic3RyaW5nKGErNCx0LmluZGV4T2YoXCIuXCIsYSkpLDEwKX1yZXR1cm4tMX0sRGk9ZnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKCF0JiYod2luZG93Lm5hdmlnYXRvci5jcmVkZW50aWFscyYmKG49d2luZG93Lm5hdmlnYXRvci5jcmVkZW50aWFscyksd2luZG93LlB1YmxpY0tleUNyZWRlbnRpYWwmJihyPXdpbmRvdy5QdWJsaWNLZXlDcmVkZW50aWFsKSwhKHZvaWQgMCE9PW4mJnZvaWQgMCE9PW4uY3JlYXRlJiZ2b2lkIDAhPT1uLmdldCYmdm9pZCAwIT09ciYmdm9pZCAwIT09ci5pc1VzZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUpKSlyZXR1cm4hMTtyZXR1cm4gZX0sTmk9ZnVuY3Rpb24oKXt2YXIgZSx0PShlPXJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoIXQpe2UubmV4dD0yO2JyZWFrfXJldHVybiBlLmFicnVwdChcInJldHVyblwiLFByb21pc2UucmVzb2x2ZSghMCkpO2Nhc2UgMjppZighd2luZG93LlB1YmxpY0tleUNyZWRlbnRpYWwpe2UubmV4dD00O2JyZWFrfXJldHVybiBlLmFicnVwdChcInJldHVyblwiLHdpbmRvdy5QdWJsaWNLZXlDcmVkZW50aWFsLmlzVXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSgpLmNhdGNoKChmdW5jdGlvbigpe3JldHVybiExfSkpKTtjYXNlIDQ6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsITEpO2Nhc2UgNTpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSksZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtraShpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtraShpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLFJpPWZ1bmN0aW9uKCl7cmV0dXJuIGU9MTAsdm9pZCAwPT09eGkmJih4aT1MaSgpKSwtMSE9PXhpJiZ4aT49ZTt2YXIgZX0sQmk9ZnVuY3Rpb24gZSh0LG4pe3JldHVybiB0P24odCk/dDplKHQucGFyZW50RWxlbWVudCxuKTpudWxsfSxVaT1mdW5jdGlvbihlKXtyZXR1cm4gZS5oYXNBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKXx8ISFlLmdldEF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpfHxcIm5vbmVcIj09PWUuc3R5bGUuZGlzcGxheX0sRmk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWZdLCBidXR0b24sIGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0LCBkZXRhaWxzLCBbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXg9XCItMVwiXSknKSxuPVtdO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWU7KGZ1bmN0aW9uKGUpe3JldHVybiEhQmkoZSxVaSl9KSh0KXx8bi5wdXNoKHQpfSkpLG59LE1pPW4oMzI3MzApLHppPW4oNzc1NjYpLEhpPW4oODY5ODIpLFZpPW4oODIwMDgpLFdpPW4oNTE1NjkpLEdpPW4oMTM0NDIpLCRpPW4oMzU1NzApLEtpPW4oNTA1NTQpLHFpPW4oMTIxMjkpLFFpPW4oNTg2MTUpLFhpPW4oNzY1MzgpLFlpPW4oNzIxOTEpLFppPW4oNzk3NCksSmk9big4NzM3NyksZWE9bigxODgxNCksdGE9bigxMDQwNiksbmE9big1MTE4KSxyYT1uKDI2NzExKSxvYT1uKDYyMDYzKSxpYT1uKDMwMjg5KSxhYT1uKDcyMzI5KSxsYT1uKDk3MDIzKSxzYT1uKDIzNTM0KSxjYT1uKDY5NjA4KSx1YT1uKDM2NTM0KSxkYT1uKDc0NDUpLGZhPW4oNDAyMzIpLHBhPW4oOTc5NTkpLGdhPW4oMTYwMTYpLG1hPW4oNDg2NzMpLGhhPW4oMzkyNDApLGJhPW4oNDQ0NCkseWE9big4NTY2MCksdmE9big1MjkwOSksd2E9big5MzQ4MCksU2E9bigyODA3NiksUGE9bigzNzUzNikseGE9big5NDU1MiksT2E9big1ODYzNiksX2E9big1ODY2NyksQ2E9bigyMjUxMCksa2E9bigxMjk3OSksQWE9bigyNjM2OSksVGE9big2NDk5MCksRWE9bigxMDUzKSxqYT1uKDcyMTI1KSxJYT1uKDE1NTE0KSxMYT1uKDQxMjM1KSxEYT1uKDMyNTAwKSxOYT1uKDUyOTA2KSxSYT1uKDE3OTExKSxCYT1uKDY1MjkzKSxVYT1uKDM0OTI0KSxGYT1uKDc3MjI3KSxNYT1uKDUyODc4KSx6YT1uKDE3NDcyKSxIYT1uKDczNzgxKSxWYT1uKDQwNjYpLFdhPW4oMzg3NzMpLEdhPW4oNDU3NTkpLCRhPW4oMzA1NTApLEthPW4oNjIzODEpLHFhPW4oNDg4MDgpLFFhPW4oODYzMDkpLFhhPW4oNzg2MTMpLFlhPW4oODcwODcpLFphPW4oNjhlMyksSmE9big5OTQxKSxlbD1uKDg1OTA3KSx0bD1uKDE5NzkzKSxubD1uKDYyMjE0KSxybD1uKDg4MzkzKSxvbD1uKDMyNTQ5KSxpbD1uKDYyNzczKSxhbD1uKDk2Mjg5KSxsbD1uKDkyNjA4KSxzbD1uZXcgTWFwKFtbXCJhcHBCYWNrZ3JvdW5kXzBfanBnXCIsTWldLFtcImFwcEJhY2tncm91bmRfMV9qcGdcIix6aV0sW1wiYXBwQmFja2dyb3VuZF8yX2pwZ1wiLEhpXSxbXCJhcHBCYWNrZ3JvdW5kXzNfanBnXCIsVmldLFtcImFwcEJhY2tncm91bmRfNF9qcGdcIixXaV0sW1wiYXBwQmFja2dyb3VuZF81X2pwZ1wiLEdpXSxbXCJhcHBCYWNrZ3JvdW5kXzZfanBnXCIsJGldLFtcImFwcEJhY2tncm91bmRfN19qcGdcIixLaV0sW1wiYXBwQmFja2dyb3VuZF84X2pwZ1wiLHFpXSxbXCJhcHBCYWNrZ3JvdW5kXzlfanBnXCIsUWldLFtcImFwcEJhY2tncm91bmRfMTBfanBnXCIsWGldLFtcImFwcEJhY2tncm91bmRfMTFfanBnXCIsWWldLFtcImFwcEJhY2tncm91bmRfMTNfanBnXCIsWmldLFtcImFwcEJhY2tncm91bmRfMTRfanBnXCIsSmldLFtcImFwcEJhY2tncm91bmRfMTVfanBnXCIsZWFdLFtcImFwcEJhY2tncm91bmRfMTZfanBnXCIsdGFdLFtcImFwcEJhY2tncm91bmRfMTdfanBnXCIsbmFdLFtcImFwcEJhY2tncm91bmRfMThfanBnXCIscmFdLFtcImFwcEJhY2tncm91bmRfMTlfanBnXCIsb2FdLFtcImFwcEJhY2tncm91bmRfMjBfanBnXCIsaWFdLFtcImFwcEJhY2tncm91bmRfMjFfanBnXCIsYWFdLFtcImFwcEJhY2tncm91bmRfMjJfanBnXCIsbGFdLFtcImFwcEJhY2tncm91bmRfMjNfanBnXCIsc2FdLFtcImFwcEJhY2tncm91bmRfMjRfanBnXCIsY2FdLFtcImFwcEJhY2tncm91bmRfMjVfanBnXCIsdWFdLFtcImFwcEJhY2tncm91bmRfMjZfanBnXCIsZGFdLFtcImFwcEJhY2tncm91bmRfMjdfanBnXCIsZmFdLFtcImFwcEJhY2tncm91bmRfMjhfanBnXCIscGFdLFtcImFwcEJhY2tncm91bmRfMjlfanBnXCIsZ2FdLFtcImFwcEJhY2tncm91bmRfMzBfanBnXCIsbWFdLFtcImFwcEJhY2tncm91bmRfMzFfanBnXCIsaGFdLFtcImFwcEJhY2tncm91bmRfMzJfanBnXCIsYmFdLFtcImFwcEJhY2tncm91bmRfMzNfanBnXCIseWFdLFtcImFwcEJhY2tncm91bmRfMzRfanBnXCIsdmFdLFtcImFwcEJhY2tncm91bmRfMzVfanBnXCIsd2FdLFtcImFwcEJhY2tncm91bmRfMzZfanBnXCIsU2FdLFtcImFwcEJhY2tncm91bmRfMzdfanBnXCIsUGFdLFtcImFwcEJhY2tncm91bmRfMzhfanBnXCIseGFdLFtcImFwcEJhY2tncm91bmRfMzlfanBnXCIsT2FdLFtcImFwcEJhY2tncm91bmRfNDBfanBnXCIsX2FdLFtcImFwcEJhY2tncm91bmRfNDFfanBnXCIsQ2FdLFtcImFwcEJhY2tncm91bmRfNDJfanBnXCIsa2FdLFtcImFwcEJhY2tncm91bmRfNDNfanBnXCIsQWFdLFtcImFwcEJhY2tncm91bmRfNDRfanBnXCIsVGFdLFtcImFwcEJhY2tncm91bmRfNDVfanBnXCIsRWFdLFtcImFwcEJhY2tncm91bmRfNDZfanBnXCIsamFdLFtcImFwcEJhY2tncm91bmRfNDdfanBnXCIsSWFdLFtcImFwcEJhY2tncm91bmRfNDhfanBnXCIsTGFdLFtcImFwcEJhY2tncm91bmRfNDlfanBnXCIsRGFdLFtcImFwcEJhY2tncm91bmRfNTBfanBnXCIsTmFdLFtcImFwcEJhY2tncm91bmRfNTFfanBnXCIsUmFdLFtcImFwcEJhY2tncm91bmRfNTJfanBnXCIsQmFdLFtcImFwcEJhY2tncm91bmRfNTNfanBnXCIsVWFdLFtcImFwcEJhY2tncm91bmRfNTRfanBnXCIsRmFdLFtcImFwcEJhY2tncm91bmRfNTVfanBnXCIsTWFdLFtcImFwcEJhY2tncm91bmRfNTZfanBnXCIsemFdLFtcImFwcEJhY2tncm91bmRfNTdfanBnXCIsSGFdLFtcImFwcEJhY2tncm91bmRfNThfanBnXCIsVmFdLFtcImFwcEJhY2tncm91bmRfNTlfanBnXCIsV2FdLFtcImFwcEJhY2tncm91bmRfNjBfanBnXCIsR2FdLFtcImFwcEJhY2tncm91bmRfNjFfanBnXCIsJGFdLFtcImFwcEJhY2tncm91bmRfNjJfanBnXCIsS2FdLFtcImFwcEJhY2tncm91bmRfNjNfanBnXCIscWFdLFtcImFwcEJhY2tncm91bmRfNjRfanBnXCIsUWFdLFtcImFwcEJhY2tncm91bmRfNjVfanBnXCIsWGFdLFtcImFwcEJhY2tncm91bmRfNjZfanBnXCIsWWFdLFtcImFwcEJhY2tncm91bmRfNjdfanBnXCIsWmFdLFtcImFwcEJhY2tncm91bmRfNjhfanBnXCIsSmFdLFtcImFwcEJhY2tncm91bmRfNjlfanBnXCIsZWxdLFtcImFwcEJhY2tncm91bmRfNzBfanBnXCIsdGxdLFtcImFwcEJhY2tncm91bmRfNzFfanBnXCIsbmxdLFtcImFwcEJhY2tncm91bmRfNzJfanBnXCIscmxdLFtcImFwcEJhY2tncm91bmRfNzNfanBnXCIsb2xdLFtcImFwcEJhY2tncm91bmRfNzRfanBnXCIsaWxdLFtcImFwcEJhY2tncm91bmRfNzVfanBnXCIsYWxdLFtcImFwcEJhY2tncm91bmRfNzZfanBnXCIsbGxdXSksY2w9big5Mzc4MCksdWw9bigyNTE1OSksZGw9big2Nzg1MiksZmw9big0ODQzMSkscGw9big2Nzc4MCksZ2w9big1NTg2MCksbWw9big3OTE2OCksaGw9bigxMzQ0MyksYmw9bigxODc3MCkseWw9bigzMDQxNCksdmw9bigxODE5NCksd2w9big0NzEwNyksU2w9big1MDMwMiksUGw9big5NDA3MCkseGw9big3ODE0MCksT2w9big0OTExNCksX2w9bigzODYyMSksQ2w9big3NDg2Miksa2w9big2NDczMCksQWw9big3Mjc0NCksVGw9big3NTk0NCksRWw9big3NDUxMCksamw9big1Njc2MiksSWw9big3MDQ4NCksTGw9bigzNjYxOSksRGw9big2Nzg5OCksTmw9bigxMjM3MiksUmw9big3NDc4NyksQmw9bigyMTgwOCksVWw9bigxODkzNCksRmw9big1MTUyMSksTWw9big5MjE5Nyksemw9big3MTM3MCksSGw9big3OTY2MCksVmw9bigzMTM1KSxXbD1uKDQwMjk2KSxHbD1uKDc5NDM0KSwkbD1uKDM1NjY1KSxLbD1uKDU1NDQ3KSxxbD1uKDE4MjEyKSxRbD1uKDQ5ODk3KSxYbD1uKDcxMTgyKSxZbD1uKDUxMTk5KSxabD1uKDg0ODc4KSxKbD1uKDY0NTU4KSxlcz1uKDU4NTA3KSx0cz1uKDg0MDIwKSxucz1uKDg5NzUyKSxycz1uKDQxNDkyKSxvcz1uKDQ5OTExKSxpcz1uKDQ0Nzc5KSxhcz1uKDQ4NTQ2KSxscz1uKDgyNzc0KSxzcz1uKDU5MDM3KSxjcz1uKDUzNzIxKSx1cz1uKDUyOTc1KSxkcz1uKDg3MzU0KSxmcz1uKDEyNzUyKSxwcz1uKDczODIxKSxncz1uKDc5NzEyKSxtcz1uKDQ0MTQ0KSxocz1uKDkxMDkwKSxicz1uKDk1MTAxKSx5cz1uKDEyNzUxKSx2cz1uKDgzOTQxKSx3cz1uKDc4MTcpLFNzPW4oNjIyMDEpLFBzPW4oOTEyODMpLHhzPW4oOTk1MzIpLE9zPW4oMzY5MDQpLF9zPW4oNTk2MjUpLENzPW4oNjI4OTYpLGtzPW4oOTQ1OTIpLEFzPW4oOTkzNDQpLFRzPW4oNjIyKSxFcz1uZXcgTWFwKFtbXCJhcHBMb2dvXzBfcG5nXCIsY2xdLFtcImFwcExvZ29fMV9wbmdcIix1bF0sW1wiYXBwTG9nb18yX3BuZ1wiLGRsXSxbXCJhcHBMb2dvXzNfcG5nXCIsZmxdLFtcImFwcExvZ29fNF9wbmdcIixwbF0sW1wiYXBwTG9nb181X3BuZ1wiLGdsXSxbXCJhcHBMb2dvXzZfcG5nXCIsbWxdLFtcImFwcExvZ29fN19wbmdcIixobF0sW1wiYXBwTG9nb184X3BuZ1wiLGJsXSxbXCJhcHBMb2dvXzEwX3BuZ1wiLHlsXSxbXCJhcHBMb2dvXzExX3BuZ1wiLHZsXSxbXCJhcHBMb2dvXzEyX3BuZ1wiLHdsXSxbXCJhcHBMb2dvXzEzX3BuZ1wiLFNsXSxbXCJhcHBMb2dvXzE0X3BuZ1wiLFBsXSxbXCJhcHBMb2dvXzE1X3BuZ1wiLHhsXSxbXCJhcHBMb2dvXzE3X3BuZ1wiLE9sXSxbXCJhcHBMb2dvXzE4X3BuZ1wiLF9sXSxbXCJhcHBMb2dvXzE5X3BuZ1wiLENsXSxbXCJhcHBMb2dvXzIwX3BuZ1wiLGtsXSxbXCJhcHBMb2dvXzIxX3BuZ1wiLEFsXSxbXCJhcHBMb2dvXzIyX3BuZ1wiLFRsXSxbXCJhcHBMb2dvXzIzX3BuZ1wiLEVsXSxbXCJhcHBMb2dvXzI0X3BuZ1wiLGpsXSxbXCJhcHBMb2dvXzI1X3BuZ1wiLElsXSxbXCJhcHBMb2dvXzI2X3BuZ1wiLExsXSxbXCJhcHBMb2dvXzI3X3BuZ1wiLERsXSxbXCJhcHBMb2dvXzI4X3BuZ1wiLE5sXSxbXCJhcHBMb2dvXzI5X3BuZ1wiLFJsXSxbXCJhcHBMb2dvXzMwX3BuZ1wiLEJsXSxbXCJhcHBMb2dvXzMxX3BuZ1wiLFVsXSxbXCJhcHBMb2dvXzMyX3BuZ1wiLEZsXSxbXCJhcHBMb2dvXzMzX3BuZ1wiLE1sXSxbXCJhcHBMb2dvXzM0X3BuZ1wiLHpsXSxbXCJhcHBMb2dvXzM1X3BuZ1wiLEhsXSxbXCJhcHBMb2dvXzM2X3BuZ1wiLFZsXSxbXCJhcHBMb2dvXzM3X3BuZ1wiLFdsXSxbXCJhcHBMb2dvXzM4X3BuZ1wiLEdsXSxbXCJhcHBMb2dvXzM5X3BuZ1wiLCRsXSxbXCJhcHBMb2dvXzQwX3BuZ1wiLEtsXSxbXCJhcHBMb2dvXzQxX3BuZ1wiLHFsXSxbXCJhcHBMb2dvXzQyX3BuZ1wiLFFsXSxbXCJhcHBMb2dvXzQzX3BuZ1wiLFhsXSxbXCJhcHBMb2dvXzQ0X3BuZ1wiLFlsXSxbXCJhcHBMb2dvXzQ1X3BuZ1wiLFpsXSxbXCJhcHBMb2dvXzQ2X3BuZ1wiLEpsXSxbXCJhcHBMb2dvXzQ3X3BuZ1wiLGVzXSxbXCJhcHBMb2dvXzQ4X3BuZ1wiLHRzXSxbXCJhcHBMb2dvXzQ5X3BuZ1wiLG5zXSxbXCJhcHBMb2dvXzUwX3BuZ1wiLHJzXSxbXCJhcHBMb2dvXzUxX3BuZ1wiLG9zXSxbXCJhcHBMb2dvXzUyX3BuZ1wiLGlzXSxbXCJhcHBMb2dvXzUzX3BuZ1wiLGFzXSxbXCJhcHBMb2dvXzU0X3BuZ1wiLGxzXSxbXCJhcHBMb2dvXzU1X3BuZ1wiLHNzXSxbXCJhcHBMb2dvXzU2X3BuZ1wiLGNzXSxbXCJhcHBMb2dvXzU3X3BuZ1wiLHVzXSxbXCJhcHBMb2dvXzU4X3BuZ1wiLGRzXSxbXCJhcHBMb2dvXzU5X3BuZ1wiLGZzXSxbXCJhcHBMb2dvXzYwX3BuZ1wiLHBzXSxbXCJhcHBMb2dvXzYxX3BuZ1wiLGdzXSxbXCJhcHBMb2dvXzYyX3BuZ1wiLG1zXSxbXCJhcHBMb2dvXzYzX3BuZ1wiLGhzXSxbXCJhcHBMb2dvXzY0X3BuZ1wiLGJzXSxbXCJhcHBMb2dvXzY1X3BuZ1wiLHlzXSxbXCJhcHBMb2dvXzY2X3BuZ1wiLHZzXSxbXCJhcHBMb2dvXzY3X3BuZ1wiLHdzXSxbXCJhcHBMb2dvXzY4X3BuZ1wiLFNzXSxbXCJhcHBMb2dvXzY5X3BuZ1wiLFBzXSxbXCJhcHBMb2dvXzcwX3BuZ1wiLHhzXSxbXCJhcHBMb2dvXzcxX3BuZ1wiLE9zXSxbXCJhcHBMb2dvXzcyX3BuZ1wiLF9zXSxbXCJhcHBMb2dvXzczX3BuZ1wiLENzXSxbXCJhcHBMb2dvXzc0X3BuZ1wiLGtzXSxbXCJhcHBMb2dvXzc1X3BuZ1wiLEFzXSxbXCJhcHBMb2dvXzc2X3BuZ1wiLFRzXV0pLGpzPW4oNjM2NjEpLElzPW4oNjA2NDkpLExzPW4oMjA1MyksRHM9big2ODQ0MCksTnM9big4Mjk0KSxScz1uZXcgTWFwKFtbXCJiYWNrZ3JvdW5kXzFfanBnXCIsanNdLFtcImJhY2tncm91bmRfMl9qcGdcIixJc10sW1wiYmFja2dyb3VuZF8yX3N2Z1wiLExzXSxbXCJiYWNrZ3JvdW5kX2ZsdWVudF93ZWJfZGFya19qcGdcIixEc10sW1wiYmFja2dyb3VuZF9mbHVlbnRfd2ViX2xpZ2h0X2pwZ1wiLE5zXV0pLEJzPW4oODQ0NCksVXM9big2ODA2MCksRnM9big3Nzk0NiksTXM9big5Mzc1KSx6cz1uKDkzMzY0KSxIcz1uKDU4MDI1KSxWcz1uKDQ4Nzg0KSxXcz1uKDc3NjgxKSxHcz1uKDUwODI4KSwkcz1uKDQzMjYyKSxLcz1uKDI3MjQzKSxxcz1uKDI1MjI4KSxRcz1uKDIyMzI4KSxYcz1uKDQ2NTY0KSxZcz1uKDU3NTI4KSxacz1uKDQ1NTkxKSxKcz1uKDY4NTMwKSxlYz1uKDgzMzAxKSx0Yz1uKDc1MjI3KSxuYz1uKDM2NDYpLHJjPW4oMTAzNDMpLG9jPW4oOTM2NzYpLGljPW4oODg1MTgpLGFjPW4oNzQwNDgpLGxjPW4oNjM2NTcpLHNjPW4oMzI3NSksY2M9big1Mzc3MCksdWM9bigxMDI3NyksZGM9big5NzcpLGZjPW4oMjM0MzQpLHBjPW4oNjEzNzApLGdjPW4oNjkyNDcpLG1jPW4oMTk1NzUpLGhjPW4oMTc3MDMpLGJjPW4oMTc5OTEpLHljPW4oNzk4NTApLHZjPW4oMTM0OSksd2M9big5NTIxMCksU2M9big4MzI0NiksUGM9big0OTMxNCkseGM9bigxMTUzMSksT2M9big4ODcwNSksX2M9big2OTMzMSksQ2M9big4OTg5NCksa2M9big0OTMzNSksQWM9big3NzQyNSksVGM9big3OTkyOCksRWM9big0MDUxMiksamM9big3MTg3KSxJYz1uKDczNjc4KSxMYz1uKDMwNjQ5KSxEYz1uKDg5NjcxKSxOYz1uKDc2NTI3KSxSYz1uKDQ4Njg0KSxCYz1uKDg0ODA5KSxVYz1uKDEyMjk2KSxGYz1uKDMyMzQ0KSxNYz1uKDIyNDc1KSx6Yz1uKDUxMTMwKSxIYz1uKDgwNTIyKSxWYz1uKDE0Njg4KSxXYz1uKDQ1NTExKSxHYz1uKDc2OTc0KSwkYz1uKDQ0NjI5KSxLYz1uKDMyNjMwKSxxYz1uKDUxMjMpLFFjPW4oNjk0NCksWGM9big5ODMwOSksWWM9bigyMTA5NiksWmM9big2MzMxMyksSmM9big4MzY2MyksZXU9big5MzU1MiksdHU9big1NzU5MyksbnU9big2MzE1OSkscnU9bigzMDYxMyksb3U9bigxNjkxOCksaXU9bigxMDM3MCksYXU9big5NjM2NyksbHU9big2ODM3MSksc3U9big4NTQ5MSksY3U9big3MjM5NiksdXU9big2OTM3MCksZHU9bigzNjE5MCksZnU9big2ODUxNykscHU9bigzNzMyMyksZ3U9big5NzM1MyksbXU9bigyOTU1NiksaHU9bigzMTcyMCksYnU9big0ODU2NCkseXU9bigzODI2MyksdnU9big0NzMzKSx3dT1uKDQzODM0KSxTdT1uKDcwMjcxKSxQdT1uKDgzMDc0KSx4dT1uKDI3OTk4KSxPdT1uKDgxOTQzKSxfdT1uKDg1ODQpLEN1PW4oNjc5MTUpLGt1PW4oODI4NzIpLEF1PW4oNjI5NzgpLFR1PW4oMjcyNTcpLEV1PW4oNTUyMjkpLGp1PW4oNzg0MzcpLEl1PW4oMjkyNjMpLEx1PW4oNDY4NTQpLER1PW4oMzg2NzYpLE51PW4oMzQxNDUpLFJ1PW4oODkxNDEpLEJ1PW4oNjgxMyksVXU9big2NzUxMiksRnU9bigyMTU2KSxNdT1uKDM5ODkpLHp1PW4oNjY2MDIpLEh1PW4oMzI2NTgpLFZ1PW4oNDIwNjgpLFd1PW4oNDQwMSksR3U9big3ODMzOCksJHU9big0MTA5KSxLdT1uKDc1ODU1KSxxdT1uKDczMDk1KSxRdT1uKDE5ODcwKSxYdT1uKDYxMDQ5KSxZdT1uKDMyOTc3KSxadT1uKDk0OTU3KSxKdT1uKDM3MDk4KSxlZD1uKDYzNzY4KSx0ZD1uKDg5MTQ5KSxuZD1uKDQ1MzY4KSxyZD1uKDk2MDAzKSxvZD1uKDg5NTk4KSxpZD1uKDYyNjM2KSxhZD1uKDk1MTg2KSxsZD1uKDUwMDUwKSxzZD1uKDUzNzg0KSxjZD1uKDQ3NTEpLHVkPW4oODY3MTUpLGRkPW4oNTE2NDUpLGZkPW4oNzI2NjIpLHBkPW4oNzkxOTMpLGdkPW4oMTQ4MSksbWQ9big1NTA0NyksaGQ9big4MTY2MSksYmQ9big5OTk2KSx5ZD1uKDQxNjk1KSx2ZD1uKDMzNDUpLHdkPW4oNTQ3MTgpLFNkPW4oNDg3MjUpLFBkPW4oNTYzMTYpLHhkPW4oNDY4MTYpLE9kPW4oNzk1MDIpLF9kPW4oMzEyMjkpLENkPW4oMjczMzkpLGtkPW4oNTU3NTApLEFkPW4oNDcyNjEpLFRkPW5ldyBNYXAoW1tcImFkZF91c2VyX3BuZ1wiLEJzXSxbXCJhZGRfdXNlcl93aGl0ZV9wbmdcIixVc10sW1wiYXJyb3dfbGVmdF9wbmdcIixGc10sW1wiYXJyb3dfbGVmdF93aGl0ZV9wbmdcIix6c10sW1wiYXJyb3dfbGVmdF9zdmdcIixNc10sW1wiYXJyb3dfbGVmdF93aGl0ZV9zdmdcIixIc10sW1wiYXJyb3dfcmlnaHRfcG5nXCIsVnNdLFtcImFycm93X3JpZ2h0X3doaXRlX3BuZ1wiLEdzXSxbXCJhcnJvd19yaWdodF9zdmdcIixXc10sW1wiYXJyb3dfcmlnaHRfd2hpdGVfc3ZnXCIsJHNdLFtcImF1dGhlbnRpY2F0b3JpbmZvX2dpZlwiLEtzXSxbXCJjaGVja19maWxsZWRfcG5nXCIsbmNdLFtcImNoZWNrX2ZpbGxlZF9zdmdcIixyY10sW1wiY2hlY2tfc21hbGxfcG5nXCIsb2NdLFtcImNoZWNrX3NtYWxsX3doaXRlX3BuZ1wiLGFjXSxbXCJjaGVja19zbWFsbF9zdmdcIixpY10sW1wiY2hlY2tfc21hbGxfd2hpdGVfc3ZnXCIsbGNdLFtcImNoYWxsZW5nZV9hdWRpb19wbmdcIixxc10sW1wiY2hhbGxlbmdlX2F1ZGlvX3N2Z1wiLFFzXSxbXCJjaGFsbGVuZ2VfaW1hZ2VfcG5nXCIsWHNdLFtcImNoYWxsZW5nZV9pbWFnZV9zdmdcIixZc10sW1wiY2hhbGxlbmdlX3NwZWFrZXJfcG5nXCIsZWNdLFtcImNoYWxsZW5nZV9zcGVha2VyX3N2Z1wiLHRjXSxbXCJjaGFsbGVuZ2VfcmVmcmVzaF9wbmdcIixac10sW1wiY2hhbGxlbmdlX3JlZnJlc2hfc3ZnXCIsSnNdLFtcImNsb3NlX3BuZ1wiLGZjXSxbXCJjbG9zZV93aGl0ZV9wbmdcIixnY10sW1wiY2xvc2Vfc3ZnXCIscGNdLFtcImNsb3NlX3doaXRlX3N2Z1wiLG1jXSxbXCJjaGV2cm9uX2Nsb3NlZF9wbmdcIixzY10sW1wiY2hldnJvbl9jbG9zZWRfd2hpdGVfcG5nXCIsdWNdLFtcImNoZXZyb25fY2xvc2VkX3N2Z1wiLGNjXSxbXCJjaGV2cm9uX2Nsb3NlZF93aGl0ZV9zdmdcIixkY10sW1wiY3JlZF9vcHRpb25fYWNjZXNzcGFzc19wbmdcIixoY10sW1wiY3JlZF9vcHRpb25fYWNjZXNzcGFzc19zdmdcIixiY10sW1wiY3JlZF9vcHRpb25fYWNjZXNzcGFzc193aGl0ZV9wbmdcIix5Y10sW1wiY3JlZF9vcHRpb25fYWNjZXNzcGFzc193aGl0ZV9zdmdcIix2Y10sW1wiY3JlZF9vcHRpb25fYXV0aGVudGljYXRvcl9wbmdcIix3Y10sW1wiY3JlZF9vcHRpb25fYXV0aGVudGljYXRvcl9zdmdcIixTY10sW1wiY3JlZF9vcHRpb25fYXV0aGVudGljYXRvcl93aGl0ZV9wbmdcIixQY10sW1wiY3JlZF9vcHRpb25fYXV0aGVudGljYXRvcl93aGl0ZV9zdmdcIix4Y10sW1wiY3JlZF9vcHRpb25fY2VydGlmaWNhdGVfcG5nXCIsT2NdLFtcImNyZWRfb3B0aW9uX2NlcnRpZmljYXRlX3N2Z1wiLF9jXSxbXCJjcmVkX29wdGlvbl9jZXJ0aWZpY2F0ZV93aGl0ZV9wbmdcIixDY10sW1wiY3JlZF9vcHRpb25fY2VydGlmaWNhdGVfd2hpdGVfc3ZnXCIsa2NdLFtcImNyZWRfb3B0aW9uX2ZpZG9fcG5nXCIsQWNdLFtcImNyZWRfb3B0aW9uX2ZpZG9fc3ZnXCIsVGNdLFtcImNyZWRfb3B0aW9uX2ZpZG9fd2hpdGVfcG5nXCIsRWNdLFtcImNyZWRfb3B0aW9uX2ZpZG9fd2hpdGVfc3ZnXCIsamNdLFtcImNyZWRfb3B0aW9uX2ZvcmdvdF9wbmdcIixJY10sW1wiY3JlZF9vcHRpb25fZm9yZ290X3N2Z1wiLExjXSxbXCJjcmVkX29wdGlvbl9mb3Jnb3Rfd2hpdGVfcG5nXCIsRGNdLFtcImNyZWRfb3B0aW9uX2ZvcmdvdF93aGl0ZV9zdmdcIixOY10sW1wiY3JlZF9vcHRpb25fZ2VuZXJpY19hcHBfcG5nXCIsUmNdLFtcImNyZWRfb3B0aW9uX2dlbmVyaWNfYXBwX3N2Z1wiLEJjXSxbXCJjcmVkX29wdGlvbl9nZW5lcmljX2FwcF93aGl0ZV9wbmdcIixVY10sW1wiY3JlZF9vcHRpb25fZ2VuZXJpY19hcHBfd2hpdGVfc3ZnXCIsRmNdLFtcImNyZWRfb3B0aW9uX2dpdGh1Yl9wbmdcIixNY10sW1wiY3JlZF9vcHRpb25fZ2l0aHViX3N2Z1wiLHpjXSxbXCJjcmVkX29wdGlvbl9naXRodWJfd2hpdGVfcG5nXCIsSGNdLFtcImNyZWRfb3B0aW9uX2dpdGh1Yl93aGl0ZV9zdmdcIixWY10sW1wiY3JlZF9vcHRpb25fbGlua2VkaW5fcG5nXCIsV2NdLFtcImNyZWRfb3B0aW9uX2xpbmtlZGluX3N2Z1wiLEdjXSxbXCJjcmVkX29wdGlvbl9saW5rZWRpbl93aGl0ZV9wbmdcIiwkY10sW1wiY3JlZF9vcHRpb25fbGlua2VkaW5fd2hpdGVfc3ZnXCIsS2NdLFtcImNyZWRfb3B0aW9uX3Bhc3NrZXlfcG5nXCIsWmNdLFtcImNyZWRfb3B0aW9uX3Bhc3NrZXlfc3ZnXCIsSmNdLFtcImNyZWRfb3B0aW9uX3Bhc3NrZXlfd2hpdGVfcG5nXCIsZXVdLFtcImNyZWRfb3B0aW9uX3Bhc3NrZXlfd2hpdGVfc3ZnXCIsdHVdLFtcImNyZWRfb3B0aW9uX3Bhc3N3b3JkX3BuZ1wiLG51XSxbXCJjcmVkX29wdGlvbl9wYXNzd29yZF9zdmdcIixydV0sW1wiY3JlZF9vcHRpb25fcGFzc3dvcmRfd2hpdGVfcG5nXCIsb3VdLFtcImNyZWRfb3B0aW9uX3Bhc3N3b3JkX3doaXRlX3N2Z1wiLGl1XSxbXCJjcmVkX29wdGlvbl9vZmZsaW5lYWNjb3VudF9wbmdcIixxY10sW1wiY3JlZF9vcHRpb25fb2ZmbGluZWFjY291bnRfc3ZnXCIsUWNdLFtcImNyZWRfb3B0aW9uX29mZmxpbmVhY2NvdW50X3doaXRlX3BuZ1wiLFhjXSxbXCJjcmVkX29wdGlvbl9vZmZsaW5lYWNjb3VudF93aGl0ZV9zdmdcIixZY10sW1wiZG9jdW1lbnRhdGlvbl9wbmdcIixhdV0sW1wiZG9jdW1lbnRhdGlvbl9zdmdcIixsdV0sW1wiZG9jdW1lbnRhdGlvbl93aGl0ZV9wbmdcIixzdV0sW1wiZG9jdW1lbnRhdGlvbl93aGl0ZV9zdmdcIixjdV0sW1wiZHJvcGRvd25fY2FyZXRfcG5nXCIsdXVdLFtcImRyb3Bkb3duX2NhcmV0X3N2Z1wiLGR1XSxbXCJkcm9wZG93bl9jYXJldF93aGl0ZV9wbmdcIixmdV0sW1wiZHJvcGRvd25fY2FyZXRfd2hpdGVfc3ZnXCIscHVdLFtcImdlbmVyaWNfYXBwX2dpZlwiLGd1XSxbXCJrb3JlYV9jb25zZW50X2NoZWNrX3BuZ1wiLG11XSxbXCJrb3JlYV9jb25zZW50X2NoZWNrX3N2Z1wiLGh1XSxbXCJrb3JlYV9jb25zZW50X3VuY2hlY2tfcG5nXCIsYnVdLFtcImtvcmVhX2NvbnNlbnRfdW5jaGVja19zdmdcIix5dV0sW1wibWFyY2hpbmdfYW50c19naWZcIix2dV0sW1wibWFyY2hpbmdfYW50c193aGl0ZV9naWZcIix3dV0sW1wibWljcm9zb2Z0X2xvZ29fcG5nXCIsU3VdLFtcIm1pY3Jvc29mdF9sb2dvX3doaXRlX3BuZ1wiLHh1XSxbXCJtaWNyb3NvZnRfbG9nb19zdmdcIixQdV0sW1wibWljcm9zb2Z0X2xvZ29fd2hpdGVfc3ZnXCIsT3VdLFtcIm11bHRpcGxheWVyX2pvaW5fcG5nXCIsX3VdLFtcIm11bHRpcGxheWVyX2pvaW5fc3ZnXCIsQ3VdLFtcInBhc3NrZXlfZ2lmXCIsa3VdLFtcInBhc3NrZXlfZXJyb3JfcG5nXCIsQXVdLFtcInBhc3NrZXlfZXJyb3Jfc3ZnXCIsVHVdLFtcInBhc3NrZXlfc3VjY2Vzc19wbmdcIixFdV0sW1wicGFzc2tleV9zdWNjZXNzX3N2Z1wiLGp1XSxbXCJwZW9wbGVfc2hpZWxkX3BuZ1wiLEl1XSxbXCJwZW9wbGVfc2hpZWxkX3doaXRlX3BuZ1wiLEx1XSxbXCJwZXJzb25hbF9hY2NvdW50X3BuZ1wiLER1XSxbXCJwZXJzb25hbF9hY2NvdW50X3N2Z1wiLE51XSxbXCJwZXJzb25hbF9hY2NvdW50X3doaXRlX3BuZ1wiLFJ1XSxbXCJwZXJzb25hbF9hY2NvdW50X3doaXRlX3N2Z1wiLEJ1XSxbXCJwaWNrZXJfYWNjb3VudF9hYWRfcG5nXCIsVXVdLFtcInBpY2tlcl9hY2NvdW50X2FhZF9zdmdcIixGdV0sW1wicGlja2VyX2FjY291bnRfYWRkX3BuZ1wiLE11XSxbXCJwaWNrZXJfYWNjb3VudF9hZGRfc3ZnXCIsenVdLFtcInBpY2tlcl9hY2NvdW50X21zYV9wbmdcIixIdV0sW1wicGlja2VyX2FjY291bnRfbXNhX3N2Z1wiLFZ1XSxbXCJwaWNrZXJfbW9yZV9wbmdcIixXdV0sW1wicGlja2VyX21vcmVfc3ZnXCIsR3VdLFtcInBpY2tlcl9tb3JlX3doaXRlX3BuZ1wiLCR1XSxbXCJwaWNrZXJfbW9yZV93aGl0ZV9zdmdcIixLdV0sW1wicGlja2VyX3ZlcmlmeV9hdXRoZW50aWNhdG9yX3BuZ1wiLHF1XSxbXCJwaWNrZXJfdmVyaWZ5X2F1dGhlbnRpY2F0b3Jfc3ZnXCIsUXVdLFtcInBpY2tlcl92ZXJpZnlfYXV0aGVudGljYXRvcl93aGl0ZV9wbmdcIixYdV0sW1wicGlja2VyX3ZlcmlmeV9hdXRoZW50aWNhdG9yX3doaXRlX3N2Z1wiLFl1XSxbXCJwaWNrZXJfdmVyaWZ5X2NhbGxfcG5nXCIsWnVdLFtcInBpY2tlcl92ZXJpZnlfY2FsbF9zdmdcIixKdV0sW1wicGlja2VyX3ZlcmlmeV9jYWxsX3doaXRlX3BuZ1wiLGVkXSxbXCJwaWNrZXJfdmVyaWZ5X2NhbGxfd2hpdGVfc3ZnXCIsdGRdLFtcInBpY2tlcl92ZXJpZnlfY29kZV9wbmdcIixuZF0sW1wicGlja2VyX3ZlcmlmeV9jb2RlX3N2Z1wiLHJkXSxbXCJwaWNrZXJfdmVyaWZ5X2NvZGVfd2hpdGVfcG5nXCIsb2RdLFtcInBpY2tlcl92ZXJpZnlfY29kZV93aGl0ZV9zdmdcIixpZF0sW1wicGlja2VyX3ZlcmlmeV9lbWFpbF9wbmdcIixhZF0sW1wicGlja2VyX3ZlcmlmeV9lbWFpbF9zdmdcIixsZF0sW1wicGlja2VyX3ZlcmlmeV9lbWFpbF93aGl0ZV9wbmdcIixzZF0sW1wicGlja2VyX3ZlcmlmeV9lbWFpbF93aGl0ZV9zdmdcIixjZF0sW1wicGlja2VyX3ZlcmlmeV9mbHVlbnRfYXV0aGVudGljYXRvcl9zdmdcIix1ZF0sW1wicGlja2VyX3ZlcmlmeV9mbHVlbnRfYXV0aGVudGljYXRvcl93aGl0ZV9zdmdcIixkZF0sW1wicGlja2VyX3ZlcmlmeV9zbXNfcG5nXCIsZmRdLFtcInBpY2tlcl92ZXJpZnlfc21zX3N2Z1wiLHBkXSxbXCJwaWNrZXJfdmVyaWZ5X3Ntc193aGl0ZV9wbmdcIixnZF0sW1wicGlja2VyX3ZlcmlmeV9zbXNfd2hpdGVfc3ZnXCIsbWRdLFtcInNldHRpbmdzX3BuZ1wiLGhkXSxbXCJzZXR0aW5nc19zdmdcIixiZF0sW1wic2lnbmluX29wdGlvbnNfcG5nXCIseWRdLFtcInNpZ25pbl9vcHRpb25zX3N2Z1wiLHZkXSxbXCJzaWduaW5fb3B0aW9uc193aGl0ZV9wbmdcIix3ZF0sW1wic2lnbmluX29wdGlvbnNfd2hpdGVfc3ZnXCIsU2RdLFtcInRpbWVyX3BuZ1wiLFBkXSxbXCJ0aW1lcl9zdmdcIix4ZF0sW1widXNlcl93aXRoX2ZhbWlseV9wbmdcIixPZF0sW1widXNlcl93aXRoX2ZhbWlseV9zdmdcIixfZF0sW1widXNlcl93aXRoX2ZhbWlseV93aGl0ZV9wbmdcIixDZF0sW1widXNlcl93aXRoX2ZhbWlseV93aGl0ZV9zdmdcIixrZF0sW1wieGJveF9yZW1vdGVfcXJjb2RlX3N2Z1wiLEFkXV0pO2Z1bmN0aW9uIEVkKGUsdCxuKXt2YXIgcj1cIlwiLmNvbmNhdCh0LFwiX1wiKS5jb25jYXQobik7aWYoZS5oYXMocikpcmV0dXJuIGUuZ2V0KHIpO3Rocm93IG5ldyBFcnJvcihcIkltYWdlIG5vdCBmb3VuZDogXCIuY29uY2F0KHIpKX1mdW5jdGlvbiBqZChlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06QWk/XCJzdmdcIjpcInBuZ1wiO3JldHVybiBFZChUZCxlLHQpfXZhciBJZD1cIjZweFwiLExkPVwiMTBweFwiLERkPVwiMHB4XCIsTmQ9XCJzb2xpZFwiLFJkPVwiMHB4XCIsQmQ9XCIxcHhcIixVZD1cIiM2NjZcIixGZD1cIjM2cHhcIixNZD1cIiMzMjMyMzJcIix6ZD1cIiMwMDY3YjhcIixIZD1cIiNkMTM0MzhcIixWZD1cIiNlODExMjNcIjtmdW5jdGlvbiBXZChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gR2QoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/V2QoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXskZChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6V2QoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gJGQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBLZD1ibyh7Y2hlY2tib3g6e21hcmdpblRvcDpcIjEycHhcIixwb3NpdGlvbjpcInJlbGF0aXZlXCIsZGlzcGxheTpcImJsb2NrXCIsXCImIGlucHV0W3R5cGU9J2NoZWNrYm94J11cIjp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLG1hcmdpbkxlZnQ6XCItMjhweFwifSxcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pICYgaW5wdXRbdHlwZT0nY2hlY2tib3gnXVwiOnttYXJnaW5SaWdodDpcIi0yOHB4XCJ9LFwiJiBsYWJlbFwiOnttaW5IZWlnaHQ6XCIyMHB4XCIscGFkZGluZ0xlZnQ6XCIyOHB4XCIsY3Vyc29yOlwicG9pbnRlclwiLGRpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIixtYXhXaWR0aDpcIjEwMCVcIn0sXCI6Z2xvYmFsKFtkaXI9J3J0bCddKSAmIGxhYmVsXCI6e3BhZGRpbmdSaWdodDpcIjI4cHhcIn19fSkscWQ9Ym8oe3RleHRib3g6e3dpZHRoOlwiMTAwJVwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIixkaXNwbGF5OlwiYmxvY2tcIixcIiYgaW5wdXRcIjpHZChHZChHZChHZChHZChHZCh7aGVpZ2h0OlwiXCIuY29uY2F0KEZkKSx3aWR0aDpcIjEwMCVcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0seG8uYm9yZGVyU3R5bGUoXCJcIi5jb25jYXQoTmQpKSkseG8uYm9yZGVyUmFkaXVzKFwiXCIuY29uY2F0KDApKSkseG8uYm9yZGVyV2lkdGgoXCJcIi5jb25jYXQoUmQpLFwiXCIuY29uY2F0KFJkKSxcIlwiLmNvbmNhdChcIjFweFwiKSxcIlwiLmNvbmNhdChSZCkpKSx4by5ib3JkZXJDb2xvcihcIlwiLmNvbmNhdChVZCkpKSx4by5wYWRkaW5nKFwiXCIuY29uY2F0KElkKSxcIlwiLmNvbmNhdChMZCksXCJcIi5jb25jYXQoSWQpLFwiXCIuY29uY2F0KERkKSkpLFJpKCk/e1wiOjotbXMtcmV2ZWFsXCI6R2QoR2Qoe2hlaWdodDpcIjEwMCVcIn0seG8ucGFkZGluZyhcIjRweFwiLFwiOHB4XCIpKSx7fSx7bWFyZ2luTGVmdDpcIjRweFwiLG1hcmdpblJpZ2h0OlwiLThweFwiLFwiOmhvdmVyXCI6e2NvbG9yOnpkfSxcIjphY3RpdmVcIjp7Y29sb3I6XCIjRkZGXCIsYmFja2dyb3VuZENvbG9yOnpkfX0pfTp7fSksXCImIGlucHV0OmhvdmVyXCI6R2Qoe30seG8uYm9yZGVyQ29sb3IoTWQpKSxcIiYgaW5wdXQ6Zm9jdXNcIjpHZCh7fSx4by5ib3JkZXJDb2xvcih6ZCkpLFwiJiBpbnB1dC5oYXMtZXJyb3JcIjpHZChHZCh7fSx4by5ib3JkZXJDb2xvcihIZCkpLFJpKCk/e1wiOjotbXMtcmV2ZWFsXCI6e1wiOmhvdmVyXCI6e2NvbG9yOlZkfSxcIjphY3RpdmVcIjp7Y29sb3I6XCIjRkZGRkZGXCIsYmFja2dyb3VuZENvbG9yOlZkfX19Ont9KX0saW5saW5lSW5wdXQ6e1wiQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzMjBweClcIjp7bWFyZ2luQm90dG9tOlwiOHB4XCJ9fSx3aXRoSW5saW5lQ29tcG9uZW50V3JhcHBlcjp7ZGlzcGxheTpcImZsZXhcIixmbGV4RGlyZWN0aW9uOlwicm93XCIsXCJAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDMyMHB4KVwiOntmbGV4RGlyZWN0aW9uOlwiY29sdW1uXCJ9fSxlbWFpbElucHV0RG9tYWluV3JhcHBlcjp7ZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiZW5kXCIsbWFyZ2luQm90dG9tOlwiMTZweFwiLG1hcmdpbkxlZnQ6XCI4cHhcIix3aGl0ZVNwYWNlOlwibm93cmFwXCIsXCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOnttYXJnaW5MZWZ0OlwidW5zZXRcIixtYXJnaW5SaWdodDpcIjhweFwifSxcIkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzIwcHgpXCI6e3dpZHRoOlwiMTAwJVwiLFwiOmdsb2JhbChbZGlyPSdydGwnXSlcIjp7bWFyZ2luUmlnaHQ6XCIwcHhcIn0sXCI6Z2xvYmFsKFtkaXI9J2x0ciddKVwiOnttYXJnaW5MZWZ0OlwiMHB4XCJ9fX0sZW1haWxJbnB1dERvbWFpblNwYW46R2QoR2Qoe2hlaWdodDpcIlwiLmNvbmNhdChGZCl9LHhvLmJvcmRlckJvdHRvbShCZCxcInNvbGlkXCIsVWQpKSx4by5wYWRkaW5nKFwiOHB4XCIsXCJcIi5jb25jYXQoTGQpLFwiXCIuY29uY2F0KElkKSxcIlwiLmNvbmNhdChEZCkpKSxlbWFpbElucHV0RG9tYWluU2VsZWN0OkdkKEdkKHtoZWlnaHQ6XCJcIi5jb25jYXQoRmQpfSx4by5ib3JkZXJCb3R0b20oQmQsXCJzb2xpZFwiLFVkKSkse30se01vekFwcGVhcmFuY2U6XCJub25lXCIsV2Via2l0QXBwZWFyYW5jZTpcIm5vbmVcIixhcHBlYXJhbmNlOlwibm9uZVwiLGJhY2tncm91bmRJbWFnZTondXJsKFwiJy5jb25jYXQoamQoXCJkcm9wZG93bl9jYXJldFwiLFwic3ZnXCIpLCdcIiknKSxiYWNrZ3JvdW5kUmVwZWF0Olwibm8tcmVwZWF0XCIsYmFja2dyb3VuZFBvc2l0aW9uWDpcInJpZ2h0XCIsYmFja2dyb3VuZFBvc2l0aW9uWTpcIjhweFwiLGJhY2tncm91bmRTaXplOlwiMjRweFwiLHBhZGRpbmdSaWdodDpcIjIwcHggIWltcG9ydGFudFwiLHBhZGRpbmdMZWZ0OlwiNXB4ICFpbXBvcnRhbnRcIixcIjpmb2N1c1wiOkdkKEdkKHtiYWNrZ3JvdW5kQ29sb3I6XCJcIi5jb25jYXQoXCIjZWVlZWVlXCIpfSx4by5ib3JkZXJXaWR0aChcIlwiLmNvbmNhdChCZCkpKSx4by5ib3JkZXJDb2xvcihcIlwiLmNvbmNhdCh6ZCkpKSxcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pXCI6e3BhZGRpbmdMZWZ0OlwiMjBweCAhaW1wb3J0YW50XCIscGFkZGluZ1JpZ2h0OlwiNXB4ICFpbXBvcnRhbnRcIixiYWNrZ3JvdW5kUG9zaXRpb25YOlwibGVmdFwifSxcIkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzIwcHgpXCI6e3BhZGRpbmdMZWZ0OlwiMHB4ICFpbXBvcnRhbnRcIixcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pXCI6e3BhZGRpbmdSaWdodDpcIjBweCAhaW1wb3J0YW50XCJ9fX0pLG1hc2tlZElucHV0OntcIi13ZWJraXQtdGV4dC1zZWN1cml0eVwiOlwiZGlzY1wifX0pLFFkPWJvKHtidXR0b25Db250YWluZXI6e2Rpc3BsYXk6XCJmbGV4XCIsZmxleERpcmVjdGlvbjpcInJvd1wiLG1hcmdpblRvcDpcIjZweFwiLG1hcmdpbkJvdHRvbTpcIjEycHhcIixjdXJzb3I6XCJwb2ludGVyXCIsXCImID4gKlwiOntjdXJzb3I6XCJwb2ludGVyXCJ9fSxoaWRkZW5Db250YWluZXI6e2Rpc3BsYXk6XCJub25lXCJ9LGJ1dHRvbjp7d2lkdGg6XCIyMHB4XCIsaGVpZ2h0OlwiMjBweFwiLGNvbG9yOlwiYmx1ZVwifSxsYWJlbDp7bWFyZ2luTGVmdDpcIjhweFwiLG1hcmdpblJpZ2h0OlwiOHB4XCJ9LGRpc2FibGVkTGFiZWw6e2NvbG9yOlwiI2NjY2NjY1wifX0pO2Z1bmN0aW9uIFhkKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBZZChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9YZChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1pkKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpYZChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBaZChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIEpkPWJvKHt0YXJnZXRJbWFnZUNvbnRhaW5lcjp7ZGlzcGxheTpcImZsZXhcIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLG1hcmdpblRvcDpcIjE2cHhcIixtYXJnaW5Cb3R0b206XCI4cHhcIn0sdGFyZ2V0SW1hZ2U6WWQoe2JhY2tncm91bmRDb2xvcjpcIiNmZmZcIixkaXNwbGF5OlwiaW5saW5lXCIsaGVpZ2h0OlwiOTZweFwiLHdpZHRoOlwiMjE2cHhcIn0seG8uYm9yZGVyKFwiMHB4XCIsXCJzb2xpZFwiLFwiI2ZmZlwiKSksbWVudUl0ZW1zOntkaXNwbGF5OlwiZmxleFwiLGp1c3RpZnlDb250ZW50OlwiY2VudGVyXCIsbWFyZ2luQm90dG9tOlwiMTZweFwifSxpbWFnZUJ1dHRvbjpZZCh7YmFja2dyb3VuZENvbG9yOlwiI2ZmZlwiLGN1cnNvcjpcInBvaW50ZXJcIixkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJyb3dcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCJ9LHhvLmJvcmRlcihcIjBweFwiLFwic29saWRcIixcIiNmZmZcIikpLGltYWdlQnV0dG9uVGV4dDp7bWFyZ2luTGVmdDpcIjhweFwifX0pO2Z1bmN0aW9uIGVmKGUsdCl7cmV0dXJuIE5yKFwiXCIuY29uY2F0KGUsXCIge1wiKS5jb25jYXQoQnIodCksXCJ9XCIpKVswXX1mdW5jdGlvbiB0ZihlLHQpe3ZhciBuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYoIW4pe2lmKEFycmF5LmlzQXJyYXkoZSl8fChuPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuZihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBuZihlLHQpfShlKSl8fHQmJmUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aCl7biYmKGU9bik7dmFyIHI9MCxvPWZ1bmN0aW9uKCl7fTtyZXR1cm57czpvLG46ZnVuY3Rpb24oKXtyZXR1cm4gcj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbcisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjpvfX10aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9dmFyIGksYT0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7bj1uLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1uLm5leHQoKTtyZXR1cm4gYT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtsPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgaX19fX1mdW5jdGlvbiBuZihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJmKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fTtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7dmFyIG4scj1OcihlKSxvPXRmKHIpO3RyeXtmb3Ioby5zKCk7IShuPW8ubigpKS5kb25lOyl7dmFyIGk9bi52YWx1ZTtvZihpLHQpfX1jYXRjaChjKXtvLmUoYyl9ZmluYWxseXtvLmYoKX19ZWxzZSBmb3IodmFyIGEgaW4gZSl7dmFyIGw9ZVthXSxzPWVmKGEsbCk7b2Yocyx0KX1yZXR1cm4gdH1mdW5jdGlvbiBvZihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307dC5kPXQuZHx8W10sdC5kLnB1c2goZSl9ZnVuY3Rpb24gYWYoZSx0KXt2YXIgbj1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKCFuKXtpZihBcnJheS5pc0FycmF5KGUpfHwobj1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbGYoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbGYoZSx0KX0oZSkpfHx0JiZlJiZcIm51bWJlclwiPT10eXBlb2YgZS5sZW5ndGgpe24mJihlPW4pO3ZhciByPTAsbz1mdW5jdGlvbigpe307cmV0dXJue3M6byxuOmZ1bmN0aW9uKCl7cmV0dXJuIHI+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW3IrK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6b319dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfXZhciBpLGE9ITAsbD0hMTtyZXR1cm57czpmdW5jdGlvbigpe249bi5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9bi5uZXh0KCk7cmV0dXJuIGE9ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7bD0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IGl9fX19ZnVuY3Rpb24gbGYoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBzZihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD17fSxuPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPWUucmVuZGVyZXIuaWQ7aWYoIXRbcl0pe3ZhciBvLGk9YWYobik7dHJ5e2ZvcihpLnMoKTshKG89aS5uKCkpLmRvbmU7KXt2YXIgYT1vLnZhbHVlO2UucmVuZGVyZXIuaW5zZXJ0Q1NTUnVsZXMocmYoYSkpfX1jYXRjaChsKXtpLmUobCl9ZmluYWxseXtpLmYoKX10W3JdPSEwfX19KGUpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW1vKCk7cmV0dXJuIHQoe3JlbmRlcmVyOmV9KX19ZnVuY3Rpb24gY2YoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHVmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2NmKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZGYoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmNmKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGRmKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgZmYscGY9dWYodWYoe2JvcmRlclRvcFdpZHRoOlwiMHB4XCIsYm9yZGVyTGVmdFdpZHRoOlwiMHB4XCIsYm9yZGVyUmlnaHRXaWR0aDpcIjBweFwiLGJvcmRlckJvdHRvbVdpZHRoOlwiMXB4XCIscGFkZGluZ1RvcDpcIjZweFwiLHBhZGRpbmdCb3R0b206XCI2cHhcIixwYWRkaW5nTGVmdDpcIjBweFwiLHBhZGRpbmdSaWdodDpcIjBweFwiLGhlaWdodDpcIjM2cHhcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0seG8uYm9yZGVyU3R5bGUoXCJzb2xpZFwiKSkseG8uYm9yZGVyQ29sb3IoXCJyZ2JhKDAsIDAsIDAsIDAuNilcIikpLGdmPXVmKHt9LHhvLmJvcmRlckNvbG9yKEJvKSksbWY9dWYodWYodWYoe2JhY2tncm91bmRDb2xvcjpcIiNlZWVcIn0seG8uYm9yZGVyV2lkdGgoXCIxcHhcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlckNvbG9yKFwiIzAwNjdiOFwiKSksaGY9dWYodWYodWYoe2JhY2tncm91bmRDb2xvcjpcIiNlZWVcIn0seG8uYm9yZGVyU3R5bGUoXCJzb2xpZFwiKSkseG8uYm9yZGVyV2lkdGgoXCIxcHhcIikpLHhvLmJvcmRlckNvbG9yKEJvKSk7ZnVuY3Rpb24gYmYoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHlmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2JmKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmYoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmJmKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHZmKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgd2Y9e21pbkhlaWdodDpcIjFweFwifSxTZj1zZih7XCIqXCI6e2JveFNpemluZzpcImJvcmRlci1ib3hcIixcIi13ZWJraXQtYm94LXNpemluZ1wiOlwiYm9yZGVyLWJveFwiLFwiLW1vei1ib3gtc2l6aW5nXCI6XCJib3JkZXItYm94XCJ9LGJvZHk6e2ZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6XCJTZWdvZSBVSSwgLWFwcGxlLXN5c3RlbSwgSGVsdmV0aWNhIE5ldWUsIEx1Y2lkYSBHcmFuZGUsIFJvYm90bywgRWJyaW1hLCBOaXJtYWxhIFVJLCBHYWR1Z2ksIFNlZ29lIFhib3ggU3ltYm9sLCBTZWdvZSBVSSBTeW1ib2wsIE1laXJ5byBVSSwgS2htZXIgVUksIFR1bmdhLCBMYW8gVUksIFJhYXZpLCBJc2tvb2xhIFBvdGEsIExhdGhhLCBMZWVsYXdhZGVlLCBNaWNyb3NvZnQgWWFIZWkgVUksIE1pY3Jvc29mdCBKaGVuZ0hlaSBVSSwgTWFsZ3VuIEdvdGhpYywgRXN0cmFuZ2VsbyBFZGVzc2EsIE1pY3Jvc29mdCBIaW1hbGF5YSwgTWljcm9zb2Z0IE5ldyBUYWkgTHVlLCBNaWNyb3NvZnQgUGhhZ3NQYSwgTWljcm9zb2Z0IFRhaSBMZSwgTWljcm9zb2Z0IFlpIEJhaXRpLCBNb25nb2xpYW4gQmFpdGksIE1WIEJvbGksIE15YW5tYXIgVGV4dCwgQ2FtYnJpYSBNYXRoXCIsZm9udFNpemU6XCIuOTM3NXJlbVwiLGxpbmVIZWlnaHQ6XCIxLjI1cmVtXCIsbWFyZ2luOjAsYmFja2dyb3VuZENvbG9yOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAxLjApXCJ9LHByZTp7b3ZlcmZsb3c6XCJhdXRvXCIsZm9udEZhbWlseTpcImluaGVyaXRcIn0sXCJidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhXCI6e2ZvbnRXZWlnaHQ6XCJpbmhlcml0XCIsZm9udEZhbWlseTpcImluaGVyaXRcIixmb250U2l6ZTpcImluaGVyaXRcIixsaW5lSGVpZ2h0OlwiaW5oZXJpdFwiLG1heFdpZHRoOlwiMTAwJVwiLG1hcmdpbjpcIjBweFwifSxcImlucHV0W3R5cGU9J2NoZWNrYm94J11cIjp5Zih7d2lkdGg6XCIyMHB4XCIsaGVpZ2h0OlwiMjBweFwiLGJveFNpemluZzpcImJvcmRlci1ib3hcIn0seG8ucGFkZGluZygwKSksXCJpbnB1dFt0eXBlPSdjaGVja2JveCddOmZvY3VzXCI6e291dGxpbmVXaWR0aDpcIjVweFwiLG91dGxpbmVTdHlsZTpcImF1dG9cIixvdXRsaW5lQ29sb3I6XCItd2Via2l0LWZvY3VzLXJpbmctY29sb3JcIixvdXRsaW5lT2Zmc2V0OjB9LFwiaW5wdXRbdHlwZT0ncmFkaW8nXTpmb2N1c1wiOntvdXRsaW5lV2lkdGg6XCI1cHhcIixvdXRsaW5lU3R5bGU6XCJhdXRvXCIsb3V0bGluZUNvbG9yOlwiLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yXCIsb3V0bGluZU9mZnNldDpcIi0xcHhcIn0sXCJpbnB1dFt0eXBlPSdudW1iZXInXVwiOntvdXRsaW5lOlwibm9uZVwiLGJvcmRlclJhZGl1czpcIjBweFwiLGhlaWdodDpcIjM2cHhcIixib3JkZXJUb3BXaWR0aDpcIjBweFwiLGJvcmRlclJpZ2h0V2lkdGg6XCIwcHhcIixib3JkZXJMZWZ0V2lkdGg6XCIwcHhcIixib3JkZXJCb3R0b21XaWR0aDpcIjFweFwiLHBhZGRpbmdUb3A6XCI2cHhcIixwYWRkaW5nUmlnaHQ6XCIxMHB4XCIscGFkZGluZ0JvdHRvbTpcIjZweFwiLHBhZGRpbmdMZWZ0OlwiMHB4XCIsYm9yZGVyQ29sb3I6XCJyZ2JhKDAsMCwwLDAuNilcIixib3JkZXJTdHlsZTpcInNvbGlkXCJ9LFwiaW5wdXRbdHlwZT0nbnVtYmVyJ106Zm9jdXNcIjp7Ym9yZGVyQ29sb3I6emR9LGE6e2NvbG9yOlwiIzAwNjdiOFwiLFwidGV4dC1kZWNvcmF0aW9uXCI6XCJub25lXCJ9LFwiYTpob3ZlclwiOntcInRleHQtZGVjb3JhdGlvblwiOlwidW5kZXJsaW5lXCIsY29sb3I6XCIjNjY2XCJ9LHVsOntwYWRkaW5nTGVmdDowLGxpc3RTdHlsZTpcIm5vbmVcIn0sXCJvbCwgdWxcIjp7bWFyZ2luVG9wOlwiMjBweFwiLG1hcmdpbkJvdHRvbTpcIjIwcHhcIn0sbGk6e21hcmdpblRvcDpcIjEycHhcIixtYXJnaW5Cb3R0b206XCIxMnB4XCJ9LHNlbGVjdDp5Zih7fSxwZiksXCJzZWxlY3Q6Zm9jdXNcIjp5Zih5Zih7fSxwZiksbWYpLG9wdGlvbjp7bWF4V2lkdGg6XCIxMDAlXCIsbGluZUhlaWdodDpcImluaGVyaXRcIixmb250V2VpZ2h0Olwibm9ybWFsXCIsZGlzcGxheTpcImJsb2NrXCIsd2hpdGVTcGFjZTpcIm5vd3JhcFwiLG1pbkhlaWdodDpcIjEuMmVtXCIscGFkZGluZ1RvcDpcIjBweFwiLHBhZGRpbmdSaWdodDpcIjJweFwiLHBhZGRpbmdCb3R0b206XCIxcHhcIixwYWRkaW5nTGVmdDpcIjJweFwiLGJhY2tncm91bmRDb2xvcjpcIiNmZmZcIn0sbGFiZWw6e2Rpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIixtYXhXaWR0aDpcIjEwMCVcIn0sXCIjcm9vdFwiOndmfSksUGY9Ym8oe2RpcmVjdGlvbldyYXBwZXI6d2YsZ2FtZXBhZE5hdmlnYXRpb25XcmFwcGVyOnlmKHtwb3NpdGlvbjpcImFic29sdXRlXCIsaGVpZ2h0OlwiMTAwJVwiLHdpZHRoOlwiMTAwJVwiLHRvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSx4by5vdmVyZmxvdyhcImF1dG9cIikpLG91dGVyOntkaXNwbGF5OlwidGFibGVcIixwb3NpdGlvbjpcImFic29sdXRlXCIsaGVpZ2h0OlwiMTAwJVwiLHdpZHRoOlwiMTAwJVwiLHRvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxtaWRkbGU6dmYoe2Rpc3BsYXk6XCJ0YWJsZS1jZWxsXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwifSxLbyx7dmVydGljYWxBbGlnbjpcInRvcFwifSksaW5uZXI6eWYoeWYoeWYoe21hcmdpbkxlZnQ6XCJhdXRvXCIsbWFyZ2luUmlnaHQ6XCJhdXRvXCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLG1heFdpZHRoOlwiXCIuY29uY2F0KEhvLFwicHhcIiksd2lkdGg6XCJjYWxjKDEwMCUgLSA0MHB4KVwifSx4by5wYWRkaW5nKFwiXCIuY29uY2F0KEdvLFwicHhcIikpKSx7fSx7bWFyZ2luQm90dG9tOlwiXCIuY29uY2F0KFVvLFwicHhcIiksYmFja2dyb3VuZENvbG9yOnpvLFdlYmtpdEJveFNoYWRvdzokbyxcIi1tb3otYm94LXNoYWRvd1wiOiRvLGJveFNoYWRvdzokbyxtaW5XaWR0aDpcIlwiLmNvbmNhdCgzMjAsXCJweFwiKSxtaW5IZWlnaHQ6XCJcIi5jb25jYXQoVm8sXCJweFwiKX0seG8ub3ZlcmZsb3coXCJoaWRkZW5cIikpLHt9LChmZj17XCImIGhhcy1wb3B1cFwiOnttYXJnaW5Cb3R0b206XCIyMHB4XCJ9fSx2ZihmZixLbyx5Zih5Zih7fSx4by5wYWRkaW5nKFwiXCIuY29uY2F0KFdvLFwicHhcIikpKSx7fSx7bWFyZ2luVG9wOlwiXCIuY29uY2F0KDAsXCJweFwiKSxtYXJnaW5Cb3R0b206XCJcIi5jb25jYXQoMjgsXCJweFwiKSx3aWR0aDpcIjEwMHZ3XCIsbWluV2lkdGg6XCJhdXRvXCIsXCItd2Via2l0LWJveC1zaGFkb3dcIjpcIm5vbmVcIixcIi1tb3otYm94LXNoYWRvd1wiOlwibm9uZVwiLFwiYm94LXNoYWRvd1wiOlwibm9uZVwifSx4by5ib3JkZXIoMCkpKSx2ZihmZixcInpJbmRleFwiLDEpLGZmKSksaW5uZXJXaXRoUG9wdXA6dmYoe21hcmdpbkJvdHRvbTpcIjIwcHhcIn0sS28se3BhZGRpbmdCb3R0b206MCxtYXJnaW5Cb3R0b206MH0pLGlubmVyV2l0aEFwcEJyYW5kaW5nOnZmKHt9LEtvLHtwYWRkaW5nQm90dG9tOlwiXCIuY29uY2F0KFdvLFwicHhcIiksbWFyZ2luQm90dG9tOlwiMjBweFwifSksaW5uZXJBbHdheXNTaG93QmFja2dyb3VuZDp2Zih7fSxLbyx5Zih5Zih7fSx4by5ib3JkZXIoXCIxcHhcIixcInNvbGlkXCIsXCJyZ2JhKDAsIDAsIDAsIDAuNClcIikpLHt9LHtib3hTaGFkb3c6JG8sbWluV2lkdGg6XCIzMDRweFwiLHdpZHRoOlwiY2FsYygxMDB2dyAtIDE2cHgpXCJ9KSksaGVhZGVyTWFyZ2luOnttYXJnaW5Ub3A6XCI0OHB4XCJ9LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LGxpZ2h0Ym94Q292ZXI6e2JhY2tncm91bmRDb2xvcjpcIndoaXRlXCIsb3BhY2l0eTowLGZpbHRlcjpcImFscGhhKG9wYWNpdHk9MClcIix6SW5kZXg6LTEsaGVpZ2h0OlwiMTAwJVwiLHdpZHRoOlwiMTAwJVwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6MCxsZWZ0OjAsdHJhbnNpdGlvblByb3BlcnR5OlwiYWxsIC41cyBlYXNlLWluXCIsXCItby10cmFuc2l0aW9uXCI6XCJhbGwgLjVzIGVhc2UtaW5cIixcIi1tb3otdHJhbnNpdGlvblwiOlwiYWxsIC41cyBlYXNlLWluXCIsXCItd2Via2l0LXRyYW5zaXRpb25cIjpcImFsbCAuNXMgZWFzZS1pblwifSxkaXNhYmxlTGlnaHRib3g6e3pJbmRleDoxMCxvcGFjaXR5Oi41LGZpbHRlcjpcImFscGhhKG9wYWNpdHk9MClcIn0scGFnaW5hdGlvblZpZXc6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIixtaW5IZWlnaHQ6XCJcIi5jb25jYXQoMjA2LFwicHhcIil9LHBhZ2luYXRpb25WaWV3V2l0aElkZW50aXR5QmFubmVyOntwb3NpdGlvbjpcInJlbGF0aXZlXCIsbWluSGVpZ2h0OlwiXCIuY29uY2F0KDE3MCxcInB4XCIpfSx3aWRlOnttYXhXaWR0aDpcIlwiLmNvbmNhdCg2NDAsXCJweFwiKX0sZm9ybUdyb3VwOnttYXJnaW5Cb3R0b206XCJcIi5jb25jYXQoRm8sXCJweFwiKX0sZm9ybUdyb3VwSGVhZGVyOnttYXJnaW5Ub3A6XCIzNnB4XCIsbWFyZ2luQm90dG9tOlwiMzZweFwifSxmb3JtQ29udHJvbDp7ZGlzcGxheTpcImJsb2NrXCIsd2lkdGg6XCIxMDAlXCIsYmFja2dyb3VuZEltYWdlOlwibm9uZVwifSxmb3JtQ29udHJvbFJlbGF0aXZlOntkaXNwbGF5OlwiYmxvY2tcIix3aWR0aDpcIjEwMCVcIixiYWNrZ3JvdW5kSW1hZ2U6XCJub25lXCIscG9zaXRpb246XCJyZWxhdGl2ZVwifSxyb3c6eWYoe21hcmdpbkxlZnQ6MCxtYXJnaW5SaWdodDowfSx3ZiksdGV4dEJvZHk6eWYoe21hcmdpblRvcDpcIlwiLmNvbmNhdChGbyxcInB4XCIpLG1hcmdpbkJvdHRvbTpcIlwiLmNvbmNhdCgxMixcInB4XCIpfSx4by5wYWRkaW5nKDApKSx0ZXh0Q2FwdGlvbjp5Zih5Zih7Zm9udFNpemU6XCIwLjc1cmVtXCIsbGluZUhlaWdodDpcIi44NzVyZW1cIixmb250V2VpZ2h0OlwiNDAwXCJ9LHhvLm1hcmdpbihcIi41cmVtIDAgLjVyZW0gMFwiKSkse30se3BhZGRpbmdUb3A6XCIycHhcIixwYWRkaW5nQm90dG9tOlwiMnB4XCJ9KSxub01hcmdpbkJvdHRvbTp7bWFyZ2luQm90dG9tOjB9LG5vTWFyZ2luVG9wOnttYXJnaW5Ub3A6MH0sb3ZlckZsb3dIaWRkZW46eWYoe30seG8ub3ZlcmZsb3coXCJoaWRkZW5cIikpLHRleHRCbG9ja0JvZHk6e3dvcmRXcmFwOlwiYnJlYWstd29yZFwiLHdoaXRlU3BhY2U6XCJwcmUtd3JhcFwifSxzZWN0aW9uOnttYXJnaW5Ub3A6MCxtYXJnaW5Cb3R0b206MH0sdGV4dENlbnRlcjp7dGV4dEFsaWduOlwiY2VudGVyXCJ9LHZpc2liaWxpdHlIaWRkZW46e3Zpc2liaWxpdHk6XCJoaWRkZW5cIn0sbW92ZU9mZlNjcmVlbjp5Zih7cG9zaXRpb246XCJmaXhlZFwiLGJvdHRvbTpcIjBweFwiLHJpZ2h0OlwiMHB4XCIsaGVpZ2h0OlwiMHB4ICFpbXBvcnRhbnRcIix3aWR0aDpcIjBweCAhaW1wb3J0YW50XCIsb3BhY2l0eTowLGZpbHRlcjpcImFscGhhKG9wYWNpdHk9MClcIn0seG8ub3ZlcmZsb3coXCJoaWRkZW5cIikpLHBvc2l0aW9uQnV0dG9uczp7XCImID4gZGl2Om50aC1jaGlsZCgxKVwiOntkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCIsd2lkdGg6XCIxMDAlXCJ9fSxwb3NpdGlvbkJ1dHRvbnNXaXRoQm90dG9tTWFyZ2luOntcIiYgPiBkaXY6bnRoLWNoaWxkKDEpXCI6e2Rpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIix3aWR0aDpcIjEwMCVcIixtYXJnaW5Cb3R0b206XCJcIi5jb25jYXQoMzYsXCJweFwiKX19LGlucHV0Q29udGFpbmVyV2l0aG91dEJvaWxlclBsYXRlOntcIiYgPiBkaXY6bnRoLWNoaWxkKDEpXCI6e21hcmdpbkJvdHRvbTpcIlwiLmNvbmNhdCgzNixcInB4XCIpfX0saW5wdXRDb250YWluZXJXaXRoQm9pbGVyUGxhdGU6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIn0sdHJhbnNwYXJlbnQ6e2JhY2tncm91bmRDb2xvcjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC42NSlcIn0sYWxlcnRNYXJnaW5Cb3R0b206e21hcmdpbkJvdHRvbTpcIjEycHhcIn0sYWxlcnRFcnJvcjp5Zih7Y29sb3I6Qm99LHhvLm1hcmdpbihcIlwiLmNvbmNhdChcIjBweFwiKSkpLGFuY2hvclNpemU6e2ZvbnRTaXplOlwiMC44NXJlbVwifSxvcmRlcmVkTGlzdDp7cGFkZGluZ0xlZnQ6XCIxNXB4XCJ9LGRpc3BsYXlTaWduOnt0ZXh0QWxpZ246XCJjZW50ZXJcIixmb250U2l6ZTpcIjIuNXJlbVwiLG1hcmdpblRvcDpcIlwiLmNvbmNhdChGbyxcInB4XCIpLG1hcmdpbkJvdHRvbTpcIlwiLmNvbmNhdChGbyxcInB4XCIpfSxkaXNwbGF5U2lnbkNvbnRhaW5lcjp7XCI6OmJlZm9yZVwiOntjb250ZW50OidcIlwiJyxkaXNwbGF5OlwidGFibGVcIn0sXCI6OmFmdGVyXCI6e2NsZWFyOlwiYm90aFwiLGNvbnRlbnQ6J1wiXCInLGRpc3BsYXk6XCJ0YWJsZVwifX0sZXJyb3I6e2NvbG9yOkJvfSxidXR0b25NYXJnaW46e2Rpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIixtYXJnaW5Cb3R0b206XCIzNnB4XCIsd2lkdGg6XCIxMDAlXCJ9LGNlbnRlckJsb2NrOntkaXNwbGF5OlwiYmxvY2tcIixtYXJnaW5MZWZ0OlwiYXV0b1wiLG1hcmdpblJpZ2h0OlwiYXV0b1wifSxsaW5rQnV0dG9uRm9udFNpemU6e2ZvbnRTaXplOlwiLjgxMjVyZW1cIn0sd3JhcENvbnRlbnQ6e3dvcmRXcmFwOlwiYnJlYWstd29yZFwifSxmb3JtRmllbGRMYWJlbDp7ZGlzcGxheTpcImlubGluZS1ibG9ja1wiLGZvbnRTaXplOlwiMC44NXJlbVwiLGZvbnRXZWlnaHQ6XCI2MDBcIixsaW5lSGVpZ2h0OlwiMS4yNXJlbVwiLG1heFdpZHRoOlwiMTAwJVwiLHBhZGRpbmdCb3R0b206XCIwLjIyN3B4XCIscGFkZGluZ1RvcDpcIjAuMjI3cHhcIn0sY29udGFpbmVyV2l0aFBhZGRpbmc6e21pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdMZWZ0OlwiMnB4XCIscGFkZGluZ1JpZ2h0OlwiMnB4XCIscG9zaXRpb246XCJyZWxhdGl2ZVwifSxwYXJhZ3JhcGhTcGFjaW5nOnttYXJnaW5Ub3A6XCIxNHB4XCIsbWFyZ2luQm90dG9tOlwiMTRweFwifSxsZWdhbFdhcm5pbmc6e2ZvbnRTaXplOlwiLjc1cmVtXCIsbGluZUhlaWdodDpcIi44NzVyZW1cIixmb250V2VpZ2h0OlwiNDAwXCIscGFkZGluZ0JvdHRvbTpcIjJweFwiLHBhZGRpbmdUb3A6XCIycHhcIixtYXJnaW5Ub3A6XCI4cHhcIixtYXJnaW5Cb3R0b206XCI4cHhcIn0saW1hZ2VDZW50ZXI6e2Rpc3BsYXk6XCJmbGV4XCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIn0sc3ViVGV4dDp7Zm9udFNpemU6XCIxNHB4XCIsbWFyZ2luQm90dG9tOlwiNDhweFwifSxib3R0b21Db250YWluZXJNYXJnaW46e21hcmdpbkJvdHRvbTpcIjQ4cHhcIn0scGFzc2tleUltYWdlOnt3aWR0aDpcIjI3NXB4XCIsaGVpZ2h0OlwiMjAwcHhcIn19KTtmdW5jdGlvbiB4ZihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gT2YoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/eGYoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtfZihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6eGYoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gX2YoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBDZj1ibyh7ZXJyb3JDb21wb25lbnRTdHlsZXM6T2Yoe3dpZHRoOlwiOTAlXCJ9LHhvLm1hcmdpbigwLFwiYXV0b1wiKSksZXJyb3JUaXRsZVN0eWxlczpPZih7Zm9udFNpemU6XCIzNHB4XCIsZm9udFdlaWdodDpcIjIwMFwiLGxpbmVIZWlnaHQ6XCI0MHB4XCJ9LHhvLnBhZGRpbmcoXCIyOHB4LCAwcHhcIikpfSk7ZnVuY3Rpb24ga2YoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEFmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2tmKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7VGYoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmtmKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFRmKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgRWY9Ym8oe2Jhbm5lcjpBZihBZih7d2lkdGg6XCIxMDAlXCIsZGlzcGxheTpcInRhYmxlXCIsdGFibGVMYXlvdXQ6XCJmaXhlZFwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIixtYXJnaW5MZWZ0OlwiYXV0b1wiLG1hcmdpblJpZ2h0OlwiYXV0b1wiLGNvbG9yOlwiIzFCMUIxQlwiLGJhY2tncm91bmRDb2xvcjpcIiNmZmZmZmZcIn0seG8ucGFkZGluZyhcIlwiLmNvbmNhdChXbyxcInB4XCIpLFwiXCIuY29uY2F0KEdvLFwicHhcIikpKSx7fSxUZih7Zm9udFNpemU6XCIxM3B4XCIsbWF4V2lkdGg6XCJcIi5jb25jYXQoSG8sXCJweFwiKSxtaW5XaWR0aDpcIlwiLmNvbmNhdCgzMjAsXCJweFwiKSxXZWJraXRCb3hTaGFkb3c6JG8sXCItbW96LWJveC1zaGFkb3dcIjokbyxib3hTaGFkb3c6JG8sbWFyZ2luQm90dG9tOlwiXCIuY29uY2F0KFVvLFwicHhcIil9LEtvLEFmKEFmKHtiYWNrZ3JvdW5kQ29sb3I6XCIjZjJmMmYyXCJ9LHhvLnBhZGRpbmcoXCJcIi5jb25jYXQoV28sXCJweFwiKSkpLHt9LHtXZWJraXRCb3hTaGFkb3c6XCJub25lXCIsXCItbW96LWJveC1zaGFkb3dcIjpcIm5vbmVcIixib3hTaGFkb3c6XCJub25lXCIsdGFibGVMYXlvdXQ6XCJhdXRvXCJ9KSkpLGJhbm5lclZlcnRpY2FsU3BsaXQ6e3BhZGRpbmdMZWZ0OlwiMTRweFwiLHBhZGRpbmdSaWdodDpcIjE0cHhcIix0YWJsZUxheW91dDpcImF1dG9cIn0sdGFibGVSb3c6e2Rpc3BsYXk6XCJ0YWJsZS1yb3dcIn0sdGFibGVDZWxsOntkaXNwbGF5OlwidGFibGUtY2VsbFwiLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixcIjpmaXJzdC1jaGlsZFwiOnt3aWR0aDpcIjEwMCVcIn19LGJvbGQ6e2ZvbnRXZWlnaHQ6XCJib2xkXCJ9LG92ZXJyaWRlTHRyOntcInRleHQtYWxpZ25cIjpcImxlZnRcIn0saGVhZGVyOnttYXJnaW5Cb3R0b206XCIxMHB4XCJ9LGhlYWRpbmdUZXh0Ontmb250U2l6ZTpcIjE1cHhcIixmb250V2VpZ2h0OlwiYm9sZFwifSx0cmFjZVNlY3Rpb246e21hcmdpblRvcDpcIjEwcHhcIn0sZGV0YWlsc05vdGlmaWNhdGlvbjp7bWFyZ2luTGVmdDpcIjVweFwiLGNvbG9yOlwiIzEwN0MxMFwifSxjb3B5TGluazp7XCJ0ZXh0LWRlY29yYXRpb25cIjpcIm5vbmVcIixmb250U2l6ZTpcIjEzcHhcIn0sY2xvc2VCdXR0b246QWYoQWYoe30seG8uYm9yZGVyKFwiMFwiKSkse30se2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsY3Vyc29yOlwicG9pbnRlclwiLG1pbldpZHRoOlwiZml0LWNvbnRlbnRcIn0seG8ucGFkZGluZyhcIjBcIikpLHdpZGU6e21heFdpZHRoOlwiXCIuY29uY2F0KDY0MCxcInB4XCIpfX0pLGpmPWJvKHt0cmFjZVNlY3Rpb246e21hcmdpblRvcDpcIjEwcHhcIn0sdHJhY2VMaW5rOntcInRleHQtZGVjb3JhdGlvblwiOlwibm9uZVwiLGZvbnRTaXplOlwiMTNweFwifX0pO2Z1bmN0aW9uIElmKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBMZihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9JZihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0RmKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpJZihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBEZihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIE5mPWJvKHtvdXRlcjp7cG9zaXRpb246XCJmaXhlZFwiLHpJbmRleDoxMDAsYmFja2dyb3VuZENvbG9yOlwicmdiYSgwLCAwLCAwLCAwLjU1KVwifSxtaWRkbGU6e2Rpc3BsYXk6XCJ0YWJsZS1jZWxsXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwifSxpbm5lcjpMZihMZihMZih7cG9zaXRpb246XCJyZWxhdGl2ZVwiLG1hcmdpbkxlZnQ6XCJhdXRvXCIsbWFyZ2luUmlnaHQ6XCJhdXRvXCJ9LHhvLnBhZGRpbmcoXCIyOHB4XCIpKSx7fSx7bWF4V2lkdGg6XCJcIi5jb25jYXQoNTYyLFwicHhcIiksYmFja2dyb3VuZENvbG9yOnpvfSx4by5ib3JkZXIoXCIycHhcIixcInNvbGlkXCIsXCIjNEY3NEIyXCIpKSx7fSx7ekluZGV4OjEwMH0pLGZ1bGxTY3JlZW46e3Bvc2l0aW9uOlwiZml4ZWRcIix6SW5kZXg6MTAwLG1pbldpZHRoOlwiMTAwJVwiLG1pbkhlaWdodDpcIjEwMCVcIn0saGVhZGVyOntkaXNwbGF5OlwiZmxleFwifSxjb250ZW50Ontwb3NpdGlvbjpcInJlbGF0aXZlXCIsXCImIGFcIjp7ZGlzcGxheTpcImlubGluZS1ibG9ja1wiLGJveFNoYWRvdzpcIm5vbmVcIixcIjpmb2N1c1wiOntib3hTaGFkb3c6XCIwIDAgMCAxLjVweCBibGFja1wifX19LGZvbnQ6e2ZvbnRXZWlnaHQ6NDAwLGxpbmVIZWlnaHQ6XCIxLjI1cmVtXCJ9LGJ1dHRvbkNvbnRhaW5lcjpMZihMZih7dGV4dEFsaWduOlwicmlnaHRcIn0seG8ucGFkZGluZyhcIjEwcHhcIixcIjBcIixcIjBcIixcIjBcIikpLHt9LHtcIiYgYnV0dG9uXCI6TGYoTGYoe30seG8ubWFyZ2luKDAsXCIxMHB4XCIsMCwwKSkse30se1wiOmxhc3QtY2hpbGRcIjpMZih7fSx4by5tYXJnaW4oMCkpfSl9KX0pO2Z1bmN0aW9uIFJmKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBCZihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9SZihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1VmKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpSZihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBVZihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIEZmPWJvKHtlbnZCYW5uZXI6QmYoQmYoQmYoe2Rpc3BsYXk6XCJ0YWJsZVwiLG1heFdpZHRoOlwiMjAwcHhcIixtaW5IZWlnaHQ6XCI1MHB4XCIsbWF4SGVpZ2h0OlwiMTAwcHhcIn0seG8ub3ZlcmZsb3coXCJoaWRkZW5cIikpLHt9LHtiYWNrZ3JvdW5kQ29sb3I6XCIjMDA2N0I4XCIsY29sb3I6XCIjRkZGRkZGXCIscG9zaXRpb246XCJhYnNvbHV0ZVwifSx4by5tYXJnaW4oXCIxMHB4XCIpKSx7fSx7Zm9udFdlaWdodDpcImJvbGRcIix0b3A6MCxyaWdodDowLHpJbmRleDoxMDB9KSxlbnZCYW5uZXJJbm5lcjpCZihCZih7ZGlzcGxheTpcInRhYmxlLWNlbGxcIix0ZXh0QWxpZ246XCJjZW50ZXJcIn0seG8ucGFkZGluZyhcIjVweFwiKSkse30se2ZvbnRTaXplOlwiMTZweFwiLGRpcmVjdGlvbjpcImx0clwiLFwiJiBhXCI6e3RleHREZWNvcmF0aW9uTGluZTpcInVuZGVybGluZVwiLGNvbG9yOlwiI0ZGRlwifX0pLGVudkJhbm5lckRlc2NyaXB0aW9uOkJmKHtmb250U2l6ZTpcIjE0cHhcIixwYWRkaW5nVG9wOlwiNXB4XCIsbWFyZ2luVG9wOlwiNXB4XCIsd2lkdGg6XCIxMDAlXCIsdGV4dEFsaWduOlwiY2VudGVyXCJ9LHhvLmJvcmRlclRvcChcIjFweFwiLFwic29saWRcIixcIndoaXRlXCIpKX0pO2Z1bmN0aW9uIE1mKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB6ZihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9NZihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0hmKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpNZihPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBIZihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIFZmPWJvKHtmbG9hdGluZ0Ryb3Bkb3duQ29udGFpbmVyOnpmKHtkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIix3aWR0aDpcIm1heC1jb250ZW50XCJ9LHhvLmdhcChcIjRweFwiKSksZmxvYXRpbmdEcm9wZG93bkNvbnRlbnQ6emYoemYoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixtYXJnaW5Ub3A6XCIyNHB4XCIsZGlzcGxheTpcImZsZXhcIixhbGlnblNlbGY6XCJmbGV4LWVuZFwiLHdpZHRoOlwibWF4LWNvbnRlbnRcIn0seG8ub3ZlcmZsb3coXCJhdXRvXCIpKSx7fSx7Ym94U2hhZG93OlwiMHB4IDhweCAxNnB4IDBweCByZ2JhKDAsMCwwLDAuMilcIix6SW5kZXg6MSxcIiYgZGl2XCI6e2JhY2tncm91bmRDb2xvcjpcIiNmZmZcIixkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIn0sXCImIHNwYW5cIjp7dmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLGRpc3BsYXk6XCJibG9ja1wifSxcIiYgYnV0dG9uXCI6e21pbkhlaWdodDpcIjMycHhcIix0ZXh0QWxpZ246XCJsZWZ0XCIscGFkZGluZ0xlZnQ6XCIxNHB4XCIscGFkZGluZ1JpZ2h0OlwiMTRweFwiLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixkaXNwbGF5OlwiYmxvY2tcIixjdXJzb3I6XCJwb2ludGVyXCIsXCI6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOlwiI2VlZVwifX19KSxyZW1vdmVEZWZhdWx0QnV0dG9uU3R5bGVzOnpmKHpmKHpmKHtiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSx4by5ib3JkZXIoMCkpLHt9LHtmb250RmFtaWx5OlwiaW5oZXJpdFwiLGZvbnRTaXplOlwiaW5oZXJpdFwiLGZvbnRTdHlsZTpcImluaGVyaXRcIixmb250V2VpZ2h0OlwiaW5oZXJpdFwiLGxpbmVIZWlnaHQ6XCJpbmhlcml0XCJ9LHhvLnBhZGRpbmcoMCkpLHt9LHtwYWRkaW5nSW5saW5lU3RhcnQ6XCIwcHhcIixwYWRkaW5nSW5saW5lRW5kOlwiMHB4XCIscGFkZGluZ0Jsb2NrU3RhcnQ6XCIwcHhcIixwYWRkaW5nQmxvY2tFbmQ6XCIwcHhcIn0pLGZsb2F0aW5nRHJvcGRvd25CdXR0b246emYoe2Rpc3BsYXk6XCJmbGV4XCIsYWxpZ25JdGVtczpcImNlbnRlclwifSx4by5nYXAoXCI4cHhcIikpLGZsb2F0aW5nRHJvcGRvd25CdXR0b25JbWc6e2Rpc3BsYXk6XCJmbGV4XCIsd2lkdGg6XCIxMnB4XCIsaGVpZ2h0OlwiMTZweFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLGN1cnNvcjpcInBvaW50ZXJcIn19KTtmdW5jdGlvbiBXZihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gR2YoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/V2YoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXskZihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6V2YoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gJGYoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBLZj1ibyh7Zm9vdGVyOkdmKEdmKHtwb3NpdGlvbjpcImFic29sdXRlXCIsbGVmdDowLGJvdHRvbTowLHdpZHRoOlwiMTAwJVwifSx4by5vdmVyZmxvdyhcInZpc2libGVcIikpLHt9LCRmKHt6SW5kZXg6XCJhdXRvXCIsY2xlYXI6XCJib3RoXCIsbWluSGVpZ2h0OlwiXCIuY29uY2F0KFVvLFwicHhcIil9LEtvLHtiYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCIsZmlsdGVyOlwibm9uZVwifSkpLGRhcmtGb290ZXI6JGYoe2JhY2tncm91bmRDb2xvcjpcInJnYmEoMCwgMCwgMCwgMC42KVwiLGZpbHRlcjpcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChHcmFkaWVudFR5cGU9MCxzdGFydENvbG9yc3RyPScjOTkwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzk5MDAwMDAwJylcIn0sS28se2JhY2tncm91bmRDb2xvcjpcInJnYmEoMCwgMCwgMCwgMC42KVwiLGZpbHRlcjpcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChHcmFkaWVudFR5cGU9MCxzdGFydENvbG9yc3RyPScjOTkwMDAwMDAnLCBlbmRDb2xvcnN0cj0nIzk5MDAwMDAwJylcIn0pLHdoaXRlTW9iaWxlRm9vdGVyOiRmKHt9LEtvLHtiYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCIsZmlsdGVyOlwibm9uZVwifSksZm9vdGVyTm9kZTpHZihHZih7fSx4by5tYXJnaW4oMCwwKSkse30sJGYoe2ZvbnRTaXplOlwiMTNweFwiLGZsb2F0OlwicmlnaHRcIixcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pXCI6JGYoe2Zsb2F0OlwibGVmdFwifSxLbyx7ZmxvYXQ6XCJyaWdodFwifSl9LEtvLEdmKHtmbG9hdDpcImxlZnRcIn0seG8ubWFyZ2luKDAsXCJcIi5jb25jYXQoV28sXCJweFwiKSkpKSksZm9vdGVySXRlbTokZih7Y29sb3I6XCIjMDAwXCIsZm9udFNpemU6XCIxMnB4XCIsbGluZUhlaWdodDpcIlwiLmNvbmNhdChVbyxcInB4XCIpLHdoaXRlU3BhY2U6XCJub3dyYXBcIixkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCIsbWFyZ2luTGVmdDpcIjhweFwiLG1hcmdpblJpZ2h0OlwiOHB4XCIsXCJ0ZXh0LWRlY29yYXRpb25cIjpcIm5vbmVcIixcIiYgaGFzLWJhY2tncm91bmRcIjp7Y29sb3I6XCIjZmZmXCJ9LFwiOmhvdmVyXCI6e2NvbG9yOlwiIzAwMFwifX0sS28se2NvbG9yOlwiIzc0NzQ3NFwifSksZGFya0Zvb3RlckZvb3Rlckl0ZW06JGYoe2NvbG9yOlwiI2ZmZlwiLFwiOmhvdmVyXCI6e2NvbG9yOlwiI2ZmZlwifX0sS28se2NvbG9yOlwiIzc0NzQ3NFwiLFwiOmhvdmVyXCI6e2NvbG9yOlwiIzc0NzQ3NFwifX0pLHdoaXRlVGV4dE1vYmlsZUZvb3Rlckl0ZW06JGYoe30sS28se2NvbG9yOlwiI2ZmZlwifSksZGVidWdJdGVtOntcImxldHRlci1zcGFjaW5nXCI6XCIzcHhcIixsaW5lSGVpZ2h0OlwiMjJweFwiLHZlcnRpY2FsQWxpZ246XCJ0b3BcIixmb250U2l6ZTpcIjE2cHhcIixmb250V2VpZ2h0OlwiNjAwXCIsXCI6aG92ZXJcIjp7XCJ0ZXh0LWRlY29yYXRpb25cIjpcIm5vbmVcIn19fSk7ZnVuY3Rpb24gcWYoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFFmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3FmKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7WGYoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnFmKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFhmKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgWWY9Ym8oe2hlYWRlckNvbnRhaW5lcjp7ZGlzcGxheTpcInRhYmxlLWNlbGxcIixwb3NpdGlvbjpcImFic29sdXRlXCIsd2lkdGg6XCIxMDAlXCIsekluZGV4OjEwfSxoZWFkZXI6UWYoe3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjQ4cHhcIn0seG8ucGFkZGluZyhcIjEycHhcIixcIjI0cHhcIikpLGhlYWRlckxvZ286UWYoe21heEhlaWdodDpcIjI0cHhcIixtYXhXaWR0aDpcIjE1MHB4XCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwifSx4by5ib3JkZXIoMCkpfSk7ZnVuY3Rpb24gWmYoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEpmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1pmKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZXAoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlpmKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGVwKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgdHA9Ym8oe2hlbHBCdXR0b246e3ZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIixcInBhZGRpbmctaW5saW5lXCI6XCI1cHhcIn0saGVscEJ1dHRvbkltYWdlU3R5bGU6SmYoSmYoe2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9LHhvLmJvcmRlcldpZHRoKFwiMHB4XCIpKSx7fSx7Y3Vyc29yOlwicG9pbnRlclwiLG1pbldpZHRoOlwiZml0LWNvbnRlbnRcIixwYWRkaW5nVG9wOjAscGFkZGluZ0JvdHRvbTowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ1JpZ2h0OjB9KX0pO2Z1bmN0aW9uIG5wKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBycChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9ucChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe29wKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpucChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBvcChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGlwPXNmKHtcImltZy5jc3NXTFNQSElQQXVkaW9cIjp7bWFyZ2luVG9wOlwiMnB4ICFpbXBvcnRhbnRcIixtYXJnaW5MZWZ0OlwiMnB4ICFpbXBvcnRhbnRcIn19KSxhcD1ibyh7aGlwQ2hhbGxlbmdlTWVudUJ1dHRvblN0eWxlOntmbG9hdDpcImxlZnRcIixtYXJnaW5SaWdodDpcIjVweFwifSxoaXBDaGFsbGVuZ2VMaW5rczp7ZGlzcGxheTpcImlubGluZS1ibG9ja1wifSxoaXBDaGFsbGVuZ2VNZW51QnV0dG9uU3R5bGVXaXRoQm9yZGVyOnJwKHtmbG9hdDpcImxlZnRcIixtYXJnaW5SaWdodDpcIjVweFwiLHBhZGRpbmdSaWdodDpcIjVweFwifSx4by5ib3JkZXJSaWdodChcIjJweFwiLFwic29saWRcIixcImJsYWNrXCIpKSxoaXBDaGFsbGVuZ2VOZXh0QnV0dG9uQ29udGFpbmVyU3R5bGU6e21hcmdpblRvcDpcIjIwcHhcIixmbG9hdDpcInJpZ2h0XCIscG9zaXRpb246XCJyZWxhdGl2ZVwifSxoaXBDb250ZW50U3R5bGU6e1wiJiB0YWJsZVwiOntkaXNwbGF5OlwiZ3JpZFwifSxcIiYgdGFibGUgdHJcIjp7ZGlzcGxheTpcImdyaWRcIixtYXJnaW5Cb3R0b206XCIycHhcIixcIiYgaW5wdXRcIjpycChycChycChycChycChycCh7aGVpZ2h0OlwiXCIuY29uY2F0KEZkKSx3aWR0aDpcIjEwMCVcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0seG8uYm9yZGVyU3R5bGUoXCJcIi5jb25jYXQoTmQpKSkseG8uYm9yZGVyUmFkaXVzKFwiXCIuY29uY2F0KDApKSkseG8uYm9yZGVyV2lkdGgoXCJcIi5jb25jYXQoUmQsXCIgIWltcG9ydGFudFwiKSxcIlwiLmNvbmNhdChSZCxcIiAhaW1wb3J0YW50XCIpLFwiXCIuY29uY2F0KFwiMXB4XCIsXCIgIWltcG9ydGFudFwiKSxcIlwiLmNvbmNhdChSZCxcIiAhaW1wb3J0YW50XCIpKSkseG8uYm9yZGVyQ29sb3IoXCJcIi5jb25jYXQoVWQpKSkseG8ucGFkZGluZyhcIlwiLmNvbmNhdChJZCksXCJcIi5jb25jYXQoTGQpLFwiXCIuY29uY2F0KElkKSxcIlwiLmNvbmNhdChEZCkpKSx7fSx7XCI6aG92ZXJcIjpycCh7fSx4by5ib3JkZXJDb2xvcihcIlwiLmNvbmNhdChNZCkpKSxcIjpmb2N1c1wiOnJwKHt9LHhvLmJvcmRlckNvbG9yKFwiXCIuY29uY2F0KHpkKSkpfSxSaSgpP3tcIjo6LW1zLXJldmVhbFwiOnJwKHJwKHtoZWlnaHQ6XCIxMDAlXCJ9LHhvLnBhZGRpbmcoXCI0cHhcIixcIjhweFwiKSkse30se21hcmdpbkxlZnQ6XCI0cHhcIixtYXJnaW5SaWdodDpcIi04cHhcIixcIjpob3ZlclwiOntjb2xvcjp6ZH0sXCI6YWN0aXZlXCI6e2NvbG9yOlwiI0ZGRlwiLGJhY2tncm91bmRDb2xvcjp6ZH19KX06e30pfSxcIiYgZGl2IFtpZCo9d2xzcGlzcENvbnRlbnRdXCI6e1wiJiB0ZFwiOntkaXNwbGF5OlwiZmxleCAhaW1wb3J0YW50XCIsanVzdGlmeUNvbnRlbnQ6XCJjZW50ZXJcIix3aWR0aDpcIjEwMCUgIWltcG9ydGFudFwifX19fSk7ZnVuY3Rpb24gbHAoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHNwKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2xwKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Y3AoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmxwKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGNwKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgdXA9c2Yoe1wiaW1nLmNzc1dMU1BISVBBdWRpb1wiOnttYXJnaW5Ub3A6XCIycHggIWltcG9ydGFudFwiLG1hcmdpbkxlZnQ6XCIycHggIWltcG9ydGFudFwifX0pLGRwPWJvKHtoaXBDaGFsbGVuZ2VNZW51QnV0dG9uU3R5bGU6e2Zsb2F0OlwibGVmdFwiLG1hcmdpblJpZ2h0OlwiNXB4XCJ9LGhpcENoYWxsZW5nZU1lbnU6e2Rpc3BsYXk6XCJmbGV4XCIsanVzdGlmeUNvbnRlbnQ6XCJmbGV4LWVuZFwiLGZsb2F0OlwicmlnaHRcIn0saGlwQ2hhbGxlbmdlTWVudUJ1dHRvblN0eWxlV2l0aEJvcmRlcjpzcCh7ZmxvYXQ6XCJsZWZ0XCIsbWFyZ2luUmlnaHQ6XCI1cHhcIixwYWRkaW5nUmlnaHQ6XCI1cHhcIn0seG8uYm9yZGVyUmlnaHQoXCIxcHhcIixcInNvbGlkXCIsXCIjMDAwMEZGXCIpKSxoaXBDaGFsbGVuZ2VOZXh0QnV0dG9uQ29udGFpbmVyU3R5bGU6e21hcmdpblRvcDpcIjIwcHhcIixmbG9hdDpcInJpZ2h0XCJ9LGhpcENvbnRlbnRTdHlsZTp7XCImIHRhYmxlXCI6e2Rpc3BsYXk6XCJncmlkXCJ9LFwiJiB0YWJsZSB0clwiOntkaXNwbGF5OlwiZ3JpZFwiLG1hcmdpbkJvdHRvbTpcIjJweFwiLFwiJiBpbnB1dFwiOnNwKHNwKHt9LHhvLmJvcmRlcldpZHRoKFwiMXB4ICFpbXBvcnRhbnRcIikpLHt9LHtoZWlnaHQ6XCIzMnB4XCIsXCI6Zm9jdXNcIjp7b3V0bGluZUNvbG9yOlwiIzAwNmZjOVwiLG91dGxpbmVXaWR0aDpcIjJweFwiLG91dGxpbmVTdHlsZTpcInNvbGlkXCJ9fSl9LFwiJiB0YWJsZSB0ZDpmaXJzdC1jaGlsZFwiOnt3aWR0aDowLGRpc3BsYXk6XCJjb250ZW50c1wifX19KTtmdW5jdGlvbiBmcChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gcHAoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/ZnAoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtncChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZnAoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gZ3AoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBtcD1ibyh7aWRlbnRpdHlCYW5uZXI6cHAocHAocHAoe2hlaWdodDpcIlwiLmNvbmNhdChNbyxcInB4XCIpfSx4by5tYXJnaW4oXCJcIi5jb25jYXQoRm8sXCJweFwiKSwwLFwiXCIuY29uY2F0KEZvLFwicHhcIikpKSx7fSx7bGluZUhlaWdodDpcIlwiLmNvbmNhdChNbyxcInB4XCIpLHdoaXRlU3BhY2U6XCJub3dyYXBcIn0seG8ub3ZlcmZsb3coXCJoaWRkZW5cIikpLHt9LHt0ZXh0T3ZlcmZsb3c6XCJlbGxpcHNpc1wifSl9KSxocD0xNTAsYnA9XCIyMDBcIix5cD1cImN1YmljLWJlemllcigwLjUsIDAsIDAuNSwgMSlcIix2cD1cIi4zc1wiLHdwPVwiZWFzZS1pblwiLFNwPVwiZWFzZS1vdXRcIixQcD1ibyh7YW5pbWF0ZTp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLGFuaW1hdGlvbkR1cmF0aW9uOlwiMC4yNXNcIixhbmltYXRpb25UaW1pbmdGdW5jdGlvbjp5cCxhbmltYXRpb25GaWxsTW9kZTpcImJvdGhcIix0cmFuc2l0aW9uUHJvcGVydHk6XCJsZWZ0XCJ9LHNsaWRlT3V0TmV4dDp7YW5pbWF0aW9uTmFtZTp7ZnJvbTp7bGVmdDpcIjBweFwiLG9wYWNpdHk6MX0sdG86e2xlZnQ6XCItXCIuY29uY2F0KGJwLFwicHhcIiksb3BhY2l0eTowfX19LHNsaWRlSW5OZXh0OnthbmltYXRpb25OYW1lOntmcm9tOntsZWZ0OlwiXCIuY29uY2F0KGJwLFwicHhcIiksb3BhY2l0eTowfSx0bzp7bGVmdDpcIjBweFwiLG9wYWNpdHk6MX19fSxzbGlkZU91dEJhY2s6e2FuaW1hdGlvbk5hbWU6e2Zyb206e2xlZnQ6XCIwcHhcIixvcGFjaXR5OjF9LHRvOntsZWZ0OlwiXCIuY29uY2F0KGJwLFwicHhcIiksb3BhY2l0eTowfX19LHNsaWRlSW5CYWNrOnthbmltYXRpb25OYW1lOntmcm9tOntsZWZ0OlwiLVwiLmNvbmNhdChicCxcInB4XCIpLG9wYWNpdHk6MH0sdG86e2xlZnQ6XCIwcHhcIixvcGFjaXR5OjF9fX0sZmFkZUluOntwb3NpdGlvbjpcInJlbGF0aXZlXCIsdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOndwLGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOnlwLGFuaW1hdGlvbkR1cmF0aW9uOnZwLGFuaW1hdGlvbk5hbWU6e1wiMCVcIjp7b3BhY2l0eTowfX0sV2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOndwLFdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOnlwLFdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uOnZwLE1velRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjp3cCxNb3pBbmltYXRpb25UaW1pbmdGdW5jdGlvbjp5cCxNb3pBbmltYXRpb25EdXJhdGlvbjp2cH0sZmFkZU91dDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjpTcCxhbmltYXRpb25EdXJhdGlvbjp2cCxhbmltYXRpb25OYW1lOntcIjEwMCVcIjp7b3BhY2l0eTowfX0sV2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOlNwLFdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOnlwLFdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uOnZwLE1velRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbjpTcCxNb3pBbmltYXRpb25UaW1pbmdGdW5jdGlvbjp5cCxNb3pBbmltYXRpb25EdXJhdGlvbjp2cH19KSx4cD1ibyh7bWFuYWdlQ29uc2VudExpbms6e2ZvbnRTaXplOlwiMTNweFwiLG1hcmdpbkJvdHRvbTpcIjQ4cHhcIn19KTtmdW5jdGlvbiBPcChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gX3AoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/T3AoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtDcChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6T3AoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gQ3AoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBrcD1ibyh7bGluazpfcChfcCh7Y29sb3I6XCIjMDA2N2I4XCIsXCJ0ZXh0LWRlY29yYXRpb25cIjpcIm5vbmVcIixiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSx4by5ib3JkZXJTdHlsZShcIm5vbmVcIikpLHt9LHtcIjpob3ZlclwiOl9wKF9wKHtcInRleHQtZGVjb3JhdGlvblwiOlwidW5kZXJsaW5lXCIsY29sb3I6XCIjNjY2XCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0seG8uYm9yZGVyU3R5bGUoXCJub25lXCIpKSx7fSx7Y3Vyc29yOlwicG9pbnRlclwifSl9KSxub1BhZGRpbmc6X3Aoe30seG8ucGFkZGluZyhcIjBweFwiKSksYW5jaG9yTm9Gb2N1czp7Zm9udFNpemU6XCIwLjg1cmVtXCIsXCI6aG92ZXJcIjp7Y29sb3I6XCIjMDA2N2I4XCJ9fSxoaWdoQ29udHJhc3Q6e1wiQG1lZGlhIChmb3JjZWQtY29sb3JzOiBhY3RpdmUpXCI6e2NvbG9yOlwiTGlua1RleHRcIixcIjpob3ZlclwiOntjb2xvcjpcIkxpbmtUZXh0XCJ9fSxcIkBtZWRpYSAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSlcIjp7Y29sb3I6XCItbXMtaG90bGlnaHRcIixcIjpob3ZlclwiOntjb2xvcjpcIi1tcy1ob3RsaWdodFwifX19fSk7ZnVuY3Rpb24gQXAoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFRwKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0FwKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7RXAoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkFwKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEVwKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIganA9Ym8oe21lbnU6VHAoVHAoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixiYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCIsYmFja2dyb3VuZENsaXA6XCJwYWRkaW5nQm94XCJ9LHhvLmJvcmRlcihcIjFweFwiLFwic29saWRcIixcInJnYmEoMCwgMCwgMCwgMC4xKVwiKSkse30se3pJbmRleDoyLHRvcDowLHJpZ2h0OlwiMTBweFwiLHdpZHRoOlwiMTYwcHhcIixtYXJnaW5Ub3A6XCIyMHB4XCIsbWFyZ2luQm90dG9tOlwiMjBweFwifSksbWVudUJ1dHRvbkltYWdlU3R5bGU6VHAoVHAoe2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9LHhvLmJvcmRlcldpZHRoKFwiMHB4XCIpKSx7fSx7Y3Vyc29yOlwicG9pbnRlclwiLG1pbldpZHRoOlwiZml0LWNvbnRlbnRcIixwYWRkaW5nVG9wOjAscGFkZGluZ0JvdHRvbTowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ1JpZ2h0OjAsd2lkdGg6XCIxMDAlXCJ9KSxhY2Nlc3NpYmxlSW1hZ2VBbGlnbjp7dmVydGljYWxBbGlnbjpcIm1pZGRsZVwifSxtZW51TWFyZ2luOlRwKHt9LHhvLm1hcmdpbihcIjBweFwiKSksbWVudUxpc3Q6VHAoVHAoe30seG8ubWFyZ2luKFwiMHB4XCIpKSx4by5wYWRkaW5nKFwiMHB4XCIpKSxtZW51TGluazpUcChUcCh7fSx4by5ib3JkZXJXaWR0aChcIjBweFwiKSkse30se3dpZHRoOlwiMTAwJVwiLGRpc3BsYXk6XCJibG9ja1wiLHBhZGRpbmdUb3A6XCIxMXB4XCIscGFkZGluZ0JvdHRvbTpcIjEzcHhcIixwYWRkaW5nTGVmdDpcIjEycHhcIixwYWRkaW5nUmlnaHQ6XCIxMnB4XCIsYmFja2dyb3VuZENvbG9yOlwicmdiYSgwLDAsMCwuMDUpXCIsY29sb3I6XCJpbmhlcml0XCIsY3Vyc29yOlwicG9pbnRlclwiLFwiOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjpcIiNlNmU2ZTY7XCIsY3Vyc29yOlwicG9pbnRlclwiLGNvbG9yOlwiaW5oZXJpdFwifSxcIjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6XCJyZ2JhKDAsMCwwLC4xKVwiLG91dGxpbmVXaWR0aDpcIjFweFwiLG91dGxpbmVDb2xvcjpcIiMwMDBcIixvdXRsaW5lU3R5bGU6XCJkYXNoZWRcIn0sXCI6YWN0aXZlXCI6e2JhY2tncm91bmRDb2xvcjpcInJnYmEoMCwwLDAsLjMpXCJ9fSl9KTtmdW5jdGlvbiBJcChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gTHAoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/SXAoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtEcChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6SXAoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gRHAoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBOcD1ibyh7bWVudTpMcChMcCh7cG9zaXRpb246XCJhYnNvbHV0ZVwiLGJhY2tncm91bmRDb2xvcjpcIiNmZmZcIixiYWNrZ3JvdW5kQ2xpcDpcInBhZGRpbmdCb3hcIn0seG8uYm9yZGVyKFwiMXB4XCIsXCJzb2xpZFwiLFwicmdiYSgwLCAwLCAwLCAwLjEpXCIpKSx7fSx7ekluZGV4OjIsdG9wOjAscmlnaHQ6XCIxMHB4XCIsd2lkdGg6XCIxNjBweFwifSksbWVudUJ1dHRvbkltYWdlU3R5bGU6THAoTHAoe2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9LHhvLmJvcmRlcldpZHRoKFwiMHB4XCIpKSx7fSx7Y3Vyc29yOlwicG9pbnRlclwiLG1pbldpZHRoOlwiZml0LWNvbnRlbnRcIixwYWRkaW5nVG9wOjAscGFkZGluZ0JvdHRvbTowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ1JpZ2h0OjB9KSxhY2Nlc3NpYmxlSW1hZ2VBbGlnbjp7dmVydGljYWxBbGlnbjpcIm1pZGRsZVwifSxtZW51TWFyZ2luOkxwKHt9LHhvLm1hcmdpbihcIjBweFwiKSksbWVudUxpbms6THAoTHAoe30seG8uYm9yZGVyV2lkdGgoXCIwcHhcIikpLHt9LHt0ZXh0QWxpZ246XCJsZWZ0XCIsd2lkdGg6XCIxMDAlXCIsZGlzcGxheTpcImJsb2NrXCIscGFkZGluZ1RvcDpcIjExcHhcIixwYWRkaW5nQm90dG9tOlwiMTNweFwiLHBhZGRpbmdMZWZ0OlwiMTJweFwiLHBhZGRpbmdSaWdodDpcIjEycHhcIixiYWNrZ3JvdW5kQ29sb3I6XCJyZ2JhKDAsMCwwLC4wNSlcIixjb2xvcjpcImluaGVyaXRcIixjdXJzb3I6XCJwb2ludGVyXCIsXCI6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOlwiI2U2ZTZlNjtcIixjdXJzb3I6XCJwb2ludGVyXCIsY29sb3I6XCJpbmhlcml0XCJ9LFwiOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjpcInJnYmEoMCwwLDAsLjEpXCIsb3V0bGluZVdpZHRoOlwiMXB4XCIsb3V0bGluZUNvbG9yOlwiIzAwMFwiLG91dGxpbmVTdHlsZTpcImRhc2hlZFwifSxcIjphY3RpdmVcIjp7YmFja2dyb3VuZENvbG9yOlwicmdiYSgwLDAsMCwuMylcIn19KX0pO2Z1bmN0aW9uIFJwKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBCcChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9ScChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1VwKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpScChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBVcChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIEZwPWJvKHtwaG9uZUNvdW50cnlCb3hOb3RJbmxpbmU6e3dpZHRoOlwiMTAwJVwiLGZsb2F0OlwibGVmdFwiLG1pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdMZWZ0OlwiMnB4XCIscGFkZGluZ1JpZ2h0OlwiMnB4XCIsXCImIHNlbGVjdC5oYXMtZXJyb3JcIjpCcCh7fSxnZiksXCImIHNlbGVjdC5oYXMtZXJyb3I6Zm9jdXNcIjpCcCh7fSxoZil9LHBob25lQ291bnRyeUJveElubGluZTp7ZGlzcGxheTpcImlubGluZS1ibG9ja1wiLHdpZHRoOlwiMjAuODMzMzMlXCIsZmxvYXQ6XCJsZWZ0XCIsbWluSGVpZ2h0OlwiMXB4XCIscGFkZGluZ0xlZnQ6XCIycHhcIixwYWRkaW5nUmlnaHQ6XCIycHhcIixcIiYgc2VsZWN0XCI6e2xlZnQ6MCxvcGFjaXR5OjAsY3Vyc29yOlwicG9pbnRlclwifSxcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pXCI6e2Zsb2F0OlwicmlnaHRcIn0sXCJAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDMyMHB4KVwiOnt3aWR0aDpcIjEwMCVcIixkaXNwbGF5OlwiYmxvY2tcIn19LHBob25lQ291bnRyeUNvZGVNZW51QnV0dG9uU3R5bGU6e2hlaWdodDpcIjM2cHhcIn0scGhvbmVDb3VudHJ5Q29kZUxhYmVsOkJwKEJwKHt9LHBmKSx7fSx7d2lkdGg6XCIxMDAlXCIsbGVmdDowLHBhZGRpbmdMZWZ0OlwiNHB4XCIscGFkZGluZ1JpZ2h0OlwiNHB4XCIsbWFyZ2luVG9wOjAsbWFyZ2luQm90dG9tOjAsdGV4dEFsaWduOlwibGVmdFwiLFwiOmdsb2JhbChbZGlyPSdydGwnXSlcIjp7dGV4dEFsaWduOlwicmlnaHRcIn19KSxsYWJlbEhhc0Vycm9yOkJwKHt9LGdmKSxsYWJlbEhhc0ZvY3VzOkJwKHt9LG1mKSxsYWJlbEhhc0Vycm9yRm9jdXNCb3g6QnAoe30saGYpLGRyb3Bkb3duOkJwKEJwKEJwKEJwKHtwb3NpdGlvbjpcImFic29sdXRlXCIsd2lkdGg6XCIxMDAlXCJ9LHhvLnBhZGRpbmcoXCIwXCIpKSx7fSx7bWF4SGVpZ2h0OlwiMTUwcHhcIixiYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCIsYmFja2dyb3VuZENsaXA6XCJwYWRkaW5nQm94XCJ9LHhvLmJvcmRlcihcIjFweFwiLFwic29saWRcIixcInJnYmEoMCwgMCwgMCwgMC4xKVwiKSkseG8ub3ZlcmZsb3coXCJhdXRvXCIpKSx7fSx7ekluZGV4OjJ9KSxkb3duQXJyb3c6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6MCxyaWdodDpcIi02cHhcIixwYWRkaW5nVG9wOlwiNnB4XCIscGFkZGluZ0JvdHRvbTpcIjZweFwiLHBhZGRpbmdSaWdodDpcIjBweFwiLHBhZGRpbmdMZWZ0OlwiMHB4XCIsaGVpZ2h0OlwiMzZweFwiLFwiOmdsb2JhbChbZGlyPSdydGwnXSlcIjp7bGVmdDpcIi02cHhcIixyaWdodDpcImF1dG9cIn19fSk7ZnVuY3Rpb24gTXAoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHpwKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP01wKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7SHAoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOk1wKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEhwKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgVnA9Ym8oe3Bob25lQ291bnRyeUJveE5vdElubGluZTp7d2lkdGg6XCIxMDAlXCIsZmxvYXQ6XCJsZWZ0XCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLG1pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdMZWZ0OlwiMnB4XCIscGFkZGluZ1JpZ2h0OlwiMnB4XCIsXCImIHNlbGVjdC5oYXMtZXJyb3JcIjp6cCh7fSxnZiksXCImIHNlbGVjdC5oYXMtZXJyb3I6Zm9jdXNcIjp6cCh7fSxoZil9LHBob25lQ291bnRyeUJveElubGluZTp7ZGlzcGxheTpcImlubGluZS1ibG9ja1wiLHdpZHRoOlwiMjAuODMzMzMlXCIsZmxvYXQ6XCJsZWZ0XCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLG1pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdMZWZ0OlwiMnB4XCIscGFkZGluZ1JpZ2h0OlwiMnB4XCIsXCImIHNlbGVjdFwiOntsZWZ0OjAsb3BhY2l0eTowLGN1cnNvcjpcInBvaW50ZXJcIn0sXCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOntmbG9hdDpcInJpZ2h0XCJ9fSxwaG9uZUNvdW50cnlDb2RlTGFiZWw6enAoenAoe30scGYpLHt9LHtwb3NpdGlvbjpcImFic29sdXRlXCIsd2lkdGg6XCIxMDAlXCIsbGVmdDowLHBhZGRpbmdMZWZ0OlwiNHB4XCIscGFkZGluZ1JpZ2h0OlwiNHB4XCIsbWFyZ2luVG9wOjAsbWFyZ2luQm90dG9tOjB9KSxsYWJlbEhhc0Vycm9yOnpwKHt9LGdmKSxsYWJlbEhhc0ZvY3VzOnpwKHt9LG1mKSxsYWJlbEhhc0Vycm9yRm9jdXNCb3g6enAoe30saGYpLGRvd25BcnJvdzp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHJpZ2h0OlwiLTZweFwiLHBhZGRpbmdUb3A6XCI2cHhcIixwYWRkaW5nQm90dG9tOlwiNnB4XCIscGFkZGluZ1JpZ2h0OlwiMHB4XCIscGFkZGluZ0xlZnQ6XCIwcHhcIixoZWlnaHQ6XCIzNnB4XCIsXCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOntsZWZ0OlwiLTZweFwiLHJpZ2h0OlwiYXV0b1wifX19KSxXcD1ibyh7cGhvbmVOdW1iZXJDb250YWluZXI6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIn0scGhvbmVOdW1iZXJDb250YWluZXJEZXByZWNhdGVkOntmbG9hdDpcImxlZnRcIixwb3NpdGlvbjpcInJlbGF0aXZlXCIsbWluSGVpZ2h0OlwiMXB4XCIscGFkZGluZ0xlZnQ6XCIycHhcIixwYWRkaW5nUmlnaHQ6XCIycHhcIix3aWR0aDpcIjEwMCVcIixtYXJnaW5Cb3R0b206XCI5cHhcIn0saW5saW5lSW5wdXQ6e2Rpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIixwYWRkaW5nTGVmdDpcIjE2cHhcIix3aWR0aDpcIjc5LjE2NjY3JVwiLGZsb2F0OlwibGVmdFwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIixtaW5IZWlnaHQ6XCIxcHhcIixwYWRkaW5nUmlnaHQ6XCIycHhcIixcIkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzIwcHgpXCI6e3dpZHRoOlwiMTAwJVwiLGRpc3BsYXk6XCJibG9ja1wiLHBhZGRpbmdMZWZ0OlwiMHB4XCIscGFkZGluZ1JpZ2h0OlwiMHB4XCIsXCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOntwYWRkaW5nTGVmdDpcIjBweFwiLHBhZGRpbmdSaWdodDpcIjBweFwifX0sXCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOntwYWRkaW5nUmlnaHQ6XCIxNnB4XCIscGFkZGluZ0xlZnQ6XCIwcHhcIixmbG9hdDpcInJpZ2h0XCJ9fSxub25JbmxpbmVJbnB1dDp7d2lkdGg6XCIxMDAlXCIsZmxvYXQ6XCJsZWZ0XCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLG1pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdSaWdodDpcIjJweFwifSxlcnJvckNvbnRhaW5lcjp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLG1pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdMZWZ0OlwiMnB4XCJ9fSk7ZnVuY3Rpb24gR3AoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uICRwKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0dwKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7S3AoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkdwKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEtwKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgcXA9Ym8oe21hcmNoaW5nQW50c0FuaW1hdGlvbjp7cG9zaXRpb246XCJhYnNvbHV0ZVwiLHRvcDowLGxlZnQ6MCxoZWlnaHQ6XCI1cHhcIix3aWR0aDpcIjEwMCVcIixcIiYgZGl2XCI6JHAoJHAoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixoZWlnaHQ6XCI1cHhcIix3aWR0aDpcIjVweFwiLGJhY2tncm91bmRDb2xvcjpcIiMwMDY3YjhcIix6SW5kZXg6XCIxMDBcIn0seG8uYm9yZGVyUmFkaXVzKFwiNTAlXCIpKSx7fSx7b3BhY2l0eTowLGFuaW1hdGlvbkR1cmF0aW9uOlwiMnNcIixNb3pBbmltYXRpb25EdXJhdGlvbjpcIjJzXCIsYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6XCJpbmZpbml0ZVwiLE1vekFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OlwiaW5maW5pdGVcIixhbmltYXRpb25OYW1lOntcIjAlLCAyMCVcIjp7bGVmdDpcIjAlXCIsYW5pbWF0aW9uVGltaW5nRnVuY3Rpb246XCJlYXNlLW91dFwiLG9wYWNpdHk6MH0sXCIyNSVcIjp7b3BhY2l0eToxfSxcIjM1JVwiOntsZWZ0OlwiNDUlXCIsYW5pbWF0aW9uVGltaW5nRnVuY3Rpb246XCJsaW5lYXJcIn0sXCI2NSVcIjp7bGVmdDpcIjYwJVwiLGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOlwiZWFzZS1pblwifSxcIjc1JVwiOntvcGFjaXR5OjF9LFwiODAlLCAxMDAlXCI6e2xlZnQ6XCIxMDAlXCIsb3BhY2l0eTowfX19KSxcIiYgPiBkaXY6bnRoLWNoaWxkKDEpXCI6e1wiLXdlYmtpdC1hbmltYXRpb24tZGVsYXlcIjpcIjAuMDVzXCIsXCItbW96LWFuaW1hdGlvbi1kZWxheVwiOlwiMC4wNXNcIixcIi1vLWFuaW1hdGlvbi1kZWxheVwiOlwiMC4wNXNcIixhbmltYXRpb25EZWxheTpcIjAuMDVzXCJ9LFwiJiA+IGRpdjpudGgtY2hpbGQoMilcIjp7XCItd2Via2l0LWFuaW1hdGlvbi1kZWxheVwiOlwiMC4yc1wiLFwiLW1vei1hbmltYXRpb24tZGVsYXlcIjpcIjAuMnNcIixcIi1vLWFuaW1hdGlvbi1kZWxheVwiOlwiMC4yc1wiLGFuaW1hdGlvbkRlbGF5OlwiMC4yc1wifSxcIiYgPiBkaXY6bnRoLWNoaWxkKDMpXCI6e1wiLXdlYmtpdC1hbmltYXRpb24tZGVsYXlcIjpcIjAuMzVzXCIsXCItbW96LWFuaW1hdGlvbi1kZWxheVwiOlwiMC4zNXNcIixcIi1vLWFuaW1hdGlvbi1kZWxheVwiOlwiMC4zNXNcIixhbmltYXRpb25EZWxheTpcIjAuMzVzXCJ9LFwiJiA+IGRpdjpudGgtY2hpbGQoNClcIjp7XCItd2Via2l0LWFuaW1hdGlvbi1kZWxheVwiOlwiMC41c1wiLFwiLW1vei1hbmltYXRpb24tZGVsYXlcIjpcIjAuNXNcIixcIi1vLWFuaW1hdGlvbi1kZWxheVwiOlwiMC41c1wiLGFuaW1hdGlvbkRlbGF5OlwiMC41c1wifSxcIiYgPiBkaXY6bnRoLWNoaWxkKDUpXCI6e1wiLXdlYmtpdC1hbmltYXRpb24tZGVsYXlcIjpcIjAuNjVzXCIsXCItbW96LWFuaW1hdGlvbi1kZWxheVwiOlwiMC42NXNcIixcIi1vLWFuaW1hdGlvbi1kZWxheVwiOlwiMC42NXNcIixhbmltYXRpb25EZWxheTpcIjAuNjVzXCJ9fSxwcm9ncmVzc0luZGljYXRvckNvbnRhaW5lcjp7d2lkdGg6XCIxMDAlXCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLG1hcmdpblRvcDpcIjQ4cHhcIixtYXJnaW5Cb3R0b206XCIyNHB4XCIsb3V0bGluZUNvbG9yOlwidHJhbnNwYXJlbnRcIn19KSxRcD1ibyh7aWNvbjp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHdpZHRoOlwiNDhweFwiLGhlaWdodDpcIjQ4cHhcIn0sc21hbGw6e3dpZHRoOlwiMjRweFwiLGhlaWdodDpcIjI0cHhcIixmbG9hdDpcImxlZnRcIixtYXJnaW5SaWdodDpcIjhweFwiLFwiOmdsb2JhbChbZGlyPSdydGwnXSlcIjp7ZmxvYXQ6XCJyaWdodFwiLG1hcmdpbkxlZnQ6XCI4cHhcIixtYXJnaW5SaWdodDpcIjBweFwifX0sYW5pbWF0ZTp7YW5pbWF0aW9uRHVyYXRpb246XCIxc1wiLGFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uOlwiZWFzZVwiLGFuaW1hdGlvbkRlbGF5OlwiMHNcIixhbmltYXRpb25JdGVyYXRpb25Db3VudDpcImluZmluaXRlXCIsYW5pbWF0aW9uRGlyZWN0aW9uOlwiYWx0ZXJuYXRlXCIsYW5pbWF0aW9uTmFtZTp7ZnJvbTp7b3BhY2l0eTouNH19fX0pO2Z1bmN0aW9uIFhwKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBZcChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIFpwPWJvKHtsaXN0SXRlbXM6e2xpc3RTdHlsZVR5cGU6XCJkaXNjXCIsbWFyZ2luTGVmdDpcIjFlbVwiLHBhZGRpbmdMZWZ0OlwiMWVtXCJ9LGF1dGhlbnRpY2F0b3JJbWFnZTp7d2lkdGg6XCIzNTJweFwiLGhlaWdodDpcIjE3NnB4XCJ9LGRlc2NyaXB0aW9uUGFkZGluZzpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9YcChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1lwKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpYcChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30seG8ucGFkZGluZyhcIjdweFwiKSkscHVsbExlZnQ6e2Zsb2F0OlwibGVmdCAhaW1wb3J0YW50XCJ9fSksSnA9Ym8oe3JvdXRlQ29udGVudDp7ZGlzcGxheTpcImlubGluZVwifSxwYWdpbmF0aW9uVmlld01pbkhlaWdodDp7bWluSGVpZ2h0OlwiaW5oZXJpdFwifX0pLGVnPWJvKHtzbWFsbEZvbnRTaXplOntmb250U2l6ZTpcIi44MTI1cmVtXCJ9LGNvbnRhaW5lckxheW91dDp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLG1pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdMZWZ0OlwiMnB4XCIscGFkZGluZ1JpZ2h0OlwiMnB4XCJ9fSk7ZnVuY3Rpb24gdGcoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIG5nKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3RnKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmcoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnRnKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHJnKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgb2csaWcsYWc9Ym8oe2RlZmF1bHQ6bmcobmcobmcobmcoe21pbkhlaWdodDpcIlwiLmNvbmNhdCgzMixcInB4XCIpfSx4by5ib3JkZXJTdHlsZShcIm5vbmVcIikpLHt9LHttaW5XaWR0aDpcIlwiLmNvbmNhdCgxMDgsXCJweFwiKSxsaW5lSGVpZ2h0Olwibm9ybWFsXCIsZGlzcGxheTpcImlubGluZS1ibG9ja1wifSx4by5wYWRkaW5nKFwiNHB4XCIsXCIxMnB4XCIpKSx7fSx7cG9zaXRpb246XCJyZWxhdGl2ZVwiLG1heFdpZHRoOlwiMTAwJVwiLHRleHRBbGlnbjpcImNlbnRlclwiLHdoaXRlU3BhY2U6XCJub3dyYXBcIn0seG8ub3ZlcmZsb3coXCJoaWRkZW5cIikpLHt9LHt2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsdGV4dE92ZXJmbG93OlwiZWxsaXBzaXNcIix0b3VjaEFjdGlvbjpcIm1hbmlwdWxhdGlvblwiLGNvbG9yOlwiIzAwMFwiLGJhY2tncm91bmRDb2xvcjpcInJnYmEoMCwgMCwgMCwgMC4yKVwiLFwiOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjptaSxjdXJzb3I6XCJwb2ludGVyXCJ9LFwiOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjptaSx0ZXh0RGVjb3JhdGlvbkxpbmU6XCJ1bmRlcmxpbmVcIixvdXRsaW5lQ29sb3I6XCIjMDAwXCIsb3V0bGluZVdpZHRoOlwiMnB4XCIsb3V0bGluZVN0eWxlOlwic29saWRcIn0sXCI6YWN0aXZlXCI6bmcoe291dGxpbmVTdHlsZTpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvbkxpbmU6XCJub25lXCIsdHJhbnNmb3JtOlwic2NhbGUoMC45OClcIixcIi1tcy10cmFuc2Zvcm1cIjpcInNjYWxlKDAuOTgpXCIsXCItd2Via2l0LXRyYW5zZm9ybVwiOlwic2NhbGUoMC45OClcIixiYWNrZ3JvdW5kQ29sb3I6XCJyZ2JhKDAsIDAsIDAsIDAuNClcIn0seG8uYm9yZGVyQ29sb3IoXCJ0cmFuc3BhcmVudFwiKSksXCI6ZGlzYWJsZWRcIjpuZyhuZyh7Y3Vyc29yOlwibm90LWFsbG93ZWRcIixwb2ludGVyRXZlbnRzOlwibm9uZVwiLG91dGxpbmVTdHlsZTpcIm5vbmVcIixjb2xvcjpoaX0seG8uYm9yZGVyQ29sb3IoXCJ0cmFuc3BhcmVudFwiKSkse30se2JhY2tncm91bmRDb2xvcjpoaX0pfSkscHJpbWFyeTpuZyhuZyh7YmFja2dyb3VuZENvbG9yOnlpfSx4by5ib3JkZXJDb2xvcih5aSkpLHt9LHtjb2xvcjpiaSxcIjpob3ZlclwiOntiYWNrZ3JvdW5kQ29sb3I6dml9LFwiOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjp2aX0sXCI6YWN0aXZlXCI6e2JhY2tncm91bmRDb2xvcjp2aX19KSxoaWdoQ29udHJhc3Q6e1wiQG1lZGlhIHNjcmVlbiBhbmQgKHByZWZlcnMtY29udHJhc3Q6IG1vcmUpLCAoZm9yY2VkLWNvbG9yczogYWN0aXZlKVwiOm5nKG5nKHt9LHhvLmJvcmRlcldpZHRoKFwiMXB4XCIpKSx4by5ib3JkZXJTdHlsZShcInNvbGlkXCIpKSxcIkBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKVwiOm5nKG5nKG5nKG5nKHttc0hpZ2hDb250cmFzdEFkanVzdDpcIm5vbmVcIixvdXRsaW5lV2lkdGg6XCIxcHhcIixvdXRsaW5lU3R5bGU6XCJzb2xpZFwiLG91dGxpbmVDb2xvcjpcImhpZ2hsaWdodFwifSx4by5ib3JkZXJXaWR0aChcIjFweFwiKSkseG8uYm9yZGVyU3R5bGUoXCJzb2xpZFwiKSkseG8uYm9yZGVyQ29sb3IoXCJoaWdobGlnaHRcIikpLHt9LHtiYWNrZ3JvdW5kQ29sb3I6XCJoaWdobGlnaHRcIixjb2xvcjpcImhpZ2hsaWdodFRleHRcIix0ZXh0RGVjb3JhdGlvbkxpbmU6XCJub25lXCIsXCI6aG92ZXJcIjpuZyhuZyhuZyhuZyh7b3V0bGluZVdpZHRoOlwiMXB4XCIsb3V0bGluZVN0eWxlOlwic29saWRcIixvdXRsaW5lQ29sb3I6XCJoaWdobGlnaHRcIn0seG8uYm9yZGVyV2lkdGgoXCIxcHhcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlckNvbG9yKFwid2luZG93XCIpKSx7fSx7YmFja2dyb3VuZENvbG9yOlwid2luZG93XCIsY29sb3I6XCJoaWdobGlnaHRcIix0ZXh0RGVjb3JhdGlvbkxpbmU6XCJub25lXCIsXCI6Zm9jdXNcIjpuZyhuZyhuZyhuZyh7b3V0bGluZVdpZHRoOlwiMXB4XCIsb3V0bGluZVN0eWxlOlwic29saWRcIixvdXRsaW5lQ29sb3I6XCJ3aW5kb3dUZXh0XCJ9LHhvLmJvcmRlcldpZHRoKFwiMXB4XCIpKSx4by5ib3JkZXJTdHlsZShcInNvbGlkXCIpKSx4by5ib3JkZXJDb2xvcihcIndpbmRvd1wiKSkse30se2JhY2tncm91bmRDb2xvcjpcIndpbmRvd1wiLGNvbG9yOlwiaGlnaGxpZ2h0XCIsdGV4dERlY29yYXRpb25MaW5lOlwidW5kZXJsaW5lXCJ9KX0pLFwiOmZvY3VzXCI6bmcobmcobmcobmcoe291dGxpbmVXaWR0aDpcIjFweFwiLG91dGxpbmVTdHlsZTpcInNvbGlkXCIsb3V0bGluZUNvbG9yOlwid2luZG93VGV4dFwifSx4by5ib3JkZXJXaWR0aChcIjFweFwiKSkseG8uYm9yZGVyU3R5bGUoXCJzb2xpZFwiKSkseG8uYm9yZGVyQ29sb3IoXCJ3aW5kb3dcIikpLHt9LHtiYWNrZ3JvdW5kQ29sb3I6XCJoaWdobGlnaHRcIixjb2xvcjpcImhpZ2hsaWdodFRleHRcIix0ZXh0RGVjb3JhdGlvbkxpbmU6XCJ1bmRlcmxpbmVcIn0pfSl9LGJ1dHRvbkl0ZW06e2Rpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIn19KSxsZz1ibyh7bGlnaHRib3hMYXlvdXQ6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixib3R0b206XCIwXCIsd2lkdGg6XCIxMDAlXCIsdGV4dEFsaWduOlwicmlnaHRcIixcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pXCI6e3RleHRBbGlnbjpcImxlZnRcIn0sXCImIC5leHQtYnV0dG9uLWl0ZW06bm90KDpsYXN0LWNoaWxkKVwiOnttYXJnaW5SaWdodDpcIjRweFwifSxcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pICYgLmV4dC1idXR0b24taXRlbVwiOnttYXJnaW5MZWZ0OlwiNHB4XCJ9fSxhZ3JlZW1lbnRMYXlvdXQ6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIixib3R0b206XCJhdXRvXCIscmlnaHQ6XCJhdXRvXCJ9LG1vdmVkQnV0dG9uczp7Ym90dG9tOlwiYXV0b1wifX0pO2Z1bmN0aW9uIHNnKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBjZyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9zZyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3VnKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpzZyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB1ZyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGRnPWJvKHt0aWxlQ29udGFpbmVyOntwb3NpdGlvbjpcInJlbGF0aXZlXCIsbWF4V2lkdGg6XCJcIi5jb25jYXQoSG8sXCJweFwiKX0scm93VGlsZTp1Zyh7bWFyZ2luQm90dG9tOjAsY29sb3I6XCJpbmhlcml0XCIsZGlzcGxheTpcImJsb2NrXCIsbWFyZ2luTGVmdDpKbyxtYXJnaW5SaWdodDpKb30sS28se21hcmdpbkxlZnQ6ZWksbWFyZ2luUmlnaHQ6ZWl9KSxtaWRkbGU6e2Rpc3BsYXk6XCJ0YWJsZS1jZWxsXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwifSx0aWxlQnV0dG9uU2V0dGluZ3M6Y2coY2coKG9nPXtjdXJzb3I6XCJwb2ludGVyXCIsd2lkdGg6XCIxMDAlXCIsZGlzcGxheTpcInRhYmxlXCIsdGFibGVMYXlvdXQ6XCJmaXhlZFwiLHBhZGRpbmdUb3A6XCJcIi5jb25jYXQoMTIsXCJweFwiKSxwYWRkaW5nUmlnaHQ6XCJcIi5jb25jYXQoR28sXCJweFwiKSxwYWRkaW5nQm90dG9tOlwiXCIuY29uY2F0KDEyLFwicHhcIikscGFkZGluZ0xlZnQ6XCJcIi5jb25jYXQoR28sXCJweFwiKX0sdWcob2csS28se3BhZGRpbmdMZWZ0OlwiXCIuY29uY2F0KFdvLFwicHhcIikscGFkZGluZ1JpZ2h0OlwiXCIuY29uY2F0KFdvLFwicHhcIil9KSx1ZyhvZyxcImJhY2tncm91bmRDb2xvclwiLFwidHJhbnNwYXJlbnRcIiksb2cpLHhvLmJvcmRlcldpZHRoKFwiMHB4XCIpKSx7fSx7XCI6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOllvLGN1cnNvcjpcInBvaW50ZXJcIn0sXCI6Zm9jdXNcIjp7b3V0bGluZVdpZHRoOnFvLG91dGxpbmVDb2xvcjpRbyxvdXRsaW5lU3R5bGU6WG8sYmFja2dyb3VuZENvbG9yOllvfSxcIjphY3RpdmVcIjp7b3V0bGluZVdpZHRoOnFvLG91dGxpbmVDb2xvcjpRbyxvdXRsaW5lU3R5bGU6WG8sYmFja2dyb3VuZENvbG9yOlpvfX0pLHRpbGVUZXh0QWxpZ246e3RleHRBbGlnbjpcImxlZnRcIixcIjpnbG9iYWwoW2Rpcj0ncnRsJ10pXCI6e3RleHRBbGlnbjpcInJpZ2h0XCJ9fSxjb250ZW50OntsaW5lSGVpZ2h0OlwiMTZweFwiLHBhZGRpbmdMZWZ0OlwiXCIuY29uY2F0KDEyLFwicHhcIikscGFkZGluZ1JpZ2h0OlwiXCIuY29uY2F0KDI0LFwicHhcIiksd29yZEJyZWFrOlwiYnJlYWstd29yZFwifSxzbWFsbDp7Zm9udFNpemU6XCI4MCVcIix3b3JkQnJlYWs6XCJicmVhay13b3JkXCJ9LGhlbHBCdXR0b246e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCIzNSVcIixyaWdodDowLFwiOmdsb2JhbChbZGlyPSdydGwnXSlcIjp7bGVmdDowLHJpZ2h0OlwidW5zZXRcIn19LG1lbnVCdXR0b246e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCIzNSVcIixyaWdodDowLHdpZHRoOlwiMjNweFwifSx0aWxlSW1hZ2U6e3Bvc2l0aW9uOlwicmVsYXRpdmVcIix2ZXJ0aWNhbEFsaWduOlwibWlkZGxlXCIsd2lkdGg6dGksaGVpZ2h0OnRpfSxtb3JlT3B0aW9uc1RpbGU6dWcoe21hcmdpbkxlZnQ6XCJhdXRvXCIsbWFyZ2luUmlnaHQ6XCJhdXRvXCIscG9zaXRpb246XCJyZWxhdGl2ZVwiLHdpZHRoOlwiY2FsYygxMDAlIC0gNDBweClcIixtYXJnaW5Cb3R0b206XCJcIi5jb25jYXQoVW8sXCJweFwiKSxtYXhXaWR0aDpcIlwiLmNvbmNhdChIbyxcInB4XCIpLGxpbmVIZWlnaHQ6XCJcIi5jb25jYXQoRm8sXCJweFwiKSxtaW5XaWR0aDpcIlwiLmNvbmNhdCgzMjAsXCJweFwiKSxwYWRkaW5nVG9wOjAscGFkZGluZ0JvdHRvbTowLHBhZGRpbmdMZWZ0OjAscGFkZGluZ1JpZ2h0OjAsd29yZEJyZWFrOlwiYnJlYWstd29yZFwifSxLbyx7bWFyZ2luVG9wOlwiMXB4XCIsbWFyZ2luQm90dG9tOlwiODhweFwiLHBhZGRpbmdMZWZ0OlwiXCIuY29uY2F0KFdvLFwicHhcIikscGFkZGluZ1JpZ2h0OlwiXCIuY29uY2F0KFdvLFwicHhcIiksd2lkdGg6XCIxMDB2d1wiLG1pbldpZHRoOlwiYXV0b1wifSksbW9yZU9wdGlvbnNUaWxlV2l0aEFwcEJyYW5kaW5nOnVnKHt9LEtvLGNnKHt9LHhvLnBhZGRpbmcoMCkpKSxtb3JlT3B0aW9uc1Jvd1RpbGU6dWcoe2JhY2tncm91bmRDb2xvcjp6byxib3hTaGFkb3c6XCJcIi5jb25jYXQoJG8pLHBhZGRpbmdMZWZ0OkpvLHBhZGRpbmdSaWdodDpKb30sS28se2JveFNoYWRvdzpcIm5vbmVcIixwYWRkaW5nTGVmdDplaSxwYWRkaW5nUmlnaHQ6ZWksb3V0bGluZVdpZHRoOnFvLG91dGxpbmVTdHlsZTpcInNvbGlkXCIsb3V0bGluZUNvbG9yOlwicmdiYSgwLDAsMCwuNClcIn0pLG1vcmVPcHRpb25zVGlsZUJ1dHRvblNldHRpbmdzOmNnKGNnKChpZz17Y3Vyc29yOlwicG9pbnRlclwiLHdpZHRoOlwiMTAwJVwiLGRpc3BsYXk6XCJ0YWJsZVwiLHRhYmxlTGF5b3V0OlwiZml4ZWRcIixwYWRkaW5nVG9wOlwiOHB4XCIscGFkZGluZ1JpZ2h0OlwiXCIuY29uY2F0KEdvLFwicHhcIikscGFkZGluZ0JvdHRvbTpcIjhweFwiLHBhZGRpbmdMZWZ0OlwiXCIuY29uY2F0KEdvLFwicHhcIil9LHVnKGlnLEtvLHtwYWRkaW5nTGVmdDpcIlwiLmNvbmNhdChXbyxcInB4XCIpLHBhZGRpbmdSaWdodDpcIlwiLmNvbmNhdChXbyxcInB4XCIpfSksdWcoaWcsXCJiYWNrZ3JvdW5kQ29sb3JcIixcInRyYW5zcGFyZW50XCIpLGlnKSx4by5ib3JkZXJXaWR0aChcIjBweFwiKSkse30se1wiOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjpZbyxjdXJzb3I6XCJwb2ludGVyXCJ9LFwiOmZvY3VzXCI6e291dGxpbmVXaWR0aDpxbyxvdXRsaW5lQ29sb3I6UW8sb3V0bGluZVN0eWxlOlhvLGJhY2tncm91bmRDb2xvcjpZb30sXCI6YWN0aXZlXCI6e291dGxpbmVXaWR0aDpxbyxvdXRsaW5lQ29sb3I6UW8sb3V0bGluZVN0eWxlOlhvLGJhY2tncm91bmRDb2xvcjpab319KSxtb3JlT3B0aW9uc1RpbGVJbWFnZTp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIix3aWR0aDpcIjMycHhcIixoZWlnaHQ6XCIzMnB4XCJ9LHRpbGVFcnJvcjp7cG9zaXRpb246XCJyZWxhdGl2ZVwiLG1pbkhlaWdodDpcIjFweFwiLHBhZGRpbmdMZWZ0OlwiMnB4XCIscGFkZGluZ1JpZ2h0OlwiMnB4XCJ9fSk7ZnVuY3Rpb24gZmcoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHBnKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgZ2c9Ym8oe3RpdGxlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2ZnKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cGcoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmZnKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7Y29sb3I6XCIjMWIxYjFiXCIsZm9udFNpemU6XCIxLjVyZW1cIixmb250V2VpZ2h0OlwiNjAwXCIsbGluZUhlaWdodDpcIjI4cHhcIixtYXJnaW5Ub3A6XCIxNnB4XCIsbWFyZ2luQm90dG9tOlwiMTJweFwifSx4by5wYWRkaW5nKFwiMHB4XCIpKSxpbmxpbmVUaXRsZTp7ZGlzcGxheTpcImlubGluZS1ibG9ja1wiLHZlcnRpY2FsQWxpZ246XCJtaWRkbGVcIn0sc3VidGl0bGU6e2ZvbnRTaXplOlwiLjgxMjVyZW1cIixmb250V2VpZ2h0OjQwMCxsaW5lSGVpZ2h0OlwiMjBweFwifSxpbmxpbmVJY29uOntkaXNwbGF5OlwiaW5saW5lLWJsb2NrXCIsdmVydGljYWxBbGlnbjpcIm1pZGRsZVwiLG1hcmdpblJpZ2h0OlwiMTBweFwifX0pO2Z1bmN0aW9uIG1nKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBoZyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9tZyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2JnKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTptZyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBiZyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHlnPWJvKHt2ZXJ0aWNhbENvbnRhaW5lcjp7ZGlzcGxheTpcInRhYmxlXCIsaGVpZ2h0OlwiMTAwJVwiLHdpZHRoOlwiMTAwJVwifSxiYWNrZ3JvdW5kQ29udGFpbmVyOmJnKHtkaXNwbGF5OlwidGFibGUtY2VsbFwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIixoZWlnaHQ6XCIxMDAlXCJ9LEtvLHtkaXNwbGF5Olwibm9uZVwifSksbGlnaHRib3hDb250YWluZXI6e3dpZHRoOlwiNTAwcHhcIixkaXNwbGF5OlwidGFibGUtY2VsbFwiLHZlcnRpY2FsQWxpZ246XCJ0b3BcIn0sbWFpblNlY3Rpb246e2hlaWdodDpcIjEwMCVcIixkaXNwbGF5OlwidGFibGUtcm93XCJ9LG1haW5Db250YWluZXI6e2Rpc3BsYXk6XCJ0YWJsZS1jZWxsXCJ9LGxpZ2h0Ym94OmhnKGhnKHt9LHhvLm1hcmdpbihcIjIwcHhcIixcImF1dG9cIikpLHt9LGJnKHttaW5XaWR0aDowLGJveFNoYWRvdzpcIm5vbmVcIn0sS28saGcoe21pbldpZHRoOlwiaW5pdGlhbFwifSx4by5tYXJnaW4oXCJhdXRvXCIpKSkpfSksdmc9e30sd2c9YW4ubGVuZ3RoKzc7ZnVuY3Rpb24gU2coKXtmb3IodmFyIGU9bnVsbCx0PVwiXCIsbj1cIlwiLHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgaT1hcmd1bWVudHNbb107aWYoXCJzdHJpbmdcIj09dHlwZW9mIGkpe3ZhciBhPWkuaW5kZXhPZihhbik7aWYoLTE9PT1hKXQrPWkrXCIgXCI7ZWxzZXt2YXIgbD1pLnN1YnN0cihhLHdnKTthPjAmJih0Kz1pLnNsaWNlKDAsYSkpLG4rPWwscltvXT1sfTB9fWlmKFwiXCI9PT1uKXJldHVybiB0LnNsaWNlKDAsLTEpO3ZhciBzPXZnW25dO2lmKHZvaWQgMCE9PXMpcmV0dXJuIHQrcztmb3IodmFyIGM9W10sdT0wO3U8YXJndW1lbnRzLmxlbmd0aDt1Kyspe3ZhciBkPXJbdV07aWYoZCl7dmFyIGY9bG5bZF07ZiYmKGMucHVzaChmWzBdKSxlPWZbMV0pfX12YXIgcD1PYmplY3QuYXNzaWduLmFwcGx5KE9iamVjdCxbe31dLmNvbmNhdChjKSksZz1kbihwLGUpLG09dW4oZyxlKTtyZXR1cm4gZz1tK1wiIFwiK2csdmdbbl09ZyxsblttXT1bcCxlXSx0K2d9ZnVuY3Rpb24gUGcoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHhnKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgT2c9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCxvLnVzZU1lbW8pKChmdW5jdGlvbigpe3ZhciBuPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1BnKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7eGcoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlBnKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7fSxlKTtyZXR1cm4gT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG89cjtuW29dPVNnKG8gaW4gZSYmZVtvXSxvIGluIHQmJnRbb10pfSkpLG59KSxbZSx0XSl9LF9nPWJvKHtkZWZhdWx0OntcIjpmb2N1c1wiOntvdXRsaW5lQ29sb3I6XCJub25lXCIsb3V0bGluZVN0eWxlOlwibm9uZVwiLG91dGxpbmVXaWR0aDpcIm5vbmVcIn19fSksQ2c9XCIwcHggMXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuNDgpXCIsa2c9MmUzLEFnPVwiQG1lZGlhICgtbXMtaGlnaC1jb250cmFzdClcIixUZz1cIkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiAxNDQwcHgpXCIsRWc9XCJAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWRldmljZS13aWR0aDogMTAyNHB4KSwgc2NyZWVuIGFuZCAobWF4LWRldmljZS1oZWlnaHQ6IDcyMHB4KVwiLGpnPVwiQG1lZGlhIChtYXgtd2lkdGg6IFwiLmNvbmNhdCgyZTMsXCJweCksIChtYXgtaGVpZ2h0OiBcIikuY29uY2F0KDM2NixcInB4KVwiKTtmdW5jdGlvbiBJZyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIExnPWJvKHthbHdheXNTaG93OklnKHt9LGpnLHtkaXNwbGF5OlwiaW5oZXJpdFwifSksYmFzZUJhY2tncm91bmQ6SWcoe30samcse2Rpc3BsYXk6XCJub25lXCJ9KX0pO2Z1bmN0aW9uIERnKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBOZyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9EZyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1JnKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpEZyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBSZyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIEJnLFVnLEZnLE1nLHpnLEhnPWJvKHtib2lsZXJQbGF0ZVRleHQ6TmcoTmcoe2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9LHhvLm1hcmdpbigwKSkseG8ucGFkZGluZygwKSl9KSxWZz1cIiMwMDY3QzBcIixXZz1cInRyYW5zcGFyZW50XCIsR2c9XCIjRkZGXCIsJGc9XCIjMDA3OEQ0XCIsS2c9XCJyZ2JhKDAsIDAsIDAsIDAuMTg1OClcIixxZz1cIiMwMDNFOTJcIjtmdW5jdGlvbiBRZyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gWGcoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/UWcoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtZZyhlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6UWcoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gWWcoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBaZz1zZihYZyhYZyhYZygoWWcoQmc9e1wiaHRtbCwgYm9keVwiOlhnKFhnKHt9LHhvLm1hcmdpbigwKSkse30se2hlaWdodDpcIjEwMCVcIn0pLGJvZHk6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsZm9udEZhbWlseTpcIlNlZ29lIFVJIFZhcmlhYmxlLCBTZWdvZSBVSSwgU2VsYXdpaywgVGFob21hLCBWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZlwiLGZvbnRTaXplOlwiODcuNSVcIixvdmVyZmxvdzpcImhpZGRlblwiLFwiJiA+IGRpdiwgJiA+IGZvcm1cIjp7aGVpZ2h0OlwiMTAwJVwifX19LFsnaW5wdXRbdHlwZT1cImNvbG9yXCJdJywnaW5wdXRbdHlwZT1cImRhdGVcIl0nLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0nLCdpbnB1dFt0eXBlPVwiZW1haWxcIl0nLCdpbnB1dFt0eXBlPVwibW9udGhcIl0nLCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJywnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJywnaW5wdXRbdHlwZT1cInNlYXJjaFwiXScsJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLCdpbnB1dFt0eXBlPVwidGV4dFwiXScsJ2lucHV0W3R5cGU9XCJ0aW1lXCJdJywnaW5wdXRbdHlwZT1cInVybFwiXScsJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdJyxcInRleHRhcmVhXCJdLmpvaW4oXCIsIFwiKSx7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixcIjpmb2N1c1wiOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifX0pLFlnKEJnLFsnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScsJ2lucHV0W3R5cGU9XCJzdWJtaXRcIl0nLCdpbnB1dFt0eXBlPVwicmVzZXRcIl0nXS5qb2luKFwiLCBcIiksWGcoWGcoe21pbkhlaWdodDpcIjQwcHhcIixtaW5XaWR0aDpcIjEyOHB4XCIsd2lkdGg6XCJhdXRvICFpbXBvcnRhbnRcIn0seG8ucGFkZGluZyhcIjhweFwiLFwiMTJweFwiLFwiOHB4XCIsXCIxMnB4XCIpKSx7fSx7bGluZUhlaWdodDpcIm5vcm1hbFwiLGJhY2tncm91bmRDb2xvcjpcIiMwMDY3QzBcIixjb2xvcjpcIiNGRkZcIixcIjphY3RpdmVcIjp7YmFja2dyb3VuZENvbG9yOlwiIzAwNzhENFwiLG91dGxpbmU6XCJub25lXCIsdGV4dERlY29yYXRpb246XCJub25lXCIsXCItbXMtdHJhbnNmb3JtXCI6XCJzY2FsZSgxKVwiLFdlYmtpdFRyYW5zZm9ybTpcInNjYWxlKDEpXCIsdHJhbnNmb3JtOlwic2NhbGUoMSlcIn0sXCI6Zm9jdXNcIjp7dGV4dERlY29yYXRpb246XCJub25lXCIsb3V0bGluZTpcIm5vbmVcIn19KSksWWcoQmcsWydpbnB1dFt0eXBlPVwiY29sb3JcIl0nLCdpbnB1dFt0eXBlPVwiZGF0ZVwiXScsJ2lucHV0W3R5cGU9XCJkYXRldGltZVwiXScsJ2lucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXScsJ2lucHV0W3R5cGU9XCJlbWFpbFwiXScsJ2lucHV0W3R5cGU9XCJtb250aFwiXScsJ2lucHV0W3R5cGU9XCJudW1iZXJcIl0nLCdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0nLCdpbnB1dFt0eXBlPVwic2VhcmNoXCJdJywnaW5wdXRbdHlwZT1cInRlbFwiXScsJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJywnaW5wdXRbdHlwZT1cInRpbWVcIl0nLCdpbnB1dFt0eXBlPVwidXJsXCJdJywnaW5wdXRbdHlwZT1cIndlZWtcIl0nLFwidGV4dGFyZWFcIixcInNlbGVjdFwiXS5qb2luKFwiLCBcIikse2hlaWdodDpcIjM2cHggIWltcG9ydGFudFwiLGJvcmRlclJhZGl1czpcIjNweCAhaW1wb3J0YW50XCIscGFkZGluZ0xlZnQ6XCIxMnB4ICFpbXBvcnRhbnRcIixiYWNrZ3JvdW5kOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpXCIsYm9yZGVyOlwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4wNTc4KVwiLGJveFNoYWRvdzpDZyxXZWJraXRCb3hTaGFkb3c6Q2csXCItbW96LWJveC1zaGFkb3dcIjpDZ30pLFlnKEJnLFsnaW5wdXRbdHlwZT1cImNvbG9yXCJdOmhvdmVyJywnaW5wdXRbdHlwZT1cImRhdGVcIl06aG92ZXInLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06aG92ZXInLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06aG92ZXInLCdpbnB1dFt0eXBlPVwiZW1haWxcIl06aG92ZXInLCdpbnB1dFt0eXBlPVwibW9udGhcIl06aG92ZXInLCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmhvdmVyJywnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmhvdmVyJywnaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpob3ZlcicsJ2lucHV0W3R5cGU9XCJ0ZWxcIl06aG92ZXInLCdpbnB1dFt0eXBlPVwidGV4dFwiXTpob3ZlcicsJ2lucHV0W3R5cGU9XCJ0aW1lXCJdOmhvdmVyJywnaW5wdXRbdHlwZT1cInVybFwiXTpob3ZlcicsJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdOmhvdmVyJyxcInRleHRhcmVhOmhvdmVyXCIsXCJzZWxlY3Q6aG92ZXJcIl0uam9pbihcIiwgXCIpLHtiYWNrZ3JvdW5kOlwiI0Y5RjlGOVwiLGJvcmRlcjpcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDU3OClcIn0pLFlnKEJnLFsnaW5wdXRbdHlwZT1cImNvbG9yXCJdOmZvY3VzJywnaW5wdXRbdHlwZT1cImRhdGVcIl06Zm9jdXMnLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06Zm9jdXMnLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06Zm9jdXMnLCdpbnB1dFt0eXBlPVwiZW1haWxcIl06Zm9jdXMnLCdpbnB1dFt0eXBlPVwibW9udGhcIl06Zm9jdXMnLCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmZvY3VzJywnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmZvY3VzJywnaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpmb2N1cycsJ2lucHV0W3R5cGU9XCJ0ZWxcIl06Zm9jdXMnLCdpbnB1dFt0eXBlPVwidGV4dFwiXTpmb2N1cycsJ2lucHV0W3R5cGU9XCJ0aW1lXCJdOmZvY3VzJywnaW5wdXRbdHlwZT1cInVybFwiXTpmb2N1cycsJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdOmZvY3VzJyxcInRleHRhcmVhOmZvY3VzXCIsXCJzZWxlY3Q6Zm9jdXNcIiwnaW5wdXRbdHlwZT1cImNvbG9yXCJdOmFjdGl2ZScsJ2lucHV0W3R5cGU9XCJkYXRlXCJdOmFjdGl2ZScsJ2lucHV0W3R5cGU9XCJkYXRldGltZVwiXTphY3RpdmUnLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06YWN0aXZlJywnaW5wdXRbdHlwZT1cImVtYWlsXCJdOmFjdGl2ZScsJ2lucHV0W3R5cGU9XCJtb250aFwiXTphY3RpdmUnLCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmFjdGl2ZScsJ2lucHV0W3R5cGU9XCJwYXNzd29yZFwiXTphY3RpdmUnLCdpbnB1dFt0eXBlPVwic2VhcmNoXCJdOmFjdGl2ZScsJ2lucHV0W3R5cGU9XCJ0ZWxcIl06YWN0aXZlJywnaW5wdXRbdHlwZT1cInRleHRcIl06YWN0aXZlJywnaW5wdXRbdHlwZT1cInRpbWVcIl06YWN0aXZlJywnaW5wdXRbdHlwZT1cInVybFwiXTphY3RpdmUnLCdpbnB1dFt0eXBlPVwid2Vla1wiXTphY3RpdmUnLFwidGV4dGFyZWE6YWN0aXZlXCIsXCJzZWxlY3Q6YWN0aXZlXCJdLmpvaW4oXCIsIFwiKSx7YmFja2dyb3VuZDpcIiNGRkZcIixib3hTaGFkb3c6XCIwcHggMnB4IDBweCAjMDA2N0MwXCJ9KSxCZyksUmkoKT8oWWcoVWc9e30sWydpbnB1dFt0eXBlPVwiY29sb3JcIl06Oi1tcy1yZXZlYWwnLCdpbnB1dFt0eXBlPVwiZGF0ZVwiXTo6LW1zLXJldmVhbCcsJ2lucHV0W3R5cGU9XCJkYXRldGltZVwiXTo6LW1zLXJldmVhbCcsJ2lucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTo6LW1zLXJldmVhbCcsJ2lucHV0W3R5cGU9XCJlbWFpbFwiXTo6LW1zLXJldmVhbCcsJ2lucHV0W3R5cGU9XCJtb250aFwiXTo6LW1zLXJldmVhbCcsJ2lucHV0W3R5cGU9XCJudW1iZXJcIl06Oi1tcy1yZXZlYWwnLCdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06Oi1tcy1yZXZlYWwnLCdpbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotbXMtcmV2ZWFsJywnaW5wdXRbdHlwZT1cInRlbFwiXTo6LW1zLXJldmVhbCcsJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdOjotbXMtcmV2ZWFsJywnaW5wdXRbdHlwZT1cInRpbWVcIl06Oi1tcy1yZXZlYWwnLCdpbnB1dFt0eXBlPVwidXJsXCJdOjotbXMtcmV2ZWFsJywnaW5wdXRbdHlwZT1cIndlZWtcIl06Oi1tcy1yZXZlYWwnLFwidGV4dGFyZWE6Oi1tcy1yZXZlYWxcIixcInNlbGVjdDo6LW1zLXJldmVhbFwiXS5qb2luKFwiLCBcIikse2JhY2tncm91bmQ6XCJ0cmFuc3BhcmVudFwiLGNvbG9yOlwiIzAwMFwiLG1hcmdpblJpZ2h0OlwiLTRweFwiLG1hcmdpblRvcDpcIi00cHhcIn0pLFlnKFVnLFsnaW5wdXRbdHlwZT1cImNvbG9yXCJdOjotbXMtcmV2ZWFsOmNoZWNrZWQnLCdpbnB1dFt0eXBlPVwiZGF0ZVwiXTo6LW1zLXJldmVhbDpjaGVja2VkJywnaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOjotbXMtcmV2ZWFsOmNoZWNrZWQnLCdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06Oi1tcy1yZXZlYWw6Y2hlY2tlZCcsJ2lucHV0W3R5cGU9XCJlbWFpbFwiXTo6LW1zLXJldmVhbDpjaGVja2VkJywnaW5wdXRbdHlwZT1cIm1vbnRoXCJdOjotbXMtcmV2ZWFsOmNoZWNrZWQnLCdpbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotbXMtcmV2ZWFsOmNoZWNrZWQnLCdpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl06Oi1tcy1yZXZlYWw6Y2hlY2tlZCcsJ2lucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi1tcy1yZXZlYWw6Y2hlY2tlZCcsJ2lucHV0W3R5cGU9XCJ0ZWxcIl06Oi1tcy1yZXZlYWw6Y2hlY2tlZCcsJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdOjotbXMtcmV2ZWFsOmNoZWNrZWQnLCdpbnB1dFt0eXBlPVwidGltZVwiXTo6LW1zLXJldmVhbDpjaGVja2VkJywnaW5wdXRbdHlwZT1cInVybFwiXTo6LW1zLXJldmVhbDpjaGVja2VkJywnaW5wdXRbdHlwZT1cIndlZWtcIl06Oi1tcy1yZXZlYWw6Y2hlY2tlZCcsXCJ0ZXh0YXJlYTo6LW1zLXJldmVhbDpjaGVja2VkXCIsXCJzZWxlY3Q6Oi1tcy1yZXZlYWw6Y2hlY2tlZFwiXS5qb2luKFwiLCBcIikse2JhY2tncm91bmQ6XCIjMDAzRTkyXCIsY29sb3I6XCIjRkZGXCIsYm9yZGVyUmFkaXVzOlwiNHB4XCJ9KSxZZyhVZywnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOjotbXMtcmV2ZWFsJyx7YmFja2dyb3VuZDpcInRyYW5zcGFyZW50XCIsY29sb3I6XCIjMDAwXCIsbWFyZ2luUmlnaHQ6XCItNHB4XCIsbWFyZ2luVG9wOlwiLTRweFwifSksWWcoVWcsJ2lucHV0W3R5cGU9XCJwYXNzd29yZFwiXTo6LW1zLXJldmVhbDpjaGVja2VkJyx7YmFja2dyb3VuZDpcIiMwMDNFOTJcIixjb2xvcjpcIiNGRkZcIixib3JkZXJSYWRpdXM6XCI0cHhcIn0pLFVnKTp7fSkse30seydpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sIGlucHV0W3R5cGU9XCJyYWRpb1wiXSc6e291dGxpbmU6XCJub25lICFpbXBvcnRhbnRcIn19LFJpKCk/eydpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Oi1tcy1jaGVjayc6e2JhY2tncm91bmQ6XCJyZ2JhKDAsIDAsIDAsIDAuMDI0MSlcIixib3JkZXI6XCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjYwNjMpXCIsYm9yZGVyUmFkaXVzOlwiM3B4XCJ9LCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06aG92ZXI6Oi1tcy1jaGVjayc6e2JhY2tncm91bmQ6XCJyZ2JhKDAsIDAsIDAsIDAuMDU3OClcIn0sJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXTpkaXNhYmxlZDo6LW1zLWNoZWNrJzp7Ym9yZGVyOlwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yMTY5KVwifSwnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmZvY3VzOjotbXMtY2hlY2snOntib3JkZXI6XCIycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjg5NTYpXCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLGJvcmRlclJhZGl1czpcIjdweFwifSwnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQ6Oi1tcy1jaGVjayc6e2NvbG9yOlwiI0ZGRkZGRlwiLGJhY2tncm91bmQ6XCIjMDA1RkI4XCIsYm9yZGVyOlwiMXB4IHNvbGlkICMwMDVGQjhcIixib3JkZXJSYWRpdXM6XCIzcHhcIn0sJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXTpjaGVja2VkOmZvY3VzOjotbXMtY2hlY2snOntib3JkZXI6XCIycHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjg5NTYpXCIsYm94U2l6aW5nOlwiYm9yZGVyLWJveFwiLGJvcmRlclJhZGl1czpcIjdweFwifX06e30pLHt9LHthOntjb2xvcjpcIiMwMDZDQkVcIix0ZXh0RGVjb3JhdGlvbjpcIm5vbmVcIixtYXJnaW46XCIxcHggMHB4XCIsb3V0bGluZTpcIm5vbmVcIixwYWRkaW5nOlwiMnB4IDBweFwiLFwiJjphY3RpdmUsICY6aG92ZXIsICY6Zm9jdXNcIjp7dGV4dERlY29yYXRpb246XCJ1bmRlcmxpbmVcIn19LFwiOjpzZWxlY3Rpb25cIjp7Y29sb3I6XCIjRkZGXCIsYmFja2dyb3VuZDpcIiMwMDY3QzBcIn19KSksSmc9Ym8oe2J1dHRvbk1hcmdpbjp7ZGlzcGxheTpcImJsb2NrXCJ9LGZsZXhDb2x1bW46e2Rpc3BsYXk6XCJmbGV4XCIsZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGhlaWdodDpcIjEwMCVcIn0sZmxleENvbnRhaW5lcjpYZyh7ZmxleEdyb3c6MSx3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCJ9LHhvLm92ZXJmbG93KFwiaGlkZGVuXCIsXCJoaWRkZW5cIikpLGZsZXhJRnJhbWU6WGcoWGcoWGcoWGcoe2ZsZXhHcm93OjF9LHhvLmJvcmRlcihcIm5vbmVcIixcIm5vbmVcIixcIm5vbmVcIikpLHhvLm1hcmdpbigwKSkseG8ucGFkZGluZygwKSkse30se3dpZHRoOlwiMTAwJVwifSksZm9ybUNvbnRyb2w6e21heFdpZHRoOlwiMzkwcHhcIn0sZm9ybUdyb3VwOihGZz17cGFkZGluZ0xlZnQ6XCIwcHhcIixwYWRkaW5nUmlnaHQ6XCIwcHhcIn0sWWcoRmcsRWcse21hcmdpbkJvdHRvbTpcIjhweFwifSksWWcoRmcsVGcse21hcmdpbkJvdHRvbTpcIjEycHhcIn0pLEZnKSxmdWxsSGVpZ2h0OntoZWlnaHQ6XCIxMDAlXCJ9LGlubmVyOihNZz17YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixtYXhXaWR0aDpcIlwiLmNvbmNhdChrZyxcInB4XCIpfSxZZyhNZyxqZyxYZyhYZyh7fSx4by5wYWRkaW5nKFwiXCIuY29uY2F0KDAsXCJweFwiKSkpLHt9LHttYXJnaW5Ub3A6XCJcIi5jb25jYXQoMzIsXCJweFwiKSxtYXJnaW5Cb3R0b206XCJcIi5jb25jYXQoMCxcInB4XCIpLHdpZHRoOlwiMTAwdndcIixtaW5XaWR0aDpcImF1dG9cIixcIi13ZWJraXQtYm94LXNoYWRvd1wiOlwibm9uZVwiLFwiLW1vei1ib3gtc2hhZG93XCI6XCJub25lXCIsXCJib3gtc2hhZG93XCI6XCJub25lXCJ9LHhvLmJvcmRlcigwKSkpLFlnKE1nLFRnLHttYXJnaW5Ub3A6XCIwcHhcIn0pLE1nKSxsaWdodGJveENvdmVyOntiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSxtaWRkbGU6e2Rpc3BsYXk6XCJmbGV4XCIsZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGhlaWdodDpcImNhbGMoMTAwJSAtIDc4cHgpXCJ9LG1zYUFncmVlbWVudExheW91dDp7XCImID4gcFwiOnttYXhXaWR0aDpcIm5vbmVcIn19LG91dGVyOlhnKHtkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixoZWlnaHQ6XCIxMDAlXCJ9LHhvLm92ZXJmbG93KFwiaGlkZGVuXCIpKSxwb3NpdGlvbkJ1dHRvbnM6e1wiJiA+IGRpdjpudGgtY2hpbGQoMSlcIjpZZyh7fSxUZyx7bWFyZ2luQm90dG9tOlwiMHB4XCJ9KX0scG9zaXRpb25CdXR0b25zV2l0aEJvdHRvbU1hcmdpbjp7XCImID4gZGl2Om50aC1jaGlsZCgxKVwiOllnKHt9LFRnLHttYXJnaW5Cb3R0b206XCIwcHhcIn0pfSx0b3BNYXJnaW5BZnRlclNlY29uZGFyeUNvbnRlbnQ6WWcoe21hcmdpblRvcDpcIlwiLmNvbmNhdCg1MixcInB4XCIpfSxUZyx7bWFyZ2luVG9wOlwiMHB4XCJ9KSxpbnB1dENvbnRhaW5lcldpdGhvdXRCb2lsZXJQbGF0ZTp7XCImID4gZGl2Om50aC1jaGlsZCgxKVwiOnttYXJnaW5Cb3R0b206XCIwcHhcIn19LHRleHRDYXB0aW9uOih6Zz17Zm9udFNpemU6XCIwLjc1cmVtXCIsbGluZUhlaWdodDpcIjFyZW1cIixtYXJnaW5Ub3A6XCI4cHhcIixtYXJnaW5SaWdodDpcIlwiLG1hcmdpbkJvdHRvbTpcIjhweFwiLG1hcmdpbkxlZnQ6XCJcIixwYWRkaW5nVG9wOlwidW5zZXRcIixwYWRkaW5nQm90dG9tOlwidW5zZXRcIn0sWWcoemcsRWcse2ZvbnRTaXplOlwiMC43cmVtXCIsbGluZUhlaWdodDpcIjAuOTVyZW1cIixtYXJnaW5Cb3R0b206XCIwcHhcIixtYXJnaW5Ub3A6XCI0cHhcIixwYWRkaW5nQm90dG9tOlwiMHB4XCJ9KSxZZyh6ZyxUZyx7Zm9udFNpemU6XCIwLjU2MjVyZW1cIixsaW5lSGVpZ2h0OlwiMC45cmVtXCIsbWFyZ2luVG9wOlwiMnB4XCJ9KSx6Zyksd2lkZTp7bWF4V2lkdGg6XCJcIi5jb25jYXQoa2csXCJweFwiKX0sd2luQnV0dG9uUGluQm90dG9tOntib3R0b206XCI0cHhcIixwYWRkaW5nUmlnaHQ6XCIxNXB4XCIscG9zaXRpb246XCJmaXhlZFwiLHdpZHRoOlwiMTAwJVwifSx3aW5GaWRvRGVzY3JpcHRpb246WGcoe2ZvbnRTaXplOlwiLjkzNzVyZW1cIixmb250V2VpZ2h0OjQwMCxsaW5lSGVpZ2h0OlwiMS4yNXJlbVwiLG1hcmdpblRvcDpcIjEycHhcIixtYXJnaW5Cb3R0b206XCIzMnB4XCJ9LHhvLnBhZGRpbmcoMCkpLHdpbkZpZG9JbWFnZTp7aGVpZ2h0OlwiMjRweFwiLHdpZHRoOlwiMjRweFwiLG1hcmdpblRvcDpcIjE2cHhcIixtYXJnaW5Cb3R0b206XCIxMnB4XCIsbWFyZ2luUmlnaHQ6XCI2cHhcIn0sd2luU2Nyb2xsOllnKHtmbGV4QmFzaXM6XCJhdXRvXCIsZmxleEdyb3c6MSxmbGV4U2hyaW5rOjEsaGVpZ2h0OlwiY2FsYygxMDAlIC0gMTJweClcIixtYXJnaW5Ub3A6XCIxMnB4XCIsXCItbXMtb3ZlcmZsb3ctc3R5bGVcIjpcInNjcm9sbGJhclwiLG92ZXJmbG93WDpcImhpZGRlblwiLG92ZXJmbG93WTpcImF1dG9cIixwYWRkaW5nUmlnaHQ6XCIxMnB4XCJ9LFRnLHttYXJnaW5Ub3A6XCIwcHhcIixtYXJnaW5Cb3R0b206XCItMzBweFwifSkscnRsTWFyZ2luTGVmdDp7XCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOnttYXJnaW5MZWZ0OlwiMTVweFwifX19KTtmdW5jdGlvbiBlbShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gdG0oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/ZW0oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtubShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZW0oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gbm0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBybT1ibyh7YmFubmVyOnRtKHRtKHtiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSx4by5wYWRkaW5nKFwiXCIuY29uY2F0KDAsXCJweFwiKSxcIlwiLmNvbmNhdCg0NCxcInB4XCIpKSkse30sbm0oe21heFdpZHRoOlwiXCIuY29uY2F0KGtnLFwicHhcIil9LGpnLHRtKHRtKHtiYWNrZ3JvdW5kQ29sb3I6XCIjZjJmMmYyXCJ9LHhvLnBhZGRpbmcoXCJcIi5jb25jYXQoMCxcInB4XCIpKSkse30se1dlYmtpdEJveFNoYWRvdzpcIm5vbmVcIixcIi1tb3otYm94LXNoYWRvd1wiOlwibm9uZVwiLGJveFNoYWRvdzpcIm5vbmVcIix0YWJsZUxheW91dDpcImF1dG9cIn0pKSksYmFubmVyVmVydGljYWxTcGxpdDp7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn19KTtmdW5jdGlvbiBvbShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gaW0oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/b20oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXthbShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6b20oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYW0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBsbT1ibyh7YnV0dG9uQ29udGFpbmVyOntcIiYgYnV0dG9uXCI6e21pbkhlaWdodDpcIjMycHhcIixtaW5XaWR0aDpcIjExMHB4XCJ9fSxpbm5lcjp7bWF4V2lkdGg6XCJcIi5jb25jYXQoMjEyMixcInB4XCIpLGJhY2tncm91bmRDb2xvcjpcIiNmZmZmZmZcIn0sb3V0ZXI6e2Rpc3BsYXk6XCJ0YWJsZVwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixoZWlnaHQ6XCIxMDAlXCIsekluZGV4OjEwMCxmaWx0ZXI6XCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuZ3JhZGllbnQoR3JhZGllbnRUeXBlPTAsc3RhcnRDb2xvcnN0cj0nIzhDMDAwMDAwJywgZW5kQ29sb3JzdHI9JyM4QzAwMDAwMCcpXCIsYmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIixtYXJnaW5MZWZ0OlwiNSVcIixtYXJnaW5SaWdodDpcIjUlXCIsb3ZlcmZsb3dZOlwiYXV0b1wiLHdpZHRoOlwiOTAlXCJ9LHdpbkZseW91dDppbShpbShpbShpbSh7fSx4by5ib3JkZXJSYWRpdXMoXCI4cHhcIikpLHhvLmJvcmRlcihcIjFweCBzb2xpZFwiKSkseG8uYm9yZGVyQ29sb3IoXCJyZ2JhKDAsIDAsIDAsIDAuMDU3OCkgIWltcG9ydGFudFwiKSkse30se2JveFNoYWRvdzpcIjBweCA4cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMTQpXCIsd2lkdGg6XCIxMDAlXCJ9KX0pO2Z1bmN0aW9uIHNtKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBjbShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9zbShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3VtKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpzbShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB1bShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGRtPWJvKHtzbGlkaW5nTGluZUFuaW1hdGlvbjpjbSh7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHdpZHRoOlwiY2FsYygxMDAlIC0gMTlweClcIixoZWlnaHQ6XCI1cHhcIix0b3A6XCIycHhcIixsZWZ0OlwiMnB4XCJ9LHhvLm92ZXJmbG93KFwiaGlkZGVuXCIsXCJoaWRkZW5cIikpLHN1YmxpbmU6Y20oe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIixiYWNrZ3JvdW5kQ29sb3I6XCIjMDA1RkI3XCIsaGVpZ2h0OlwiM3B4XCJ9LHhvLmJvcmRlclJhZGl1cyhcIjNweFwiKSksaW5jOnthbmltYXRpb25EdXJhdGlvbjpcIjIuNHNcIixhbmltYXRpb25JdGVyYXRpb25Db3VudDpcImluZmluaXRlXCIsYW5pbWF0aW9uTmFtZTp7ZnJvbTp7bGVmdDpcIi01JVwiLHdpZHRoOlwiNSVcIn0sdG86e2xlZnQ6XCIxMzAlXCIsd2lkdGg6XCIxMDAlXCJ9fX0sZGVjOnthbmltYXRpb25EZWxheTpcIjAuNnNcIixhbmltYXRpb25EdXJhdGlvbjpcIjIuNHNcIixhbmltYXRpb25JdGVyYXRpb25Db3VudDpcImluZmluaXRlXCIsYW5pbWF0aW9uTmFtZTp7ZnJvbTp7bGVmdDpcIi04MCVcIix3aWR0aDpcIjgwJVwifSx0bzp7bGVmdDpcIjExMCVcIix3aWR0aDpcIjEwJVwifX19fSksZm09Ym8oe2NvbnRhaW5lckxheW91dDp7cGFkZGluZ0xlZnQ6XCIwcHhcIixwYWRkaW5nUmlnaHQ6XCIwcHhcIn19KTtmdW5jdGlvbiBwbShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gZ20oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cG0oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXttbShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6cG0oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gbW0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBobT1ibyh7ZGVmYXVsdDpnbShnbShnbSh7YmFja2dyb3VuZENvbG9yOldnLGNvbG9yOlZnfSx4by5ib3JkZXIoXCJub25lXCIpKSx7fSx7bWluSGVpZ2h0OlwiNDBweFwiLG1pbldpZHRoOlwiMTI4cHhcIix3aWR0aDpcImF1dG8gIWltcG9ydGFudFwifSx4by5wYWRkaW5nKFwiOHB4XCIsXCIxMnB4XCIsXCI4cHhcIixcIjEycHhcIikpLHt9LHtsaW5lSGVpZ2h0Olwibm9ybWFsXCIsXCI6YWN0aXZlXCI6e2JhY2tncm91bmRDb2xvcjpXZyxjb2xvcjpWZyxvdXRsaW5lQ29sb3I6XCJub25lXCIsb3V0bGluZVN0eWxlOlwibm9uZVwiLG91dGxpbmVXaWR0aDpcIm5vbmVcIn0sXCI6Zm9jdXNcIjp7YmFja2dyb3VuZENvbG9yOldnLGJveFNoYWRvdzpcIjBweCAwcHggMHB4IDFweCAjRkZGLCAwcHggMHB4IDBweCAzcHggIzAwMFwiLGNvbG9yOlZnLG91dGxpbmVDb2xvcjpcIm5vbmVcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZVdpZHRoOlwibm9uZVwiLFwiOmFjdGl2ZVwiOntiYWNrZ3JvdW5kQ29sb3I6V2csY29sb3I6Vmd9fSxcIjpob3ZlclwiOntiYWNrZ3JvdW5kQ29sb3I6V2csY29sb3I6XCIjMDAxQTY4XCIsdGV4dERlY29yYXRpb25MaW5lOlwidW5kZXJsaW5lXCIsdGV4dERlY29yYXRpb25TdHlsZTpcInVuZGVybGluZVwiLHRleHREZWNvcmF0aW9uQ29sb3I6XCJ1bmRlcmxpbmVcIix0ZXh0RGVjb3JhdGlvblRoaWNrbmVzczpcInVuZGVybGluZVwifSxcIkBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKVwiOmdtKGdtKGdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6XCJ3aW5kb3dcIn0seG8uYm9yZGVyQ29sb3IoXCJ0cmFuc3BhcmVudFwiKSkseG8uYm9yZGVyU3R5bGUoXCJzb2xpZFwiKSkseG8uYm9yZGVyV2lkdGgoXCIycHhcIikpLHt9LHtjb2xvcjpcIkhpZ2hsaWdodFwiLG91dGxpbmVDb2xvcjpcIldpbmRvd1RleHRcIixvdXRsaW5lU3R5bGU6XCJzb2xpZFwiLG91dGxpbmVXaWR0aDpcIjFweFwiLHRleHREZWNvcmF0aW9uTGluZTpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvblN0eWxlOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uQ29sb3I6XCJpbml0aWFsXCIsdGV4dERlY29yYXRpb25UaGlja25lc3M6XCJpbml0aWFsXCIsXCI6YWN0aXZlXCI6Z20oZ20oZ20oZ20oe2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCJ9LHhvLmJvcmRlckNvbG9yKFwidHJhbnNwYXJlbnRcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlcldpZHRoKFwiMnB4XCIpKSx7fSx7Y29sb3I6Vmcsb3V0bGluZUNvbG9yOlwiaW5pdGlhbFwiLG91dGxpbmVTdHlsZTpcIm5vbmVcIixvdXRsaW5lV2lkdGg6XCJpbml0aWFsXCIsdGV4dERlY29yYXRpb25MaW5lOlwibm9uZVwiLHRleHREZWNvcmF0aW9uU3R5bGU6XCJpbml0aWFsXCIsdGV4dERlY29yYXRpb25Db2xvcjpcImluaXRpYWxcIix0ZXh0RGVjb3JhdGlvblRoaWNrbmVzczpcImluaXRpYWxcIix0cmFuc2Zvcm06XCJzY2FsZSgwLjk4KVwifSksXCI6Zm9jdXNcIjpnbShnbShnbShnbSh7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0seG8uYm9yZGVyQ29sb3IoXCJXaW5kb3dUZXh0XCIpKSx4by5ib3JkZXJTdHlsZShcInNvbGlkXCIpKSx4by5ib3JkZXJXaWR0aChcIjFweFwiKSkse30se2NvbG9yOlZnLG91dGxpbmVDb2xvcjpcImluaXRpYWxcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZVdpZHRoOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uTGluZTpcInVuZGVybGluZVwiLHRleHREZWNvcmF0aW9uU3R5bGU6XCJpbml0aWFsXCIsdGV4dERlY29yYXRpb25Db2xvcjpcImluaXRpYWxcIix0ZXh0RGVjb3JhdGlvblRoaWNrbmVzczpcImluaXRpYWxcIixcIjphY3RpdmVcIjpnbShnbShnbShnbSh7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0seG8uYm9yZGVyQ29sb3IoXCJXaW5kb3dUZXh0XCIpKSx4by5ib3JkZXJTdHlsZShcInNvbGlkXCIpKSx4by5ib3JkZXJXaWR0aChcIjFweFwiKSkse30se2NvbG9yOlZnLG91dGxpbmVDb2xvcjpcImluaXRpYWxcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZVdpZHRoOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uTGluZTpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvblN0eWxlOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uQ29sb3I6XCJpbml0aWFsXCIsdGV4dERlY29yYXRpb25UaGlja25lc3M6XCJpbml0aWFsXCIsdHJhbnNmb3JtOlwic2NhbGUoMC45OClcIn0pLFwiOmhvdmVyXCI6Z20oZ20oZ20oZ20oe2JhY2tncm91bmRDb2xvcjpcIkhpZ2hsaWdodFwifSx4by5ib3JkZXJDb2xvcihcIldpbmRvd1RleHRcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlcldpZHRoKFwiMXB4XCIpKSx7fSx7Y29sb3I6XCJIaWdobGlnaHRUZXh0XCIsb3V0bGluZUNvbG9yOlwiV2luZG93VGV4dFwiLG91dGxpbmVTdHlsZTpcInNvbGlkXCIsb3V0bGluZVdpZHRoOlwiMXB4XCIsdGV4dERlY29yYXRpb25MaW5lOlwidW5kZXJsaW5lXCIsdGV4dERlY29yYXRpb25TdHlsZTpcImluaXRpYWxcIix0ZXh0RGVjb3JhdGlvbkNvbG9yOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uVGhpY2tuZXNzOlwiaW5pdGlhbFwiLFwiOmFjdGl2ZVwiOmdtKGdtKGdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSx4by5ib3JkZXJDb2xvcihcIldpbmRvd1RleHRcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlcldpZHRoKFwiMXB4XCIpKSx7fSx7Y29sb3I6Vmcsb3V0bGluZUNvbG9yOlwiaW5pdGlhbFwiLG91dGxpbmVTdHlsZTpcIm5vbmVcIixvdXRsaW5lV2lkdGg6XCJpbml0aWFsXCIsdGV4dERlY29yYXRpb25MaW5lOlwidW5kZXJsaW5lXCIsdGV4dERlY29yYXRpb25TdHlsZTpcImluaXRpYWxcIix0ZXh0RGVjb3JhdGlvbkNvbG9yOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uVGhpY2tuZXNzOlwiaW5pdGlhbFwiLHRyYW5zZm9ybTpcInNjYWxlKDAuOTgpXCJ9KX0pfSksXCI6aG92ZXJcIjpnbShnbShnbShnbSh7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0seG8uYm9yZGVyQ29sb3IoXCJIaWdobGlnaHRcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlcldpZHRoKFwiMXB4XCIpKSx7fSx7Y29sb3I6XCIjMDAxQTY4XCIsb3V0bGluZUNvbG9yOlwiV2luZG93VGV4dFwiLG91dGxpbmVTdHlsZTpcInNvbGlkXCIsb3V0bGluZVdpZHRoOlwiMXB4XCIsdGV4dERlY29yYXRpb25MaW5lOlwidW5kZXJsaW5lXCIsdGV4dERlY29yYXRpb25TdHlsZTpcImluaXRpYWxcIix0ZXh0RGVjb3JhdGlvbkNvbG9yOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uVGhpY2tuZXNzOlwiaW5pdGlhbFwiLFwiOmFjdGl2ZVwiOmdtKGdtKGdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwifSx4by5ib3JkZXJDb2xvcihcIkhpZ2hsaWdodFwiKSkseG8uYm9yZGVyU3R5bGUoXCJzb2xpZFwiKSkseG8uYm9yZGVyV2lkdGgoXCIxcHhcIikpLHt9LHtjb2xvcjpWZyxvdXRsaW5lQ29sb3I6XCJpbml0aWFsXCIsb3V0bGluZVN0eWxlOlwibm9uZVwiLG91dGxpbmVXaWR0aDpcImluaXRpYWxcIix0ZXh0RGVjb3JhdGlvbkxpbmU6XCJub25lXCIsdGV4dERlY29yYXRpb25TdHlsZTpcImluaXRpYWxcIix0ZXh0RGVjb3JhdGlvbkNvbG9yOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uVGhpY2tuZXNzOlwiaW5pdGlhbFwiLHRyYW5zZm9ybTpcInNjYWxlKDAuOTgpXCJ9KX0pfSl9KSxidXR0b25JdGVtOntcIjpsYXN0LWNoaWxkXCI6e21hcmdpblJpZ2h0OlwiM3B4XCJ9LFwiOmdsb2JhbChbZGlyPSdydGwnXSlcIjp7XCI6bGFzdC1jaGlsZFwiOnttYXJnaW5MZWZ0OlwiMzBweFwifX19LHByaW1hcnk6e2JhY2tncm91bmRDb2xvcjpcIiMwMDY3QzBcIixjb2xvcjpHZyxcIjphY3RpdmVcIjp7YmFja2dyb3VuZENvbG9yOiRnLGNvbG9yOkdnLG91dGxpbmVDb2xvcjpcIm5vbmVcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZVdpZHRoOlwibm9uZVwiLHRleHREZWNvcmF0aW9uTGluZTpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvblN0eWxlOlwibm9uZVwiLHRleHREZWNvcmF0aW9uQ29sb3I6XCJub25lXCIsdGV4dERlY29yYXRpb25UaGlja25lc3M6XCJub25lXCIsXCItbXMtdHJhbnNmb3JtXCI6XCJzY2FsZSgxKVwiLFwiLXdlYmtpdC10cmFuc2Zvcm1cIjpcInNjYWxlKDEpXCIsdHJhbnNmb3JtOlwic2NhbGUoMSlcIn0sXCI6ZGlzYWJsZWRcIjp7YmFja2dyb3VuZENvbG9yOktnLFwiOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjpLZ319LFwiOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjpxZyxjb2xvcjpHZyx0ZXh0RGVjb3JhdGlvbkxpbmU6XCJub25lXCIsdGV4dERlY29yYXRpb25TdHlsZTpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvbkNvbG9yOlwibm9uZVwiLHRleHREZWNvcmF0aW9uVGhpY2tuZXNzOlwibm9uZVwiLFwiOmFjdGl2ZVwiOntiYWNrZ3JvdW5kQ29sb3I6JGcsY29sb3I6R2d9fSxcIjpob3ZlclwiOntiYWNrZ3JvdW5kQ29sb3I6cWcsY29sb3I6R2csdGV4dERlY29yYXRpb25MaW5lOlwibm9uZVwiLHRleHREZWNvcmF0aW9uU3R5bGU6XCJub25lXCIsdGV4dERlY29yYXRpb25Db2xvcjpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvblRoaWNrbmVzczpcIm5vbmVcIixcIjpkaXNhYmxlZFwiOntiYWNrZ3JvdW5kQ29sb3I6S2d9fSxcIkBtZWRpYSBzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKVwiOmdtKGdtKGdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6XCJIaWdobGlnaHRcIn0seG8uYm9yZGVyQ29sb3IoXCJIaWdobGlnaHRcIikpLHhvLmJvcmRlclN0eWxlKFwic29saWRcIikpLHhvLmJvcmRlcldpZHRoKFwiMXB4XCIpKSx7fSx7Y29sb3I6XCJIaWdobGlnaHRUZXh0XCIsb3V0bGluZUNvbG9yOlwiSGlnaGxpZ2h0XCIsb3V0bGluZVN0eWxlOlwic29saWRcIixvdXRsaW5lV2lkdGg6XCIxcHhcIix0ZXh0RGVjb3JhdGlvbkNvbG9yOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uTGluZTpcIm5vbmVcIix0ZXh0RGVjb3JhdGlvblN0eWxlOlwiaW5pdGlhbFwiLHRleHREZWNvcmF0aW9uVGhpY2tuZXNzOlwiaW5pdGlhbFwiLFwiOmFjdGl2ZVwiOmdtKGdtKGdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6JGd9LHhvLmJvcmRlckNvbG9yKFwiSGlnaGxpZ2h0XCIpKSx4by5ib3JkZXJTdHlsZShcInNvbGlkXCIpKSx4by5ib3JkZXJXaWR0aChcIjFweFwiKSkse30se2NvbG9yOlwiSGlnaGxpZ2h0VGV4dFwiLG91dGxpbmVDb2xvcjpcImluaXRpYWxcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZVdpZHRoOlwiaW5pdGlhbFwiLHRyYW5zZm9ybTpcInNjYWxlKDEpXCJ9KSxcIjpmb2N1c1wiOmdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6cWd9LHhvLmJvcmRlckNvbG9yKFwid2luZG93XCIpKSx7fSx7b3V0bGluZUNvbG9yOlwiaW5pdGlhbFwiLG91dGxpbmVTdHlsZTpcIm5vbmVcIixvdXRsaW5lV2lkdGg6XCJpbml0aWFsXCIsdGV4dERlY29yYXRpb25MaW5lOlwibm9uZVwiLFwiOmFjdGl2ZVwiOmdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6JGd9LHhvLmJvcmRlckNvbG9yKFwid2luZG93XCIpKSx7fSx7Y29sb3I6XCJIaWdobGlnaHRUZXh0XCIsdHJhbnNmb3JtOlwic2NhbGUoMSlcIn0pLFwiOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjpcIndpbmRvd1wiLGNvbG9yOlwiSGlnaGxpZ2h0XCIsb3V0bGluZUNvbG9yOlwiV2luZG93VGV4dFwiLG91dGxpbmVTdHlsZTpcInNvbGlkXCIsb3V0bGluZVdpZHRoOlwiMXB4XCIsdGV4dERlY29yYXRpb25MaW5lOlwidW5kZXJsaW5lXCIsXCI6YWN0aXZlXCI6e2JhY2tncm91bmRDb2xvcjpcIndpbmRvd1wiLGNvbG9yOlwiSGlnaGxpZ2h0XCIsb3V0bGluZUNvbG9yOlwiV2luZG93VGV4dFwiLG91dGxpbmVTdHlsZTpcInNvbGlkXCIsb3V0bGluZVdpZHRoOlwiMXB4XCIsdGV4dERlY29yYXRpb25MaW5lOlwidW5kZXJsaW5lXCJ9fX0pLFwiOmhvdmVyXCI6Z20oZ20oe2JhY2tncm91bmRDb2xvcjpxZ30seG8uYm9yZGVyQ29sb3IoXCJ3aW5kb3dcIikpLHt9LHtjb2xvcjpcIkhpZ2hsaWdodFwiLFwiOmFjdGl2ZVwiOmdtKGdtKHtiYWNrZ3JvdW5kQ29sb3I6JGd9LHhvLmJvcmRlckNvbG9yKFwid2luZG93XCIpKSx7fSx7Y29sb3I6XCJIaWdobGlnaHRcIixvdXRsaW5lQ29sb3I6XCJpbml0aWFsXCIsb3V0bGluZVN0eWxlOlwibm9uZVwiLG91dGxpbmVXaWR0aDpcImluaXRpYWxcIix0cmFuc2Zvcm06XCJzY2FsZSgxKVwifSl9KX0pfSx3aW5CdXR0b246Z20oZ20oZ20oZ20oZ20oe1wiLW1zLWhpZ2gtY29udHJhc3QtYWRqdXN0XCI6XCJub25lXCIsXCItbXMtdXNlci1zZWxlY3RcIjpcIm5vbmVcIn0seG8uYm9yZGVyKFwiMXB4XCIsXCJzb2xpZFwiLFwicmdiYSgwLCAwLCAwLCAwLjIxNjkpXCIpKSx4by5ib3JkZXJDb2xvcihXZykpLHhvLmJvcmRlclJhZGl1cyhcIjRweFwiKSkse30se2JveFNpemluZzpcImJvcmRlci1ib3hcIixmb250U2l6ZTpcIjFyZW1cIixmb250V2VpZ2h0OlwiNDAwXCJ9LHhvLm1hcmdpbigwKSkse30se21pbkhlaWdodDpcIjQwcHhcIix3aGl0ZVNwYWNlOlwibm9ybWFsXCIsd2lkdGg6XCIxNDRweFwiLFwiJltkaXNhYmxlZF1cIjp7XCI6aG92ZXJcIjpnbSh7fSx4by5ib3JkZXIoMCkpfSxcIjpmb2N1c1wiOntcIjpmb2N1cy12aXNpYmxlXCI6e2JveFNoYWRvdzpcIjBweCAwcHggMHB4IDFweCAjRkZGLCAwcHggMHB4IDBweCAzcHggIzAwMFwifSxib3hTaGFkb3c6XCJub25lXCIsb3V0bGluZUNvbG9yOlwibm9uZVwiLG91dGxpbmVTdHlsZTpcIm5vbmVcIixvdXRsaW5lV2lkdGg6XCJub25lXCIsXCI6YWN0aXZlXCI6e291dGxpbmVDb2xvcjpcIm5vbmVcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZVdpZHRoOlwibm9uZVwifSxcIjpob3ZlclwiOmdtKGdtKHt9LHhvLmJvcmRlcihcIm5vbmVcIikpLHt9LHtcIjphY3RpdmVcIjp7b3V0bGluZUNvbG9yOlwibm9uZVwiLG91dGxpbmVTdHlsZTpcIm5vbmVcIixvdXRsaW5lV2lkdGg6XCJub25lXCJ9fSl9fSl9KSxibT1cIjI0cHhcIix5bT1cIi0yNHB4XCI7ZnVuY3Rpb24gdm0oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHdtKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3ZtKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7U20oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnZtKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFNtKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgUG09Ym8oe2NvbnRlbnQ6e1wiJiA+ICpcIjp7d29yZFdyYXA6XCJicmVhay13b3JkXCJ9LGxpbmVIZWlnaHQ6XCJpbmhlcml0XCIscGFkZGluZ0xlZnQ6XCIwcHhcIixwYWRkaW5nUmlnaHQ6XCIwcHhcIn0saGVscEJ1dHRvbjpTbSh7fSxqZyx7bWFyZ2luTGVmdDpcIlwiLmNvbmNhdCgwLFwicHhcIiksbWFyZ2luUmlnaHQ6XCJcIi5jb25jYXQoMCxcInB4XCIpfSksbGlzdDp7Y29sb3I6XCIjNDA0MDQwXCIsXCItbXMtdXNlci1zZWxlY3RcIjpcIm5vbmVcIix0ZXh0QWxpZ246XCJsZWZ0XCIsXCI6Z2xvYmFsKFtkaXI9J3J0bCddKVwiOnt0ZXh0QWxpZ246XCJyaWdodFwifX0sbGlzdEl0ZW06U20oe2Rpc3BsYXk6XCJibG9ja1wiLGxpc3RTdHlsZUltYWdlOlwiY2lyY2xlXCIsbGlzdFN0eWxlUG9zaXRpb246XCJjaXJjbGVcIixsaXN0U3R5bGVUeXBlOlwiZGlzY1wiLG1hcmdpblJpZ2h0OlwiMTlweFwiLG1hcmdpbkJvdHRvbTpcIjNweFwiLG1hcmdpbkxlZnQ6XCI0cHhcIixtYXJnaW5Ub3A6XCIwcHhcIixcIi1tcy1oaWdoLWNvbnRyYXN0LWFkanVzdFwiOlwibm9uZVwiLFwiLW1zLXVzZXItc2VsZWN0XCI6XCJub25lXCIsXCImIGRpdlwiOnt0ZXh0QWxpZ246XCJsZWZ0XCJ9LFwiOmdsb2JhbChbZGlyPSdydGwnXSlcIjp7bWFyZ2luTGVmdDpcIjE5cHhcIixcIiYgZGl2XCI6e3RleHRBbGlnbjpcInJpZ2h0XCJ9fSxcIjpmb2N1c1wiOntib3hTaGFkb3c6XCIwcHggMHB4IDBweCAxcHggI0ZGRiwgMHB4IDBweCAwcHggM3B4ICMwMDBcIixvdXRsaW5lV2lkdGg6XCJub25lXCIsb3V0bGluZVN0eWxlOlwibm9uZVwiLG91dGxpbmVDb2xvcjpcIm5vbmVcIn0sXCI6Zm9jdXM6YWN0aXZlXCI6e291dGxpbmVXaWR0aDpcIm5vbmVcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZUNvbG9yOlwibm9uZVwifX0sQWcsd20od20oe30seG8uYm9yZGVyKFwiMXB4XCIsXCJzb2xpZFwiLFwidHJhbnNwYXJlbnRcIikpLHt9LHtcIjphY3RpdmVcIjp7YmFja2dyb3VuZENvbG9yOlwiQnV0dG9uVGV4dFwiLGNvbG9yOlwiQnV0dG9uRmFjZVwifSxcIjpmb2N1c1wiOntib3hTaGFkb3c6XCIwcHggMHB4IDBweCAxcHggQnV0dG9uRmFjZSwgMHB4IDBweCAwcHggM3B4IEhpZ2hsaWdodFwifSxcIjpob3ZlclwiOndtKHt9LHhvLmJvcmRlcihcIjFweFwiLFwic29saWRcIixcImhpZ2hsaWdodFwiKSl9KSksbGlzdEl0ZW1Jbkxpc3Q6d20od20od20od20oe2JhY2tncm91bmRDb2xvcjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KVwifSx4by5ib3JkZXIoXCIxcHhcIixcInNvbGlkXCIsXCJyZ2JhKDAsIDAsIDAsIDAuMjE2OSlcIikpLHhvLmJvcmRlclJhZGl1cyhcIjRweFwiKSkse30se21hcmdpbkJvdHRvbTpcIjhweFwifSx4by5ib3JkZXIoXCIxcHhcIixcInNvbGlkXCIsXCIjRTlFOUU5XCIpKSx7fSxTbSh7fSxBZyx7YmFja2dyb3VuZENvbG9yOlwiQnV0dG9uRmFjZVwiLFwiOmhvdmVyXCI6d20oe30seG8uYm9yZGVyQ29sb3IoXCJIaWdobGlnaHRcIikpfSkpLG1lbnVCdXR0b246e3dpZHRoOlwiMjNweFwifSxtaWRkbGU6e1wiOm50aC1jaGlsZCgxKVwiOntcIiYgKyAmXCI6e3dpZHRoOlwiMTAwJVwifX19LG1vcmVPcHRpb25zUm93VGlsZTpTbSh7YmFja2dyb3VuZENvbG9yOlwidHJhbnNwYXJlbnRcIn0samcse2JveFNoYWRvdzpcIm5vbmVcIixwYWRkaW5nTGVmdDp5bSxwYWRkaW5nUmlnaHQ6eW0sb3V0bGluZVdpZHRoOlwiMXB4XCIsb3V0bGluZVN0eWxlOlwic29saWRcIixvdXRsaW5lQ29sb3I6XCJyZ2JhKDAsMCwwLC40KVwifSksbW9yZU9wdGlvbnNUaWxlOlNtKHtiYWNrZ3JvdW5kQ29sb3I6XCJ0cmFuc3BhcmVudFwiLG1heFdpZHRoOlwiXCIuY29uY2F0KGtnLFwicHhcIil9LGpnLHttYXJnaW5Ub3A6XCIxcHhcIixtYXJnaW5Cb3R0b206XCI4OHB4XCIscGFkZGluZ0xlZnQ6XCJcIi5jb25jYXQoMCxcInB4XCIpLHBhZGRpbmdSaWdodDpcIlwiLmNvbmNhdCgwLFwicHhcIiksd2lkdGg6XCIxMDB2d1wiLG1pbldpZHRoOlwiYXV0b1wifSkscm93VGlsZTpTbSh7XCI6bm90KC5uby1waWNrKVwiOntjdXJzb3I6XCJwb2ludGVyXCIsXCI6YWN0aXZlXCI6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsY29sb3I6XCJpbmhlcml0XCJ9LFwiOmhvdmVyXCI6e2JhY2tncm91bmRDb2xvcjpcInRyYW5zcGFyZW50XCIsY29sb3I6XCJpbmhlcml0XCJ9fSxjb2xvcjpcImluaGVyaXRcIixjdXJzb3I6XCJwb2ludGVyXCIsZGlzcGxheTpcImJsb2NrXCIsbWFyZ2luQm90dG9tOlwiMHB4XCIsb3V0bGluZUNvbG9yOlwibm9uZVwiLG91dGxpbmVTdHlsZTpcIm5vbmVcIixvdXRsaW5lV2lkdGg6XCJub25lXCJ9LGpnLHttYXJnaW5MZWZ0OjAsbWFyZ2luUmlnaHQ6MH0pLHRpbGVCdXR0b25TZXR0aW5nczp3bSh3bSh7XCImW3JvbGU9bGlzdGl0ZW1dXCI6e2Rpc3BsYXk6XCJ0YWJsZVwiLG1hcmdpbkxlZnQ6XCIwcHhcIn0sXCI6aG92ZXJcIjp7YmFja2dyb3VuZENvbG9yOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpXCJ9LFwiOmZvY3VzXCI6e2JhY2tncm91bmRDb2xvcjpcInJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KVwiLG91dGxpbmVDb2xvcjpcIm5vbmVcIixvdXRsaW5lU3R5bGU6XCJub25lXCIsb3V0bGluZVdpZHRoOlwibm9uZVwifSxcIjphY3RpdmVcIjp7YmFja2dyb3VuZENvbG9yOlwicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpXCJ9fSx4by5wYWRkaW5nKFwiXCIuY29uY2F0KDEyLFwicHhcIiksXCJcIi5jb25jYXQoMjgsXCJweFwiKSxcIlwiLmNvbmNhdCgxMixcInB4XCIpLFwiXCIuY29uY2F0KDEyLFwicHhcIikpKSx7fSx7d2lkdGg6XCJjYWxjKDEwMCUgLSAxOXB4KVwifSksdGlsZUNvbnRhaW5lcjp7bWF4V2lkdGg6XCJcIi5jb25jYXQoa2csXCJweFwiKX0sdGlsZUltYWdlOnt3aWR0aDpibSxoZWlnaHQ6Ym19fSk7dmFyIHhtLE9tLF9tLENtPWJvKHt0aXRsZTp7Zm9udFNpemU6XCIxLjI1cmVtXCIsbGluZUhlaWdodDpcIjEuNXJlbVwifSxwYWdlVGl0bGU6e1wiJiBoMVwiOntcIi1tcy11c2VyLXNlbGVjdFwiOlwibm9uZVwiLGZvbnRTaXplOlwiMS43NXJlbVwiLGZvbnRXZWlnaHQ6XCI1MDBcIixsaW5lSGVpZ2h0OlwiMnJlbVwiLHBhZGRpbmdCb3R0b206XCIzLjM2MjhweFwiLHBhZGRpbmdUb3A6XCIzLjM2MjhweFwifX0scGFnZURlc2NyaXB0aW9uOih4bT17XCItbXMtdXNlci1zZWxlY3RcIjpcIm5vbmVcIixjb2xvcjpcIiM2NjZcIixmb250U2l6ZTpcIjFyZW1cIixsaW5lSGVpZ2h0OlwiMS4zM3JlbVwifSxPbT1UZyxfbT17ZGlzcGxheTpcIm5vbmVcIn0sT20gaW4geG0/T2JqZWN0LmRlZmluZVByb3BlcnR5KHhtLE9tLHt2YWx1ZTpfbSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnhtW09tXT1fbSx4bSl9KTtmdW5jdGlvbiBrbShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gQW0oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/a20oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtUbShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6a20oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gVG0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBFbT17dXNlQWdyZWVtZW50Vmlld1N0eWxlczpJbyx1c2VBcmtvc2VFbmZvcmNlbWVudFN0eWxlczpSbyx1c2VCYWNrQXJyb3dCdXR0b25TdHlsZXM6aWksdXNlQmFja2dyb3VuZExvZ29TdHlsZXM6Y2ksdXNlQmFja2dyb3VuZFN0eWxlczpmaSx1c2VCYW5uZXJMb2dvU3R5bGVzOnBpLHVzZUJlbmVmaXRzVmlld1N0eWxlczpnaSx1c2VCb2lsZXJQbGF0ZVN0eWxlczpDaSx1c2VDaGVja2JveFN0eWxlczpLZCx1c2VDYXB0Y2hhVmlld1N0eWxlczpKZCx1c2VDb21tb25TdHlsZXM6UGYsdXNlQ3JpdGljYWxFcnJvclBhZ2VTdHlsZXM6Q2YsdXNlRGVidWdEZXRhaWxzQmFubmVyU3R5bGVzOkVmLHVzZURlYnVnVHJhY2VTdHlsZXM6amYsdXNlRGlhbG9nU3R5bGVzOk5mLHVzZUVudmlyb25tZW50QmFubmVyU3R5bGVzOkZmLHVzZUZsb2F0aW5nRHJvcGRvd25TdHlsZXM6VmYsdXNlRm9vdGVyU3R5bGVzOktmLHVzZUhlYWRlclN0eWxlczpZZix1c2VIZWxwQnV0dG9uU3R5bGVzOnRwLHVzZUhpcENoYWxsZW5nZVN0eWxlczphcCx1c2VIaXBDaGFsbGVuZ2VUd29VaVN0eWxlczpkcCx1c2VJZGVudGl0eUJhbm5lclN0eWxlczptcCx1c2VMYXlvdXRBbmltYXRlU3R5bGVzOlBwLHVzZUxlYXJuQWJvdXRDb25zZW50Vmlld1N0eWxlczp4cCx1c2VMaW5rQnV0dG9uU3R5bGVzOmtwLHVzZU9wdGlvbnNNZW51QnV0dG9uU3R5bGVzOmpwLHVzZU9wdGlvbnNNZW51QnV0dG9uU3R5bGVzRGVwcmVjYXRlZDpOcCx1c2VQaG9uZUNvdW50cnlEcm9wZG93blN0eWxlczpGcCx1c2VQaG9uZUNvdW50cnlEcm9wZG93blN0eWxlc0RlcHJlY2F0ZWQ6VnAsdXNlUGhvbmVOdW1iZXJTdHlsZXM6V3AsdXNlUHJvZ3Jlc3NJbmRpY2F0b3JTdHlsZXM6cXAsdXNlUHJvb2ZJbWFnZVN0eWxlczpRcCx1c2VQdXNoTm90aWZpY2F0aW9uc1ZpZXdTdHlsZXM6WnAsdXNlUmFkaW9CdXR0b25TdHlsZXM6UWQsdXNlUm91dGVBbmltYXRpb25TdHlsZXM6SnAsdXNlU2Vjb25kYXJ5Q29udGVudFN0eWxlczplZyx1c2VTdGF0aWNDb21tb25TdHlsZXM6U2YsdXNlU3RhdGljSGlwQ2hhbGxlbmdlU3R5bGVzOmlwLHVzZVN0YXRpY0hpcENoYWxsZW5nZVR3b1VpU3R5bGVzOnVwLHVzZVRleHRCdXR0b25Db250YWluZXJTdHlsZXM6bGcsdXNlVGV4dEJ1dHRvblN0eWxlczphZyx1c2VUZXh0SW5wdXRTdHlsZXM6cWQsdXNlVGlsZVN0eWxlczpkZyx1c2VUaXRsZVN0eWxlczpnZyx1c2VWZXJ0aWNhbFNwbGl0U3R5bGVzOnlnfSxqbT1BbShBbSh7fSxFbSkse30se3VzZUJhY2tBcnJvd0J1dHRvblN0eWxlczpmdW5jdGlvbigpe3JldHVybiBPZyhpaSgpLF9nKCkpfSx1c2VCYWNrZ3JvdW5kU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIE9nKGZpKCksTGcoKSl9LHVzZUJvaWxlclBsYXRlU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIE9nKGZpKCksSGcoKSl9LHVzZUNvbW1vblN0eWxlczpmdW5jdGlvbigpe3JldHVybiBPZyhQZigpLEpnKCkpfSx1c2VEZWJ1Z0RldGFpbHNCYW5uZXJTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2coRWYoKSxybSgpKX0sdXNlRGlhbG9nU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIE9nKE5mKCksbG0oKSl9LHVzZVByb2dyZXNzSW5kaWNhdG9yU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIE9nKHFwKCksZG0oKSl9LHVzZVNlY29uZGFyeUNvbnRlbnRTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2coZWcoKSxmbSgpKX0sdXNlU3RhdGljQ29tbW9uU3R5bGVzOmZ1bmN0aW9uKCl7U2YoKSxaZygpfSx1c2VUZXh0QnV0dG9uU3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIE9nKGFnKCksaG0oKSl9LHVzZVRpbGVTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2coZGcoKSxQbSgpKX0sdXNlVGl0bGVTdHlsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gT2coZ2coKSxDbSgpKX19KSxJbT1uZXcgTWFwKFtbY3Qub0YuRmFicmljLEVtXSxbY3Qub0YuV2luZG93c0ZhYnJpYyxFbV0sW2N0Lm9GLldpbjExT29iZUZhYnJpYyxqbV1dKSxMbT1uKDU5MTQyKTtmdW5jdGlvbiBEbShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gTm0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBSbT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9EbShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe05tKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpEbShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX0oe30sRW0pLEJtPW5ldyBMbS5yKFJtKSxVbT1CbTtmdW5jdGlvbiBGbShlKXt2YXIgdCxuPW51bGwhPT0odD1JbS5nZXQoZSkpJiZ2b2lkIDAhPT10P3Q6Um07Qm0uaW5pdGlhbGl6ZShuKX1mdW5jdGlvbiBNbShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gem0oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/TW0oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtIbShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6TW0oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gSG0oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBWbT17cHJpbWFyeUJ1dHRvbkRlZmF1bHRDb2xvcjpcIlwiLHByaW1hcnlCdXR0b25Ib3ZlckNvbG9yOlwiXCIscHJpbWFyeUJ1dHRvbkZvY3VzQ29sb3I6XCJcIixwcmltYXJ5QnV0dG9uU3RyaW5nQ29sb3I6XCJcIn0sV209W1wiQm9pbGVyUGxhdGVUZXh0XCIsXCJVc2VySWRMYWJlbFwiLFwiVGlsZUxvZ29cIixcIlRpbGVEYXJrTG9nb1wiLFwiQmFubmVyTG9nb1wiLFwiQmFja2dyb3VuZENvbG9yXCIsXCJJbGx1c3RyYXRpb25cIixcIktlZXBNZVNpZ25lZEluRGlzYWJsZWRcIixcIlVzZVRyYW5zcGFyZW50TGlnaHRCb3hcIixcIkxheW91dFRlbXBsYXRlQ29uZmlnXCIsXCJDdXN0b21pemF0aW9uRmlsZXNcIixcIkFjY2Vzc1JlY292ZXJ5TGlua1wiLFwiQ2FudEFjY2Vzc1lvdXJBY2NvdW50VGV4dFwiLFwiRm9yZ290UGFzc3dvcmRUZXh0XCIsXCJGb290ZXJUT1VMaW5rXCIsXCJGb290ZXJUT1VUZXh0XCIsXCJGb290ZXJQcml2YWN5TGlua1wiLFwiRm9vdGVyUHJpdmFjeVRleHRcIixcIkZhdmljb25cIl0sR209e3Nob3dIZWFkZXI6ITEsaGVhZGVyTG9nbzpcIlwiLGxheW91dFR5cGU6Y3QuaHguTGlnaHRib3gsc2hvd0Zvb3RlcjohMCxoaWRlVE9VOiExLGhpZGVQcml2YWN5OiExLGhpZGVBY2NvdW50UmVzZXRDcmVkZW50aWFsczohMX07ZnVuY3Rpb24gJG0oZSx0LG4pe3ZhciByPW51bGw9PWU/dm9pZCAwOmUuTGF5b3V0VGVtcGxhdGVDb25maWc7cmV0dXJuIHImJjAhPT1PYmplY3QuZW50cmllcyhyKS5sZW5ndGh8fChyPXptKHt9LEdtKSxuJiZ0JiYoci5zaG93Rm9vdGVyPSExKSkscn1mdW5jdGlvbiBLbShlLHQsbixyLG8saSl7dmFyIGEsbD17dXNlRGFya0Zvb3RlcjohMSxhbHdheXNTaG93QmFja2dyb3VuZDohMX07cmV0dXJuIGUuQmFubmVyTG9nbz9sLmJhbm5lckxvZ29Vcmw9ZS5CYW5uZXJMb2dvOmkmJnImJm8mJihsLmJhbm5lckxvZ29UZXh0PW8udG9VcHBlckNhc2UoKSksZS5CYWNrZ3JvdW5kQ29sb3J8fGUuSWxsdXN0cmF0aW9uPyhsLmNvbG9yPWUuQmFja2dyb3VuZENvbG9yLGwuYmFja2dyb3VuZEltYWdlVXJsPWUuSWxsdXN0cmF0aW9uLGwudXNlVHJhbnNwYXJlbnRMaWdodEJveD1lLlVzZVRyYW5zcGFyZW50TGlnaHRCb3gsbC51c2VJbWFnZU1hc2s9IWl8fCFyLGwudXNlRGFya0Zvb3Rlcj0hMCk6dm9pZCAwIT09KG51bGw9PXQ/dm9pZCAwOnQuYmFja2dyb3VuZEltYWdlSW5kZXgpJiZ0LmJhY2tncm91bmRJbWFnZUluZGV4Pj0wfHx2b2lkIDAhPT0obnVsbD09dD92b2lkIDA6dC5iYWNrZ3JvdW5kTG9nb0luZGV4KSYmdC5iYWNrZ3JvdW5kTG9nb0luZGV4Pj0wfHxudWxsIT10JiZ0LmJhY2tncm91bmRDb2xvcnx8bnVsbCE9dCYmdC5mcmllbmRseUFwcE5hbWU/KGwudXNlRGFya0Zvb3Rlcj0hMCx2b2lkIDAhPT10LmJhY2tncm91bmRJbWFnZUluZGV4JiZ0LmJhY2tncm91bmRJbWFnZUluZGV4Pj0wJiYobC5iYWNrZ3JvdW5kSW1hZ2VVcmw9KGE9dC5iYWNrZ3JvdW5kSW1hZ2VJbmRleC50b1N0cmluZygpLEVkKHNsLFwiYXBwQmFja2dyb3VuZF9cIi5jb25jYXQoYSksXCJqcGdcIikpKSx2b2lkIDAhPT10LmJhY2tncm91bmRMb2dvSW5kZXgmJnQuYmFja2dyb3VuZExvZ29JbmRleD49MCYmKGwuYmFja2dyb3VuZExvZ29Vcmw9ZnVuY3Rpb24oZSl7cmV0dXJuIEVkKEVzLFwiYXBwTG9nb19cIi5jb25jYXQoZSksXCJwbmdcIil9KHQuYmFja2dyb3VuZExvZ29JbmRleC50b1N0cmluZygpKSxsLmFsd2F5c1Nob3dCYWNrZ3JvdW5kPSEwKSxsLmNvbG9yPXQuYmFja2dyb3VuZENvbG9yLGwuZnJpZW5kbHlBcHBOYW1lPXQuZnJpZW5kbHlBcHBOYW1lLGwucGFydG5lclRhZz10LnBhcnRuZXJUYWcsdC5hY2NlbnRDb2xvcnMmJihsLmFjY2VudENvbG9ycz17cHJpbWFyeUJ1dHRvbkRlZmF1bHRDb2xvcjp0LmFjY2VudENvbG9ycy5wcmltYXJ5QnV0dG9uQ29sb3J8fFwiXCIscHJpbWFyeUJ1dHRvbkhvdmVyQ29sb3I6dC5hY2NlbnRDb2xvcnMucHJpbWFyeUJ1dHRvbkhvdmVyQ29sb3J8fFwiXCIscHJpbWFyeUJ1dHRvbkZvY3VzQ29sb3I6dC5hY2NlbnRDb2xvcnMucHJpbWFyeUJ1dHRvbkZvY3VzQ29sb3J8fFwiXCIscHJpbWFyeUJ1dHRvblN0cmluZ0NvbG9yOnQuYWNjZW50Q29sb3JzLnByaW1hcnlCdXR0b25TdHJpbmdDb2xvcnx8XCJcIn0pKTppJiZyP2wuY29sb3I9Y3QueEkuQmFja2dyb3VuZENvbG9yOnZvaWQgMCE9PW4mJm4+PTAmJihsLmJhY2tncm91bmRJbWFnZVVybD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06QWk/XCJzdmdcIjpcImpwZ1wiO3JldHVybiBFZChScyxcImJhY2tncm91bmRfXCIuY29uY2F0KGUpLHQpfShuLnRvU3RyaW5nKCkpKSxsfWZ1bmN0aW9uIHFtKGUsdCl7dmFyIG49e307aWYoZSl7dmFyIHIsbyxpPW51bGwhPT0ocj1lWzBdKSYmdm9pZCAwIT09cj9yOnt9LGE9bnVsbCE9PShvPWVbMV0pJiZ2b2lkIDAhPT1vP286e307IShuPVdtLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbixyPXQ7aWYoXCJMYXlvdXRUZW1wbGF0ZUNvbmZpZ1wiPT09dCl7dmFyIG89YVtyXXx8e30sbD16bSh6bSh7fSxpW3JdfHx7fSksbyk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKGwpLmxlbmd0aD4wP3ptKHptKHt9LGUpLHt9LHtMYXlvdXRUZW1wbGF0ZUNvbmZpZzpsfSk6ZX1pZihcIkN1c3RvbWl6YXRpb25GaWxlc1wiPT09dCl7dmFyIHM9YVtyXXx8e30sYz1pW3JdfHx7fSx1PXptKHptKHt9LGMpLHMpO3JldHVybiBPYmplY3QuZW50cmllcyh1KS5sZW5ndGg+MD96bSh6bSh7fSxlKSx7fSx7Q3VzdG9taXphdGlvbkZpbGVzOnptKHptKHt9LHUpLHt9LHtzdHJpbmdzOnptKHptKHt9LGMuc3RyaW5ncykscy5zdHJpbmdzKX0pfSk6ZX12YXIgZD1udWxsIT09KG49YVtyXSkmJnZvaWQgMCE9PW4/bjppW3JdO3JldHVybiB2b2lkIDAhPT1kP3ptKHptKHt9LGUpLHt9LEhtKHt9LHIsZCkpOmV9KSxuKSkuVGlsZURhcmtMb2dvJiZuLlRpbGVMb2dvJiYobi5UaWxlRGFya0xvZ289bi5UaWxlTG9nbyksdCYmbi5Vc2VySWRMYWJlbCYmKG4uVW5zYWZlX1VzZXJJZExhYmVsPSgwLHN0LlVjKShuLlVzZXJJZExhYmVsKSl9cmV0dXJuIG59ZnVuY3Rpb24gUW0oZSx0KXt2YXIgbj1lLm9BcHBDb2JyYW5kaW5nLHI9ZS5pQmFja2dyb3VuZEltYWdlLG89ZS5mSXNDaWFtVXNlckZsb3dVeCxpPWUuZlVzZU5vbk1pY3Jvc29mdERlZmF1bHRCcmFuZGluZ0ZvckNpYW0sYT1lLnNDb21wYW55RGlzcGxheU5hbWU7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm57Ym9pbGVyUGxhdGVUZXh0OmUuQm9pbGVyUGxhdGVUZXh0fHxcIlwiLGN1c3RvbWl6YXRpb25GaWxlczplLkN1c3RvbWl6YXRpb25GaWxlc3x8e30sZmF2aWNvblVybDplLkZhdmljb258fFwiXCIscHJpdmFjeVRleHQ6ZS5Gb290ZXJQcml2YWN5VGV4dHx8XCJcIixwcml2YWN5VXJsOmUuRm9vdGVyUHJpdmFjeUxpbmt8fFwiXCIsdGVybXNPZlVzZVRleHQ6ZS5Gb290ZXJUT1VUZXh0fHxcIlwiLHRlcm1zT2ZVc2VVcmw6ZS5Gb290ZXJUT1VMaW5rfHxcIlwiLGFjY2Vzc1JlY292ZXJ5VXJsOmUuQWNjZXNzUmVjb3ZlcnlMaW5rfHxcIlwiLGNhbnRBY2Nlc3NZb3VyQWNjb3VudFRleHQ6ZS5DYW50QWNjZXNzWW91ckFjY291bnRUZXh0fHxcIlwiLGZvcmdvdFBhc3N3b3JkVGV4dDplLkZvcmdvdFBhc3N3b3JkVGV4dHx8XCJcIixoZWFkZXJMb2dvVXJsOnQuaGVhZGVyTG9nbyxsYXlvdXRUZW1wbGF0ZTp0LmxheW91dFR5cGUsc2hvd0FjY291bnRSZXNldENyZWRlbnRpYWxzOiF0LmhpZGVBY2NvdW50UmVzZXRDcmVkZW50aWFscyxzaG93Rm9vdGVyOnQuc2hvd0Zvb3RlcixzaG93SGVhZGVyOnQuc2hvd0hlYWRlcixzaG93UHJpdmFjeTohdC5oaWRlUHJpdmFjeSxzaG93VGVybXNPZlVzZTohdC5oaWRlVE9VLGFjY2VudENvbG9yczpudWxsIT09KHI9bi5hY2NlbnRDb2xvcnMpJiZ2b2lkIDAhPT1yP3I6Vm0sYWx3YXlzU2hvd0JhY2tncm91bmQ6bi5hbHdheXNTaG93QmFja2dyb3VuZHx8ITEsYmFja2dyb3VuZENvbG9yOm4uY29sb3J8fFwiXCIsYmFja2dyb3VuZEltYWdlVXJsOm4uYmFja2dyb3VuZEltYWdlVXJsfHxcIlwiLGJhY2tncm91bmRMb2dvVXJsOm4uYmFja2dyb3VuZExvZ29Vcmx8fFwiXCIsYmFubmVyTG9nb1VybDpuLmJhbm5lckxvZ29Vcmx8fFwiXCIsYmFubmVyTG9nb1RleHQ6bi5iYW5uZXJMb2dvVGV4dHx8XCJcIixmcmllbmRseUFwcE5hbWU6bi5mcmllbmRseUFwcE5hbWV8fFwiXCIscGFydG5lclRhZzpuLnBhcnRuZXJUYWd8fFwiXCIsdXNlQmFja2dyb3VuZEltYWdlTWFzazohIW4udXNlSW1hZ2VNYXNrLHVzZURhcmtGb290ZXI6bi51c2VEYXJrRm9vdGVyfHwhMSx1c2VUcmFuc3BhcmVudExpZ2h0Ym94OiEhbi51c2VUcmFuc3BhcmVudExpZ2h0Qm94fX0odCwkbSh0LG8saSksS20odCxuLHIsbyxhLGkpKX12YXIgWG09ZnVuY3Rpb24gZSh0KXtyZXR1cm5cIltvYmplY3QgT2JqZWN0XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpP09iamVjdC52YWx1ZXModCkuc29tZShlKTpcIm51bWJlclwiPT10eXBlb2YgdD90Pj0wOiEhdH07ZnVuY3Rpb24gWW0oZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgWm0sSm09ZnVuY3Rpb24oKXt2YXIgZSx0PShlPXJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciByLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsUHJvbWlzZS5hbGwoW24uZSgxMjIpLG4uZSg0MzUpXSkudGhlbihuLmJpbmQobiw0Mjc1KSk7Y2FzZSAyOnJldHVybiByPWUuc2VudCxvPXIubG9hZENzcyxlLm5leHQ9NixvKHQpO2Nhc2UgNjpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSksZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtZbShpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtZbShpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIGVoKGUpe3ZhciB0LG49W107cmV0dXJuIGUuY3VzdG9tQ3NzVXJsP24ucHVzaChKbShlLmN1c3RvbUNzc1VybCkpOm51bGw9PT0odD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImN1c3RvbUNzc1N0eWxlXCIpKXx8dm9pZCAwPT09dHx8dC5yZW1vdmUoKSxufWZ1bmN0aW9uIHRoKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBuaChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj90aChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JoKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp0aChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiByaChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gb2goZSx0KXt2YXIgbj10LnR5cGU7c3dpdGNoKG4pe2Nhc2UgWm0uU2V0U3RyaW5nQ3VzdG9taXphdGlvblN0YXRlOnJldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBuaChuaCh7fSxlKSx7fSx7c3RyaW5nQ3VzdG9taXphdGlvblN0YXRlOnQuY3VzdG9tU3RyaW5nc1Jlc3VsdH0pfShlLHQpO2Nhc2UgWm0uU2V0Q3VzdG9taXphYmxlU3R5bGVzOnJldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBuaChuaCh7fSxlKSx7fSx7c3R5bGVzOm5oKG5oKHt9LGUuc3R5bGVzKSx0LnN0eWxlcyl9KX0oZSx0KTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkN1c3RvbWl6YXRpb25SZWR1Y2VyIHJlY2VpdmVkIHVuZXhwZWN0ZWQgYWN0aW9uIFwiLmNvbmNhdChuKSl9fWZ1bmN0aW9uIGloKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBhaChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9paChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2xoKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTppaChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBsaChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gc2goZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGNoKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIGNoKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBjaChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfSFmdW5jdGlvbihlKXtlW2UuU2V0U3RyaW5nQ3VzdG9taXphdGlvblN0YXRlPTBdPVwiU2V0U3RyaW5nQ3VzdG9taXphdGlvblN0YXRlXCIsZVtlLlNldEN1c3RvbWl6YWJsZVN0eWxlcz0xXT1cIlNldEN1c3RvbWl6YWJsZVN0eWxlc1wifShabXx8KFptPXt9KSk7dmFyIHVoPXthY2Nlc3NSZWNvdmVyeVVybDpcIlwiLGFjY2VudENvbG9yczpWbSxhbHdheXNTaG93QmFja2dyb3VuZDohMSxiYWNrZ3JvdW5kQ29sb3I6XCIjZjJmMmYyXCIsYmFja2dyb3VuZEltYWdlVXJsOlwiXCIsYmFja2dyb3VuZExvZ29Vcmw6XCJcIixiYW5uZXJMb2dvVXJsOlwiXCIsYmFubmVyTG9nb1RleHQ6XCJcIixib2lsZXJQbGF0ZVRleHQ6XCJcIixjYW50QWNjZXNzWW91ckFjY291bnRUZXh0OlwiXCIsY3VzdG9taXphdGlvbkZpbGVzOnt9LGZhdmljb25Vcmw6XCJcIixmb3Jnb3RQYXNzd29yZFRleHQ6XCJcIixmcmllbmRseUFwcE5hbWU6XCJcIixoZWFkZXJMb2dvVXJsOlwiXCIsbGF5b3V0VGVtcGxhdGU6Y3QuaHguTGlnaHRib3gscGFydG5lclRhZzpcIlwiLHByaXZhY3lUZXh0OlwiUHJpdmFjeSAmIGNvb2tpZXNcIixwcml2YWN5VXJsOlwiXCIsc2hvd0FjY291bnRSZXNldENyZWRlbnRpYWxzOiEwLHNob3dGb290ZXI6ITAsc2hvd0hlYWRlcjohMSxzaG93UHJpdmFjeTohMCxzaG93VGVybXNPZlVzZTohMCx0ZXJtc09mVXNlVGV4dDpcIlRlcm1zIG9mIHVzZVwiLHRlcm1zT2ZVc2VVcmw6XCJcIix1c2VCYWNrZ3JvdW5kSW1hZ2VNYXNrOiExLHVzZURhcmtGb290ZXI6ITEsdXNlVHJhbnNwYXJlbnRMaWdodGJveDohMX0sZGg9e3N0eWxlczp1aCxyZW5kZXJQcm9taXNlczpbXSxzdHJpbmdDdXN0b21pemF0aW9uU3RhdGU6e3N0cmluZ3M6W10saXNMb2FkRmFpbHVyZTohMX19LGZoPSgwLG8uY3JlYXRlQ29udGV4dCkoe2N1c3RvbWl6YXRpb25TdGF0ZTpkaCxkaXNwYXRjaFN0YXRlQ2hhbmdlOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiQ3VzdG9taXphdGlvbkNvbnRleHQgbm90IGluaXRpYWxpemVkXCIpfX0pLHBoPWZ1bmN0aW9uKCl7cmV0dXJuKDAsby51c2VDb250ZXh0KShmaCl9LGdoPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5pdGlhbFN0YXRlLG49ZS5jaGlsZHJlbixyPXNoKCgwLG8udXNlUmVkdWNlcikob2gsdCksMiksaT1yWzBdLGE9clsxXSxsPSgwLG8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJue2N1c3RvbWl6YXRpb25TdGF0ZTppLGRpc3BhdGNoU3RhdGVDaGFuZ2U6YX19KSxbaV0pO3JldHVybigwLCRlLmpzeCkoZmguUHJvdmlkZXIse3ZhbHVlOmwsY2hpbGRyZW46bn0pfSxtaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5keW5hbWljVGVuYW50QnJhbmRpbmcsbz1mdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGEsbD1xbSh0LG8pLHM9cW0oZSxvKTtpZihuKWE9bnVsbCE9bD9sOnt9O2Vsc2V7dmFyIGM7YT1udWxsIT1zP3M6e30saT8obnVsbCE9bCYmbC5CYW5uZXJMb2dvJiYoYS5CYW5uZXJMb2dvPWwuQmFubmVyTG9nbyksbnVsbCE9bCYmbC5Cb2lsZXJQbGF0ZVRleHQmJihhLkJvaWxlclBsYXRlVGV4dD1sLkJvaWxlclBsYXRlVGV4dCksbnVsbCE9bCYmbC5LZWVwTWVTaWduZWRJbkRpc2FibGVkJiYoYS5LZWVwTWVTaWduZWRJbkRpc2FibGVkPWwuS2VlcE1lU2lnbmVkSW5EaXNhYmxlZCksbnVsbCE9bCYmbC5BY2Nlc3NSZWNvdmVyeUxpbmsmJihhLkFjY2Vzc1JlY292ZXJ5TGluaz1sLkFjY2Vzc1JlY292ZXJ5TGluayksbnVsbCE9bCYmbC5DYW50QWNjZXNzWW91ckFjY291bnRUZXh0JiYoYS5DYW50QWNjZXNzWW91ckFjY291bnRUZXh0PWwuQ2FudEFjY2Vzc1lvdXJBY2NvdW50VGV4dCksbnVsbCE9bCYmbC5Gb3Jnb3RQYXNzd29yZFRleHQmJihhLkZvcmdvdFBhc3N3b3JkVGV4dD1sLkZvcmdvdFBhc3N3b3JkVGV4dCksbnVsbCE9bCYmbC5Gb3Jnb3RQYXNzd29yZFRleHQmJihhLkZvcmdvdFBhc3N3b3JkVGV4dD1sLkZvcmdvdFBhc3N3b3JkVGV4dCkpOihhLkJhbm5lckxvZ289KG51bGw9PWw/dm9pZCAwOmwuQmFubmVyTG9nbyl8fFwiXCIsYS5Cb2lsZXJQbGF0ZVRleHQ9KG51bGw9PWw/dm9pZCAwOmwuQm9pbGVyUGxhdGVUZXh0KXx8XCJcIixhLktlZXBNZVNpZ25lZEluRGlzYWJsZWQ9KG51bGw9PWw/dm9pZCAwOmwuS2VlcE1lU2lnbmVkSW5EaXNhYmxlZCl8fCExLGEuQWNjZXNzUmVjb3ZlcnlMaW5rPShudWxsPT1sP3ZvaWQgMDpsLkFjY2Vzc1JlY292ZXJ5TGluayl8fFwiXCIsYS5DYW50QWNjZXNzWW91ckFjY291bnRUZXh0PShudWxsPT1sP3ZvaWQgMDpsLkNhbnRBY2Nlc3NZb3VyQWNjb3VudFRleHQpfHxcIlwiLGEuRm9yZ290UGFzc3dvcmRUZXh0PShudWxsPT1sP3ZvaWQgMDpsLkZvcmdvdFBhc3N3b3JkVGV4dCl8fFwiXCIpO3ZhciB1LGQ9ITE7aWYodm9pZCAwIT09KG51bGw9PWx8fG51bGw9PT0oYz1sLkxheW91dFRlbXBsYXRlQ29uZmlnKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5oaWRlQWNjb3VudFJlc2V0Q3JlZGVudGlhbHMpKWQ9bnVsbD09bHx8bnVsbD09PSh1PWwuTGF5b3V0VGVtcGxhdGVDb25maWcpfHx2b2lkIDA9PT11P3ZvaWQgMDp1LmhpZGVBY2NvdW50UmVzZXRDcmVkZW50aWFscztlbHNlIGlmKGkpe3ZhciBmO2Q9IShudWxsPT1zfHxudWxsPT09KGY9cy5MYXlvdXRUZW1wbGF0ZUNvbmZpZyl8fHZvaWQgMD09PWZ8fCFmLmhpZGVBY2NvdW50UmVzZXRDcmVkZW50aWFscyl9aWYoYS5MYXlvdXRUZW1wbGF0ZUNvbmZpZz1hLkxheW91dFRlbXBsYXRlQ29uZmlnfHwkbSh2b2lkIDAscixvKSxhLkxheW91dFRlbXBsYXRlQ29uZmlnLmhpZGVBY2NvdW50UmVzZXRDcmVkZW50aWFscz1kLG51bGwhPWwmJmwuQ3VzdG9taXphdGlvbkZpbGVzKXt2YXIgcCxnLG0saCxiPXtzdHJpbmdzOm51bGw9PT0ocD1sLkN1c3RvbWl6YXRpb25GaWxlcyl8fHZvaWQgMD09PXA/dm9pZCAwOnAuc3RyaW5ncyxjdXN0b21Dc3NVcmw6bnVsbD09PShnPWwuQ3VzdG9taXphdGlvbkZpbGVzKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5jdXN0b21Dc3NVcmx9OyhudWxsPT09KG09YSl8fHZvaWQgMD09PW18fG51bGw9PT0oaD1tLkN1c3RvbWl6YXRpb25GaWxlcyl8fHZvaWQgMD09PWg/dm9pZCAwOmguY3VzdG9tQ3NzVXJsKSE9PWIuY3VzdG9tQ3NzVXJsJiYoYi5jdXN0b21Dc3NVcmw9dm9pZCAwKSxhLkN1c3RvbWl6YXRpb25GaWxlcz1ifX1yZXR1cm4gYX0oZS5zdGF0aWNUZW5hbnRCcmFuZGluZyxufHxyLGUuaXNHbG9iYWxUZW5hbnQsZS5mSXNDaWFtVXNlckZsb3dVeCxlLmZVc2VOb25NaWNyb3NvZnREZWZhdWx0QnJhbmRpbmdGb3JDaWFtLHQpLGk9UW0oZSxvKSxhPXthY2Nlc3NSZWNvdmVyeVVybDppLmFjY2Vzc1JlY292ZXJ5VXJsfHwobnVsbD09ZT92b2lkIDA6ZS51cmxSZXNldFBhc3N3b3JkKSxhY2NlbnRDb2xvcnM6aS5hY2NlbnRDb2xvcnMsYWx3YXlzU2hvd0JhY2tncm91bmQ6aS5hbHdheXNTaG93QmFja2dyb3VuZCxzaG93QWNjb3VudFJlc2V0Q3JlZGVudGlhbHM6aS5zaG93QWNjb3VudFJlc2V0Q3JlZGVudGlhbHMsY3VzdG9taXphdGlvbkZpbGVzOmkuY3VzdG9taXphdGlvbkZpbGVzLGZhdmljb25Vcmw6aS5mYXZpY29uVXJsfHwobnVsbD09ZT92b2lkIDA6ZS51cmxEZWZhdWx0RmF2aWNvbil8fFwiXCIsZnJpZW5kbHlBcHBOYW1lOmkuZnJpZW5kbHlBcHBOYW1lLGxheW91dFRlbXBsYXRlOmkubGF5b3V0VGVtcGxhdGUscGFydG5lclRhZzppLnBhcnRuZXJUYWcscHJpdmFjeVVybDppLnByaXZhY3lVcmx8fChudWxsPT1lP3ZvaWQgMDplLnVybEZvb3RlclByaXZhY3kpfHwobnVsbD09ZT92b2lkIDA6ZS51cmxIb3N0ZWRQcml2YWN5TGluayksc2hvd0Zvb3RlcjppLnNob3dGb290ZXIsc2hvd0hlYWRlcjppLnNob3dIZWFkZXIsc2hvd1ByaXZhY3k6aS5zaG93UHJpdmFjeSxzaG93VGVybXNPZlVzZTppLnNob3dUZXJtc09mVXNlLHRlcm1zT2ZVc2VVcmw6aS50ZXJtc09mVXNlVXJsfHwobnVsbD09ZT92b2lkIDA6ZS51cmxGb290ZXJUT1UpfHwobnVsbD09ZT92b2lkIDA6ZS51cmxIb3N0ZWRUT1VMaW5rKSx1c2VCYWNrZ3JvdW5kSW1hZ2VNYXNrOmkudXNlQmFja2dyb3VuZEltYWdlTWFzayx1c2VEYXJrRm9vdGVyOmkudXNlRGFya0Zvb3Rlcix1c2VUcmFuc3BhcmVudExpZ2h0Ym94OmkudXNlVHJhbnNwYXJlbnRMaWdodGJveH07cmV0dXJuIGkuYmFja2dyb3VuZENvbG9yJiYoYS5iYWNrZ3JvdW5kQ29sb3I9aS5iYWNrZ3JvdW5kQ29sb3IpLGkuYmFja2dyb3VuZEltYWdlVXJsJiYoYS5iYWNrZ3JvdW5kSW1hZ2VVcmw9aS5iYWNrZ3JvdW5kSW1hZ2VVcmwpLGkuYmFja2dyb3VuZExvZ29VcmwmJihhLmJhY2tncm91bmRMb2dvVXJsPWkuYmFja2dyb3VuZExvZ29VcmwpLGkuYmFubmVyTG9nb1RleHQmJihhLmJhbm5lckxvZ29UZXh0PWkuYmFubmVyTG9nb1RleHQpLGkuYmFubmVyTG9nb1VybCYmKGEuYmFubmVyTG9nb1VybD1pLmJhbm5lckxvZ29VcmwpLGkuYm9pbGVyUGxhdGVUZXh0JiYoYS5ib2lsZXJQbGF0ZVRleHQ9aS5ib2lsZXJQbGF0ZVRleHQsZS5mSXNIb3N0ZWQmJihhLmJvaWxlclBsYXRlVGV4dD0oMCxzdC5FYikoYS5ib2lsZXJQbGF0ZVRleHQpKSksaS5jYW50QWNjZXNzWW91ckFjY291bnRUZXh0JiYoYS5jYW50QWNjZXNzWW91ckFjY291bnRUZXh0PWkuY2FudEFjY2Vzc1lvdXJBY2NvdW50VGV4dCksaS5mb3Jnb3RQYXNzd29yZFRleHQmJihhLmZvcmdvdFBhc3N3b3JkVGV4dD1pLmZvcmdvdFBhc3N3b3JkVGV4dCksaS5oZWFkZXJMb2dvVXJsJiYoYS5oZWFkZXJMb2dvVXJsPWkuaGVhZGVyTG9nb1VybCksaS50ZXJtc09mVXNlVGV4dCYmKGEudGVybXNPZlVzZVRleHQ9aS50ZXJtc09mVXNlVGV4dCksaS5wcml2YWN5VGV4dD9hLnByaXZhY3lUZXh0PWkucHJpdmFjeVRleHQ6ZS5mU2hvd1VwZGF0ZWRLb3JlYW5Qcml2YWN5Rm9vdGVyJiYoYS5wcml2YWN5VGV4dD1cIlByaXZhY3kgJiBjb29raWVzXCIpLGF9O2Z1bmN0aW9uIGhoKGUpe3ZhciB0PW1oKGUpLG49YWgoYWgoYWgoe30sdWgpLHQpLHt9LHtjdXN0b21pemF0aW9uRmlsZXM6YWgoe30sdC5jdXN0b21pemF0aW9uRmlsZXMpfSkscj1laChuLmN1c3RvbWl6YXRpb25GaWxlcyk7cmV0dXJuIGFoKGFoKHt9LGRoKSx7fSx7c3R5bGVzOm4scmVuZGVyUHJvbWlzZXM6cn0pfWZ1bmN0aW9uIGJoKGUsdCxuLHIsbyxpLGEpe3RyeXt2YXIgbD1lW2ldKGEpLHM9bC52YWx1ZX1jYXRjaChjKXtyZXR1cm4gdm9pZCBuKGMpfWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24geWgoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGEoZSl7YmgoaSxyLG8sYSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7YmgoaSxyLG8sYSxsLFwidGhyb3dcIixlKX1hKHZvaWQgMCl9KSl9fWZ1bmN0aW9uIHZoKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB3aChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB3aChlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gd2goZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgU2g7ZnVuY3Rpb24gUGgoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHhoKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1BoKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2goZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlBoKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIE9oKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBfaChlLHQpe3ZhciBuPXQudHlwZTtpZihuPT09U2guU3VibWl0UG9zdFJlZGlyZWN0KXJldHVybiB4aCh4aCh7fSxlKSx7fSx7dXJsOnQucGF5bG9hZC51cmx8fGUudXJsLHBvc3RQYXJhbXM6dC5wYXlsb2FkLnBvc3RQYXJhbXN8fGUucG9zdFBhcmFtcyx0YXJnZXQ6dC5wYXlsb2FkLnRhcmdldHx8ZS50YXJnZXQsc3VibWl0Rm9ybTp0LnBheWxvYWQuc3VibWl0Rm9ybXx8ZS5zdWJtaXRGb3JtfSk7dGhyb3cgbmV3IEVycm9yKFwiUG9zdFJlZGlyZWN0UmVkdWNlciByZWNlaXZlZCB1bmV4cGVjdGVkIGFjdGlvbiBcIi5jb25jYXQobikpfWZ1bmN0aW9uIENoKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBraChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBraChlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24ga2goZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn0hZnVuY3Rpb24oZSl7ZVtlLlN1Ym1pdFBvc3RSZWRpcmVjdD0wXT1cIlN1Ym1pdFBvc3RSZWRpcmVjdFwifShTaHx8KFNoPXt9KSk7dmFyIEFoPXt1cmw6XCJcIixwb3N0UGFyYW1zOnt9LHRhcmdldDpcIl90b3BcIixzdWJtaXRGb3JtOiExfSxUaD0oMCxvLmNyZWF0ZUNvbnRleHQpKHtwb3N0UmVkaXJlY3RTdGF0ZTpBaCxkaXNwYXRjaFN0YXRlQ2hhbmdlOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiUG9zdFJlZGlyZWN0Q29udGV4dCBub3QgaW5pdGlhbGl6ZWRcIil9fSksRWg9ZnVuY3Rpb24oKXtyZXR1cm4oMCxvLnVzZUNvbnRleHQpKFRoKX0samg9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbml0aWFsU3RhdGUsbj1lLmNoaWxkcmVuLHI9Q2goKDAsby51c2VSZWR1Y2VyKShfaCx0KSwyKSxpPXJbMF0sYT1yWzFdLGw9KDAsby51c2VNZW1vKSgoZnVuY3Rpb24oKXtyZXR1cm57cG9zdFJlZGlyZWN0U3RhdGU6aSxkaXNwYXRjaFN0YXRlQ2hhbmdlOmF9fSksW2ldKTtyZXR1cm4oMCwkZS5qc3gpKFRoLlByb3ZpZGVyLHt2YWx1ZTpsLGNoaWxkcmVuOm59KX0sSWg9bigyMDY5NSk7ZnVuY3Rpb24gTGgoZSl7cmV0dXJuIExoPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LExoKGUpfWZ1bmN0aW9uIERoKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1mdW5jdGlvbiBOaChlLHQpe3JldHVybiBOaD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0sTmgoZSx0KX1mdW5jdGlvbiBSaChlKXt2YXIgdD1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBuLHI9VWgoZSk7aWYodCl7dmFyIG89VWgodGhpcykuY29uc3RydWN0b3I7bj1SZWZsZWN0LmNvbnN0cnVjdChyLGFyZ3VtZW50cyxvKX1lbHNlIG49ci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEJoKHRoaXMsbil9fWZ1bmN0aW9uIEJoKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1MaCh0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfShlKX1mdW5jdGlvbiBVaChlKXtyZXR1cm4gVWg9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sVWgoZSl9dmFyIEZoPWZ1bmN0aW9uKGUpeyFmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSx0JiZOaChlLHQpfShpLGUpO3ZhciB0LG4scixvPVJoKGkpO2Z1bmN0aW9uIGkoZSl7dmFyIHQ7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxpKSwodD1vLmNhbGwodGhpcyxlKSkuc3RhdGU9e2hhc0Vycm9yOiExfSx0fXJldHVybiB0PWksbj1be2tleTpcImNvbXBvbmVudERpZENhdGNoXCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcy50ZWxlbWV0cnlTdGF0ZTtJaC50LmlzRXJyb3JMb2dnZWQoZSl8fEloLnQubG9nRXhjZXB0aW9uKGUsdCl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0YXRlLmhhc0Vycm9yLHQ9dGhpcy5wcm9wcyxuPXQuY2hpbGRyZW4scj10LkNyaXRpY2FsRXJyb3JQYWdlO3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwiYXBwLWJvdW5kYXJ5XCIsY2hpbGRyZW46ZT9yOm59KX19XSxyPVt7a2V5OlwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2hhc0Vycm9yOiEwLGVycm9yOmV9fX1dLG4mJkRoKHQucHJvdG90eXBlLG4pLHImJkRoKHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxpfShvLkNvbXBvbmVudCk7RmguY29udGV4dFR5cGU9WnQ7dmFyIE1oPUZoLHpoPXtkYXJrOlwiYXJyb3dfbGVmdFwiLGxpZ2h0OlwiYXJyb3dfbGVmdF93aGl0ZVwifSxIaD17ZGFyazpcImFycm93X3JpZ2h0XCIsbGlnaHQ6XCJhcnJvd19yaWdodF93aGl0ZVwifSxWaD17ZGFyazpcInBpY2tlcl92ZXJpZnlfY2FsbFwiLGxpZ2h0OlwicGlja2VyX3ZlcmlmeV9jYWxsX3doaXRlXCJ9LFdoPXtkYXJrOlwiY2hhbGxlbmdlX3NwZWFrZXJcIixsaWdodDpcImNoYWxsZW5nZV9zcGVha2VyXCJ9LEdoPXtkYXJrOlwiY2hlY2tfc21hbGxcIixsaWdodDpcImNoZWNrX3NtYWxsX3doaXRlXCJ9LCRoPXtkYXJrOlwiY2xvc2VcIixsaWdodDpcImNsb3NlX3doaXRlXCJ9LEtoPXtkYXJrOlwiY2hldnJvbl9jbG9zZWRcIixsaWdodDpcImNoZXZyb25fY2xvc2VkX3doaXRlXCJ9LHFoPXtkYXJrOlwiZG9jdW1lbnRhdGlvblwiLGxpZ2h0OlwiZG9jdW1lbnRhdGlvbl93aGl0ZVwifSxRaD17ZGFyazpcInBpY2tlcl92ZXJpZnlfZW1haWxcIixsaWdodDpcInBpY2tlcl92ZXJpZnlfZW1haWxfd2hpdGVcIn0sWGg9e2Rhcms6XCJkcm9wZG93bl9jYXJldFwiLGxpZ2h0OlwiZHJvcGRvd25fY2FyZXRfd2hpdGVcIn0sWWg9e2Rhcms6XCJjcmVkX29wdGlvbl9maWRvXCIsbGlnaHQ6XCJjcmVkX29wdGlvbl9maWRvX3doaXRlXCJ9LFpoPXtkYXJrOlwiY3JlZF9vcHRpb25fcGFzc2tleVwiLGxpZ2h0OlwiY3JlZF9vcHRpb25fcGFzc2tleV93aGl0ZVwifSxKaD17ZGFyazpcImNyZWRfb3B0aW9uX2ZvcmdvdFwiLGxpZ2h0OlwiY3JlZF9vcHRpb25fZm9yZ290X3doaXRlXCJ9LGViPXtkYXJrOlwiY3JlZF9vcHRpb25fZ2VuZXJpY19hcHBcIixsaWdodDpcImNyZWRfb3B0aW9uX2dlbmVyaWNfYXBwX3doaXRlXCJ9LHRiPXtkYXJrOlwiY3JlZF9vcHRpb25fZ2l0aHViXCIsbGlnaHQ6XCJjcmVkX29wdGlvbl9naXRodWJfd2hpdGVcIn0sbmI9e2Rhcms6XCJjcmVkX29wdGlvbl9saW5rZWRpblwiLGxpZ2h0OlwiY3JlZF9vcHRpb25fbGlua2VkaW5fd2hpdGVcIn0scmI9e2Rhcms6XCJtYXJjaGluZ19hbnRzXCIsbGlnaHQ6XCJtYXJjaGluZ19hbnRzX3doaXRlXCIsZXh0ZW5zaW9uOlwiZ2lmXCJ9LG9iPXtkYXJrOlwibWljcm9zb2Z0X2xvZ29cIixsaWdodDpcIm1pY3Jvc29mdF9sb2dvX3doaXRlXCJ9LGliPXtkYXJrOlwiY3JlZF9vcHRpb25fb2ZmbGluZWFjY291bnRcIixsaWdodDpcImNyZWRfb3B0aW9uX29mZmxpbmVhY2NvdW50X3doaXRlXCJ9LGFiPXtkYXJrOlwibXVsdGlwbGF5ZXJfam9pblwiLGxpZ2h0OlwibXVsdGlwbGF5ZXJfam9pblwifSxsYj17ZGFyazpcInBhc3NrZXlcIixsaWdodDpcInBhc3NrZXlcIixleHRlbnNpb246XCJnaWZcIn0sc2I9e2Rhcms6XCJjcmVkX29wdGlvbl9wYXNzd29yZFwiLGxpZ2h0OlwiY3JlZF9vcHRpb25fcGFzc3dvcmRfd2hpdGVcIn0sY2I9e2Rhcms6XCJwZW9wbGVfc2hpZWxkXCIsbGlnaHQ6XCJwZW9wbGVfc2hpZWxkX3doaXRlXCIsZXh0ZW5zaW9uOlwicG5nXCJ9LHViPXtkYXJrOlwicGlja2VyX2FjY291bnRfYWFkXCIsbGlnaHQ6XCJwaWNrZXJfYWNjb3VudF9hYWRcIn0sZGI9e2Rhcms6XCJwaWNrZXJfYWNjb3VudF9hZGRcIixsaWdodDpcInBpY2tlcl9hY2NvdW50X2FkZFwifSxmYj17ZGFyazpcInBpY2tlcl9hY2NvdW50X21zYVwiLGxpZ2h0OlwicGlja2VyX2FjY291bnRfbXNhXCJ9LHBiPXtkYXJrOlwicGlja2VyX21vcmVcIixsaWdodDpcInBpY2tlcl9tb3JlX3doaXRlXCJ9LGdiPXtkYXJrOlwic2V0dGluZ3NcIixsaWdodDpcInNldHRpbmdzXCJ9LG1iPXtkYXJrOlwic2lnbmluX29wdGlvbnNcIixsaWdodDpcInNpZ25pbl9vcHRpb25zX3doaXRlXCJ9LGhiPXtkYXJrOlwicGlja2VyX3ZlcmlmeV9zbXNcIixsaWdodDpcInBpY2tlcl92ZXJpZnlfc21zX3doaXRlXCJ9LGJiPXtkYXJrOlwidGltZXJcIixsaWdodDpcInRpbWVyXCJ9LHliPW5ldyBNYXAoW1tcImFjY2Vzc1Bhc3NDcmVkSWNvblwiLHtkYXJrOlwiY3JlZF9vcHRpb25fYWNjZXNzcGFzc1wiLGxpZ2h0OlwiY3JlZF9vcHRpb25fYWNjZXNzcGFzc193aGl0ZVwifV0sW1wiYWRkVXNlclwiLHtkYXJrOlwiYWRkX3VzZXJcIixsaWdodDpcImFkZF91c2VyX3doaXRlXCIsZXh0ZW5zaW9uOlwicG5nXCJ9XSxbXCJhcnJvd0xlZnRcIix6aF0sW1wiYXJyb3dSaWdodFwiLEhoXSxbXCJhdXRoZW50aWNhdG9ySWNvblwiLHtkYXJrOlwicGlja2VyX3ZlcmlmeV9jb2RlXCIsbGlnaHQ6XCJwaWNrZXJfdmVyaWZ5X2NvZGVfd2hpdGVcIn1dLFtcImF1dGhlbnRpY2F0b3JDcmVkSWNvblwiLHtkYXJrOlwiY3JlZF9vcHRpb25fYXV0aGVudGljYXRvclwiLGxpZ2h0OlwiY3JlZF9vcHRpb25fYXV0aGVudGljYXRvcl93aGl0ZVwifV0sW1wiYXV0aGVudGljYXRvclYyZmx1ZW50SWNvblwiLHtkYXJrOlwicGlja2VyX3ZlcmlmeV9mbHVlbnRfYXV0aGVudGljYXRvclwiLGxpZ2h0OlwicGlja2VyX3ZlcmlmeV9mbHVlbnRfYXV0aGVudGljYXRvcl93aGl0ZVwiLGV4dGVuc2lvbjpcInN2Z1wifV0sW1wiYXV0aGVudGljYXRvclYySWNvblwiLHtkYXJrOlwicGlja2VyX3ZlcmlmeV9hdXRoZW50aWNhdG9yXCIsbGlnaHQ6XCJwaWNrZXJfdmVyaWZ5X2F1dGhlbnRpY2F0b3Jfd2hpdGVcIn1dLFtcImNhbGxJY29uXCIsVmhdLFtcImNlcnRpZmljYXRlQ3JlZEljb25cIix7ZGFyazpcImNyZWRfb3B0aW9uX2NlcnRpZmljYXRlXCIsbGlnaHQ6XCJjcmVkX29wdGlvbl9jZXJ0aWZpY2F0ZV93aGl0ZVwifV0sW1wiY2hlY2tNYXJrSWNvblwiLEdoXSxbXCJjaGVja01hcmtGaWxsZWRJY29uXCIse2Rhcms6XCJjaGVja19maWxsZWRcIixsaWdodDpcImNoZWNrX2ZpbGxlZFwifV0sW1wiY2hldnJvbkNsb3NlZEljb25cIixLaF0sW1wiY2xvc2VJY29uXCIscWhdLFtcImRvd25BcnJvd0ljb25cIixYaF0sW1wiZW1haWxJY29uXCIsUWhdLFtcImZpZG9DcmVkSWNvblwiLFloXSxbXCJmb3Jnb3RDcmVkSWNvblwiLEpoXSxbXCJnaXRodWJDcmVkSWNvblwiLHRiXSxbXCJrb3JlYUNvbnNlbnRDaGVja1wiLHtkYXJrOlwia29yZWFfY29uc2VudF9jaGVja1wiLGxpZ2h0Olwia29yZWFfY29uc2VudF9jaGVja1wifV0sW1wia29yZWFDb25zZW50VW5jaGVja1wiLHtkYXJrOlwia29yZWFfY29uc2VudF91bmNoZWNrXCIsbGlnaHQ6XCJrb3JlYV9jb25zZW50X3VuY2hlY2tcIn1dLFtcImxpbmtlZEluQ3JlZEljb25cIixuYl0sW1wibWFyY2hpbmdBbnRzR2lmXCIscmJdLFtcIm1zTG9nb0ljb25cIixvYl0sW1wib2ZmbGluZUFjY291bnRJY29uXCIsaWJdLFtcInBhc3NrZXlDcmVkSWNvblwiLFpoXSxbXCJwYXNza2V5R2lmXCIsbGJdLFtcInBhc3N3b3JkQ3JlZEljb25cIixzYl0sW1wicGVvcGxlU2hpZWxkXCIsY2JdLFtcInBlcnNvbmFsQWNjb3VudEljb25cIix7ZGFyazpcInBlcnNvbmFsX2FjY291bnRcIixsaWdodDpcInBlcnNvbmFsX2FjY291bnRfd2hpdGVcIn1dLFtcInBpY2tlckFjY291bnRBYWRcIix1Yl0sW1wicGlja2VyQWNjb3VudEFkZEljb25cIixkYl0sW1wicGlja2VyQWNjb3VudE1zYUljb25cIixmYl0sW1wicGlja2VyTW9yZUljb25cIixwYl0sW1wic21zSWNvblwiLGhiXSxbXCJ1c2VyV2l0aEZhbWlseVwiLHtkYXJrOlwidXNlcl93aXRoX2ZhbWlseV93aGl0ZVwiLGxpZ2h0OlwidXNlcl93aXRoX2ZhbWlseVwifV1dKTtmdW5jdGlvbiB2YihlKXtpZighZSlyZXR1cm5cIlwiO3ZhciB0PUl0LmRlZmF1bHQuaW5zdGFuY2UuaGFzRGVmYXVsdERhcmtCYWNrZ3JvdW5kO3JldHVybiBJaSgpPT09Y3QuJE8uZGFya3x8dCYmSWkoKSE9PWN0LiRPLmxpZ2h0P2UubGlnaHQ6ZS5kYXJrfXZhciB3YixTYj1mdW5jdGlvbihlKXt2YXIgdD1lLnVybHMsbj1lLmRhdGFUZXN0SWQscj12b2lkIDA9PT1uP1wiYWNjZXNzaWJsZUltZ1wiOm4sbz1lLmNsYXNzTmFtZSxpPWUuaXNVcmwsYT12b2lkIDAhPT1pJiZpLGw9ZS5hbHQscz12b2lkIDA9PT1sP1wiXCI6bCxjPWUucm9sZSx1PXZvaWQgMD09PWM/XCJcIjpjLGQ9dmIodCk7aWYoIWQpcmV0dXJuIG51bGw7dmFyIGY9ZDtpZighYSl0cnl7Zj1qZChkLHQuZXh0ZW5zaW9uKX1jYXRjaChwKXtyZXR1cm4gbnVsbH1yZXR1cm4oMCwkZS5qc3gpKFwiaW1nXCIse1wiZGF0YS10ZXN0aWRcIjpyLGNsYXNzTmFtZTpvLHNyYzpmLGFsdDpzLHJvbGU6dX0pfSxQYj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1lLmVycm9yVGl0bGUsaT1lLm91dGVyQ2xhc3NOYW1lLGE9dm9pZCAwPT09aT9cIlwiOmksbD1lLmNvbnRhaW5lclN0eWxlTmFtZSxzPXZvaWQgMD09PWw/XCJcIjpsLGM9ZS50aXRsZVN0eWxlTmFtZSx1PXZvaWQgMD09PWM/XCJcIjpjLGQ9ZS5lcnJvckRlc2NyaXB0aW9uLGY9ZS5lcnJvckNvZGU7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6YSxjaGlsZHJlbjooMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6cyxjaGlsZHJlbjpbKDAsJGUuanN4KShcImgxXCIse2NoaWxkcmVuOigwLCRlLmpzeCkoU2Ise3VybHM6KHQ9XCJtaWNyb3NvZnRfbG9nb1wiLHI9XCJudW1iZXJcIj09dHlwZW9mIHQ/dC50b1N0cmluZygpOnQseWIuaGFzKHIpP3liLmdldChyKTp7ZGFyazpyLGxpZ2h0OlwiXCIuY29uY2F0KHIsXCJfd2hpdGVcIiksZXh0ZW5zaW9uOm59KX0pfSksKDAsJGUuanN4cykoXCJkaXZcIix7Y2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnUsY2hpbGRyZW46b30pLCgwLCRlLmpzeHMpKFwicFwiLHtjaGlsZHJlbjpbe2Vycm9yQ29kZTpmfSYmKDAsJGUuanN4cykoXCJzcGFuXCIse2NoaWxkcmVuOltmLFwiIFwiXX0pLHtlcnJvckRlc2NyaXB0aW9uOmR9JiYoMCwkZS5qc3gpKFwic3BhblwiLHtjaGlsZHJlbjpkfSldfSldfSldfSl9KX0seGI9ZnVuY3Rpb24oKXt2YXIgZT1VbS5pbnN0YW5jZS51c2VDcml0aWNhbEVycm9yUGFnZVN0eWxlcygpLHQ9ZS5lcnJvclRpdGxlU3R5bGVzLG49ZS5lcnJvckNvbXBvbmVudFN0eWxlcyxyPVVtLmluc3RhbmNlLnVzZUNvbW1vblN0eWxlcygpLm91dGVyO3JldHVybigwLCRlLmpzeCkoUGIse2Vycm9yVGl0bGU6XCJTb21ldGhpbmcgd2VudCB3cm9uZ1wiLHRpdGxlU3R5bGVOYW1lOnQsZXJyb3JEZXNjcmlwdGlvbjpcIlBsZWFzZSB0cnkgYWdhaW4uXCIsY29udGFpbmVyU3R5bGVOYW1lOm4sb3V0ZXJDbGFzc05hbWU6cn0pfTtmdW5jdGlvbiBPYihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gX2IoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/T2IoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtDYihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6T2IoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gQ2IoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfSFmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT1cIk5vbmVcIixlW2UuSW50ZXJuYWw9MV09XCJJbnRlcm5hbFwiLGVbZS5UZXN0U2xpY2U9Ml09XCJUZXN0U2xpY2VcIixlW2UuRmlyc3RTbGljZT0zXT1cIkZpcnN0U2xpY2VcIn0od2J8fCh3Yj17fSkpO3ZhciBrYj1mdW5jdGlvbihlLHQpe3ZhciBuPSgwLFVtLmluc3RhbmNlLnVzZUJhY2tncm91bmRTdHlsZXMpKCk7cmV0dXJuIF9iKF9iKHt9LG4pLHt9LHtiYWNrZ3JvdW5kOlNnKG4uYmFzZUJhY2tncm91bmQsdD09PWN0Lmh4LlZlcnRpY2FsU3BsaXQ/bi52ZXJ0aWNhbFNwbGl0QmFja2dyb3VuZDpuLm5vcm1hbEJhY2tncm91bmQsZT9uLmFsd2F5c1Nob3c6XCJcIil9KX0sQWI9ZnVuY3Rpb24oKXt2YXIgZT1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMsdD1lLmJhY2tncm91bmRJbWFnZVVybCxuPWUuYWx3YXlzU2hvd0JhY2tncm91bmQscj1lLmxheW91dFRlbXBsYXRlLG89ZS51c2VCYWNrZ3JvdW5kSW1hZ2VNYXNrLGk9a2IobixyKTtpZighdClyZXR1cm4gbnVsbDt2YXIgYT1TZyhpLmJhY2tncm91bmQsY3Qua2ouYmFja2dyb3VuZEltYWdlKSxsPVNnKGkub3ZlcmxheSxjdC5rai5iYWNrZ3JvdW5kT3ZlcmxheSk7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtdGVzdGlkXCI6XCJiYWNrZ3JvdW5kSW1hZ2VcIixpZDpcImJhY2tncm91bmQtaW1hZ2VcIixjbGFzc05hbWU6YSxzdHlsZTp7YmFja2dyb3VuZEltYWdlOlwidXJsKFwiLmNvbmNhdCh0LFwiKVwiKX0sY2hpbGRyZW46bz8oMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcImJhY2tncm91bmRPdmVybGF5XCIsY2xhc3NOYW1lOmx9KTpudWxsfSl9LFRiPWZ1bmN0aW9uKCl7dmFyIGU9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLHQ9ZS5iYWNrZ3JvdW5kQ29sb3Isbj1lLmFsd2F5c1Nob3dCYWNrZ3JvdW5kLHI9ZS5sYXlvdXRUZW1wbGF0ZSxvPWtiKG4scik7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtpZDpcImJhY2tncm91bmQtY29udGFpbmVyXCIsXCJkYXRhLXRlc3RpZFwiOlwiYmFja2dyb3VuZC1jb250YWluZXJcIixjbGFzc05hbWU6by5iYWNrZ3JvdW5kLHJvbGU6XCJwcmVzZW50YXRpb25cIixzdHlsZTp7YmFja2dyb3VuZENvbG9yOnR9LGNoaWxkcmVuOigwLCRlLmpzeCkoQWIse30pfSl9LEViPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmRpcmVjdGlvbldyYXBwZXJDbGFzc05hbWUscj1lLnRlc3RJRCxvPUl0LmRlZmF1bHQuaW5zdGFuY2UuaXNSdGxNYXJrZXQsaT1bXCJkaXJlY3Rpb25XcmFwcGVyXCJdO3JldHVybiByJiZpLnB1c2gociksKDAsJGUuanN4KShcImRpdlwiLHtkaXI6bz9cInJ0bFwiOlwiXCIsXCJkYXRhLXRlc3RpZFwiOmkuam9pbihcIiBcIiksY2xhc3NOYW1lOm4sY2hpbGRyZW46dH0pfTt2YXIgamI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gamI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxqYihlLHQpfTt2YXIgSWI9ZnVuY3Rpb24oKXtyZXR1cm4gSWI9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfSxJYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIExiKGUsdCl7dmFyIG49e307Zm9yKHZhciByIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJnQuaW5kZXhPZihyKTwwJiYobltyXT1lW3JdKTtpZihudWxsIT1lJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bzxyLmxlbmd0aDtvKyspdC5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHJbb10pJiYobltyW29dXT1lW3Jbb11dKX1yZXR1cm4gbn1PYmplY3QuY3JlYXRlO2Z1bmN0aW9uIERiKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsbz0wLGk9dC5sZW5ndGg7bzxpO28rKykhciYmbyBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG8pKSxyW29dPXRbb10pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9T2JqZWN0LmNyZWF0ZTtuKDk3MjA2KTt2YXIgTmI9by5jcmVhdGVDb250ZXh0KG51bGwpLFJiPShOYi5Db25zdW1lcixOYi5Qcm92aWRlciksQmI9TmI7ZnVuY3Rpb24gVWIoZSx0LG4pe2lmKHZvaWQgMD09PW4mJihuPUVycm9yKSwhZSl0aHJvdyBuZXcgbih0KX12YXIgRmI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRmI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxGYihlLHQpfTtmdW5jdGlvbiBNYihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9RmIoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9dmFyIHpiPWZ1bmN0aW9uKCl7cmV0dXJuIHpiPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0semIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtPYmplY3QuY3JlYXRlO2Z1bmN0aW9uIEhiKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsbz0wLGk9dC5sZW5ndGg7bzxpO28rKykhciYmbyBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG8pKSxyW29dPXRbb10pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9T2JqZWN0LmNyZWF0ZTt2YXIgVmI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gVmI9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxWYihlLHQpfTtmdW5jdGlvbiBXYihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPWV9VmIoZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihuLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgbil9dmFyIEdiPWZ1bmN0aW9uKCl7cmV0dXJuIEdiPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0sR2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtPYmplY3QuY3JlYXRlO2Z1bmN0aW9uICRiKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsbz0wLGk9dC5sZW5ndGg7bzxpO28rKykhciYmbyBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG8pKSxyW29dPXRbb10pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9T2JqZWN0LmNyZWF0ZTt2YXIgS2I9ZnVuY3Rpb24oKXtyZXR1cm4gS2I9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfSxLYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O09iamVjdC5jcmVhdGU7dmFyIHFiLFFiLFhiO09iamVjdC5jcmVhdGU7ZnVuY3Rpb24gWWIoZSl7cmV0dXJuIFliPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LFliKGUpfWZ1bmN0aW9uIFpiKGUpe3JldHVybiBlLnR5cGU9PT1RYi5saXRlcmFsfWZ1bmN0aW9uIEpiKGUpe3JldHVybiBlLnR5cGU9PT1RYi5hcmd1bWVudH1mdW5jdGlvbiBleShlKXtyZXR1cm4gZS50eXBlPT09UWIubnVtYmVyfWZ1bmN0aW9uIHR5KGUpe3JldHVybiBlLnR5cGU9PT1RYi5kYXRlfWZ1bmN0aW9uIG55KGUpe3JldHVybiBlLnR5cGU9PT1RYi50aW1lfWZ1bmN0aW9uIHJ5KGUpe3JldHVybiBlLnR5cGU9PT1RYi5zZWxlY3R9ZnVuY3Rpb24gb3koZSl7cmV0dXJuIGUudHlwZT09PVFiLnBsdXJhbH1mdW5jdGlvbiBpeShlKXtyZXR1cm4gZS50eXBlPT09UWIucG91bmR9ZnVuY3Rpb24gYXkoZSl7cmV0dXJuIGUudHlwZT09PVFiLnRhZ31mdW5jdGlvbiBseShlKXtyZXR1cm4hKCFlfHxcIm9iamVjdFwiIT09WWIoZSl8fGUudHlwZSE9PVhiLm51bWJlcil9ZnVuY3Rpb24gc3koZSl7cmV0dXJuISghZXx8XCJvYmplY3RcIiE9PVliKGUpfHxlLnR5cGUhPT1YYi5kYXRlVGltZSl9IWZ1bmN0aW9uKGUpe2VbZS5FWFBFQ1RfQVJHVU1FTlRfQ0xPU0lOR19CUkFDRT0xXT1cIkVYUEVDVF9BUkdVTUVOVF9DTE9TSU5HX0JSQUNFXCIsZVtlLkVNUFRZX0FSR1VNRU5UPTJdPVwiRU1QVFlfQVJHVU1FTlRcIixlW2UuTUFMRk9STUVEX0FSR1VNRU5UPTNdPVwiTUFMRk9STUVEX0FSR1VNRU5UXCIsZVtlLkVYUEVDVF9BUkdVTUVOVF9UWVBFPTRdPVwiRVhQRUNUX0FSR1VNRU5UX1RZUEVcIixlW2UuSU5WQUxJRF9BUkdVTUVOVF9UWVBFPTVdPVwiSU5WQUxJRF9BUkdVTUVOVF9UWVBFXCIsZVtlLkVYUEVDVF9BUkdVTUVOVF9TVFlMRT02XT1cIkVYUEVDVF9BUkdVTUVOVF9TVFlMRVwiLGVbZS5JTlZBTElEX05VTUJFUl9TS0VMRVRPTj03XT1cIklOVkFMSURfTlVNQkVSX1NLRUxFVE9OXCIsZVtlLklOVkFMSURfREFURV9USU1FX1NLRUxFVE9OPThdPVwiSU5WQUxJRF9EQVRFX1RJTUVfU0tFTEVUT05cIixlW2UuRVhQRUNUX05VTUJFUl9TS0VMRVRPTj05XT1cIkVYUEVDVF9OVU1CRVJfU0tFTEVUT05cIixlW2UuRVhQRUNUX0RBVEVfVElNRV9TS0VMRVRPTj0xMF09XCJFWFBFQ1RfREFURV9USU1FX1NLRUxFVE9OXCIsZVtlLlVOQ0xPU0VEX1FVT1RFX0lOX0FSR1VNRU5UX1NUWUxFPTExXT1cIlVOQ0xPU0VEX1FVT1RFX0lOX0FSR1VNRU5UX1NUWUxFXCIsZVtlLkVYUEVDVF9TRUxFQ1RfQVJHVU1FTlRfT1BUSU9OUz0xMl09XCJFWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX09QVElPTlNcIixlW2UuRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9PRkZTRVRfVkFMVUU9MTNdPVwiRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9PRkZTRVRfVkFMVUVcIixlW2UuSU5WQUxJRF9QTFVSQUxfQVJHVU1FTlRfT0ZGU0VUX1ZBTFVFPTE0XT1cIklOVkFMSURfUExVUkFMX0FSR1VNRU5UX09GRlNFVF9WQUxVRVwiLGVbZS5FWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX1NFTEVDVE9SPTE1XT1cIkVYUEVDVF9TRUxFQ1RfQVJHVU1FTlRfU0VMRUNUT1JcIixlW2UuRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUj0xNl09XCJFWFBFQ1RfUExVUkFMX0FSR1VNRU5UX1NFTEVDVE9SXCIsZVtlLkVYUEVDVF9TRUxFQ1RfQVJHVU1FTlRfU0VMRUNUT1JfRlJBR01FTlQ9MTddPVwiRVhQRUNUX1NFTEVDVF9BUkdVTUVOVF9TRUxFQ1RPUl9GUkFHTUVOVFwiLGVbZS5FWFBFQ1RfUExVUkFMX0FSR1VNRU5UX1NFTEVDVE9SX0ZSQUdNRU5UPTE4XT1cIkVYUEVDVF9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1JfRlJBR01FTlRcIixlW2UuSU5WQUxJRF9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1I9MTldPVwiSU5WQUxJRF9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1JcIixlW2UuRFVQTElDQVRFX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUj0yMF09XCJEVVBMSUNBVEVfUExVUkFMX0FSR1VNRU5UX1NFTEVDVE9SXCIsZVtlLkRVUExJQ0FURV9TRUxFQ1RfQVJHVU1FTlRfU0VMRUNUT1I9MjFdPVwiRFVQTElDQVRFX1NFTEVDVF9BUkdVTUVOVF9TRUxFQ1RPUlwiLGVbZS5NSVNTSU5HX09USEVSX0NMQVVTRT0yMl09XCJNSVNTSU5HX09USEVSX0NMQVVTRVwiLGVbZS5JTlZBTElEX1RBRz0yM109XCJJTlZBTElEX1RBR1wiLGVbZS5JTlZBTElEX1RBR19OQU1FPTI1XT1cIklOVkFMSURfVEFHX05BTUVcIixlW2UuVU5NQVRDSEVEX0NMT1NJTkdfVEFHPTI2XT1cIlVOTUFUQ0hFRF9DTE9TSU5HX1RBR1wiLGVbZS5VTkNMT1NFRF9UQUc9MjddPVwiVU5DTE9TRURfVEFHXCJ9KHFifHwocWI9e30pKSxmdW5jdGlvbihlKXtlW2UubGl0ZXJhbD0wXT1cImxpdGVyYWxcIixlW2UuYXJndW1lbnQ9MV09XCJhcmd1bWVudFwiLGVbZS5udW1iZXI9Ml09XCJudW1iZXJcIixlW2UuZGF0ZT0zXT1cImRhdGVcIixlW2UudGltZT00XT1cInRpbWVcIixlW2Uuc2VsZWN0PTVdPVwic2VsZWN0XCIsZVtlLnBsdXJhbD02XT1cInBsdXJhbFwiLGVbZS5wb3VuZD03XT1cInBvdW5kXCIsZVtlLnRhZz04XT1cInRhZ1wifShRYnx8KFFiPXt9KSksZnVuY3Rpb24oZSl7ZVtlLm51bWJlcj0wXT1cIm51bWJlclwiLGVbZS5kYXRlVGltZT0xXT1cImRhdGVUaW1lXCJ9KFhifHwoWGI9e30pKTt2YXIgY3k9L1sgXFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwXS8sdXk9Lyg/OltFZWNdezEsNn18R3sxLDV9fFtRcV17MSw1fXwoPzpbeVl1cl0rfFV7MSw1fSl8W01MXXsxLDV9fGR7MSwyfXxEezEsM318RnsxfXxbYWJCXXsxLDV9fFtoa0hLXXsxLDJ9fHd7MSwyfXxXezF9fG17MSwyfXxzezEsMn18W3paT3ZWeFhdezEsNH0pKD89KFteJ10qJ1teJ10qJykqW14nXSokKS9nO2Z1bmN0aW9uIGR5KGUpe3ZhciB0PXt9O3JldHVybiBlLnJlcGxhY2UodXksKGZ1bmN0aW9uKGUpe3ZhciBuPWUubGVuZ3RoO3N3aXRjaChlWzBdKXtjYXNlXCJHXCI6dC5lcmE9ND09PW4/XCJsb25nXCI6NT09PW4/XCJuYXJyb3dcIjpcInNob3J0XCI7YnJlYWs7Y2FzZVwieVwiOnQueWVhcj0yPT09bj9cIjItZGlnaXRcIjpcIm51bWVyaWNcIjticmVhaztjYXNlXCJZXCI6Y2FzZVwidVwiOmNhc2VcIlVcIjpjYXNlXCJyXCI6dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJgWS91L1UvcmAgKHllYXIpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYHlgIGluc3RlYWRcIik7Y2FzZVwicVwiOmNhc2VcIlFcIjp0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImBxL1FgIChxdWFydGVyKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZFwiKTtjYXNlXCJNXCI6Y2FzZVwiTFwiOnQubW9udGg9W1wibnVtZXJpY1wiLFwiMi1kaWdpdFwiLFwic2hvcnRcIixcImxvbmdcIixcIm5hcnJvd1wiXVtuLTFdO2JyZWFrO2Nhc2VcIndcIjpjYXNlXCJXXCI6dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJgdy9XYCAod2VlaykgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7Y2FzZVwiZFwiOnQuZGF5PVtcIm51bWVyaWNcIixcIjItZGlnaXRcIl1bbi0xXTticmVhaztjYXNlXCJEXCI6Y2FzZVwiRlwiOmNhc2VcImdcIjp0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImBEL0YvZ2AgKGRheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgZGAgaW5zdGVhZFwiKTtjYXNlXCJFXCI6dC53ZWVrZGF5PTQ9PT1uP1wic2hvcnRcIjo1PT09bj9cIm5hcnJvd1wiOlwic2hvcnRcIjticmVhaztjYXNlXCJlXCI6aWYobjw0KXRocm93IG5ldyBSYW5nZUVycm9yKFwiYGUuLmVlZWAgKHdlZWtkYXkpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkXCIpO3Qud2Vla2RheT1bXCJzaG9ydFwiLFwibG9uZ1wiLFwibmFycm93XCIsXCJzaG9ydFwiXVtuLTRdO2JyZWFrO2Nhc2VcImNcIjppZihuPDQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJgYy4uY2NjYCAod2Vla2RheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7dC53ZWVrZGF5PVtcInNob3J0XCIsXCJsb25nXCIsXCJuYXJyb3dcIixcInNob3J0XCJdW24tNF07YnJlYWs7Y2FzZVwiYVwiOnQuaG91cjEyPSEwO2JyZWFrO2Nhc2VcImJcIjpjYXNlXCJCXCI6dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJgYi9CYCAocGVyaW9kKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBhYCBpbnN0ZWFkXCIpO2Nhc2VcImhcIjp0LmhvdXJDeWNsZT1cImgxMlwiLHQuaG91cj1bXCJudW1lcmljXCIsXCIyLWRpZ2l0XCJdW24tMV07YnJlYWs7Y2FzZVwiSFwiOnQuaG91ckN5Y2xlPVwiaDIzXCIsdC5ob3VyPVtcIm51bWVyaWNcIixcIjItZGlnaXRcIl1bbi0xXTticmVhaztjYXNlXCJLXCI6dC5ob3VyQ3ljbGU9XCJoMTFcIix0LmhvdXI9W1wibnVtZXJpY1wiLFwiMi1kaWdpdFwiXVtuLTFdO2JyZWFrO2Nhc2VcImtcIjp0LmhvdXJDeWNsZT1cImgyNFwiLHQuaG91cj1bXCJudW1lcmljXCIsXCIyLWRpZ2l0XCJdW24tMV07YnJlYWs7Y2FzZVwialwiOmNhc2VcIkpcIjpjYXNlXCJDXCI6dGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJgai9KL0NgIChob3VyKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBoL0gvSy9rYCBpbnN0ZWFkXCIpO2Nhc2VcIm1cIjp0Lm1pbnV0ZT1bXCJudW1lcmljXCIsXCIyLWRpZ2l0XCJdW24tMV07YnJlYWs7Y2FzZVwic1wiOnQuc2Vjb25kPVtcIm51bWVyaWNcIixcIjItZGlnaXRcIl1bbi0xXTticmVhaztjYXNlXCJTXCI6Y2FzZVwiQVwiOnRocm93IG5ldyBSYW5nZUVycm9yKFwiYFMvQWAgKHNlY29uZCkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgc2AgaW5zdGVhZFwiKTtjYXNlXCJ6XCI6dC50aW1lWm9uZU5hbWU9bjw0P1wic2hvcnRcIjpcImxvbmdcIjticmVhaztjYXNlXCJaXCI6Y2FzZVwiT1wiOmNhc2VcInZcIjpjYXNlXCJWXCI6Y2FzZVwiWFwiOmNhc2VcInhcIjp0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImBaL08vdi9WL1gveGAgKHRpbWVab25lKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGB6YCBpbnN0ZWFkXCIpfXJldHVyblwiXCJ9KSksdH12YXIgZnk9ZnVuY3Rpb24oKXtyZXR1cm4gZnk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49MSxyPWFyZ3VtZW50cy5sZW5ndGg7bjxyO24rKylmb3IodmFyIG8gaW4gdD1hcmd1bWVudHNbbl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbykmJihlW29dPXRbb10pO3JldHVybiBlfSxmeS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O09iamVjdC5jcmVhdGU7T2JqZWN0LmNyZWF0ZTt2YXIgcHk9L1tcXHQtXFxyIFxceDg1XFx1MjAwRVxcdTIwMEZcXHUyMDI4XFx1MjAyOV0vaTt2YXIgZ3k9L15cXC4oPzooMCspKFxcKik/fCgjKyl8KDArKSgjKykpJC9nLG15PS9eKEArKT8oXFwrfCMrKT9bcnNdPyQvZyxoeT0vKFxcKikoMCspfCgjKykoMCspfCgwKykvZyxieT0vXigwKykkLztmdW5jdGlvbiB5eShlKXt2YXIgdD17fTtyZXR1cm5cInJcIj09PWVbZS5sZW5ndGgtMV0/dC5yb3VuZGluZ1ByaW9yaXR5PVwibW9yZVByZWNpc2lvblwiOlwic1wiPT09ZVtlLmxlbmd0aC0xXSYmKHQucm91bmRpbmdQcmlvcml0eT1cImxlc3NQcmVjaXNpb25cIiksZS5yZXBsYWNlKG15LChmdW5jdGlvbihlLG4scil7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHI/KHQubWluaW11bVNpZ25pZmljYW50RGlnaXRzPW4ubGVuZ3RoLHQubWF4aW11bVNpZ25pZmljYW50RGlnaXRzPW4ubGVuZ3RoKTpcIitcIj09PXI/dC5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHM9bi5sZW5ndGg6XCIjXCI9PT1uWzBdP3QubWF4aW11bVNpZ25pZmljYW50RGlnaXRzPW4ubGVuZ3RoOih0Lm1pbmltdW1TaWduaWZpY2FudERpZ2l0cz1uLmxlbmd0aCx0Lm1heGltdW1TaWduaWZpY2FudERpZ2l0cz1uLmxlbmd0aCsoXCJzdHJpbmdcIj09dHlwZW9mIHI/ci5sZW5ndGg6MCkpLFwiXCJ9KSksdH1mdW5jdGlvbiB2eShlKXtzd2l0Y2goZSl7Y2FzZVwic2lnbi1hdXRvXCI6cmV0dXJue3NpZ25EaXNwbGF5OlwiYXV0b1wifTtjYXNlXCJzaWduLWFjY291bnRpbmdcIjpjYXNlXCIoKVwiOnJldHVybntjdXJyZW5jeVNpZ246XCJhY2NvdW50aW5nXCJ9O2Nhc2VcInNpZ24tYWx3YXlzXCI6Y2FzZVwiKyFcIjpyZXR1cm57c2lnbkRpc3BsYXk6XCJhbHdheXNcIn07Y2FzZVwic2lnbi1hY2NvdW50aW5nLWFsd2F5c1wiOmNhc2VcIigpIVwiOnJldHVybntzaWduRGlzcGxheTpcImFsd2F5c1wiLGN1cnJlbmN5U2lnbjpcImFjY291bnRpbmdcIn07Y2FzZVwic2lnbi1leGNlcHQtemVyb1wiOmNhc2VcIis/XCI6cmV0dXJue3NpZ25EaXNwbGF5OlwiZXhjZXB0WmVyb1wifTtjYXNlXCJzaWduLWFjY291bnRpbmctZXhjZXB0LXplcm9cIjpjYXNlXCIoKT9cIjpyZXR1cm57c2lnbkRpc3BsYXk6XCJleGNlcHRaZXJvXCIsY3VycmVuY3lTaWduOlwiYWNjb3VudGluZ1wifTtjYXNlXCJzaWduLW5ldmVyXCI6Y2FzZVwiK19cIjpyZXR1cm57c2lnbkRpc3BsYXk6XCJuZXZlclwifX19ZnVuY3Rpb24gd3koZSl7dmFyIHQ7aWYoXCJFXCI9PT1lWzBdJiZcIkVcIj09PWVbMV0/KHQ9e25vdGF0aW9uOlwiZW5naW5lZXJpbmdcIn0sZT1lLnNsaWNlKDIpKTpcIkVcIj09PWVbMF0mJih0PXtub3RhdGlvbjpcInNjaWVudGlmaWNcIn0sZT1lLnNsaWNlKDEpKSx0KXt2YXIgbj1lLnNsaWNlKDAsMik7aWYoXCIrIVwiPT09bj8odC5zaWduRGlzcGxheT1cImFsd2F5c1wiLGU9ZS5zbGljZSgyKSk6XCIrP1wiPT09biYmKHQuc2lnbkRpc3BsYXk9XCJleGNlcHRaZXJvXCIsZT1lLnNsaWNlKDIpKSwhYnkudGVzdChlKSl0aHJvdyBuZXcgRXJyb3IoXCJNYWxmb3JtZWQgY29uY2lzZSBlbmcvc2NpZW50aWZpYyBub3RhdGlvblwiKTt0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzPWUubGVuZ3RofXJldHVybiB0fWZ1bmN0aW9uIFN5KGUpe3ZhciB0PXZ5KGUpO3JldHVybiB0fHx7fX1mdW5jdGlvbiBQeShlKXtmb3IodmFyIHQ9e30sbj0wLHI9ZTtuPHIubGVuZ3RoO24rKyl7dmFyIG89cltuXTtzd2l0Y2goby5zdGVtKXtjYXNlXCJwZXJjZW50XCI6Y2FzZVwiJVwiOnQuc3R5bGU9XCJwZXJjZW50XCI7Y29udGludWU7Y2FzZVwiJXgxMDBcIjp0LnN0eWxlPVwicGVyY2VudFwiLHQuc2NhbGU9MTAwO2NvbnRpbnVlO2Nhc2VcImN1cnJlbmN5XCI6dC5zdHlsZT1cImN1cnJlbmN5XCIsdC5jdXJyZW5jeT1vLm9wdGlvbnNbMF07Y29udGludWU7Y2FzZVwiZ3JvdXAtb2ZmXCI6Y2FzZVwiLF9cIjp0LnVzZUdyb3VwaW5nPSExO2NvbnRpbnVlO2Nhc2VcInByZWNpc2lvbi1pbnRlZ2VyXCI6Y2FzZVwiLlwiOnQubWF4aW11bUZyYWN0aW9uRGlnaXRzPTA7Y29udGludWU7Y2FzZVwibWVhc3VyZS11bml0XCI6Y2FzZVwidW5pdFwiOnQuc3R5bGU9XCJ1bml0XCIsdC51bml0PW8ub3B0aW9uc1swXS5yZXBsYWNlKC9eKC4qPyktLyxcIlwiKTtjb250aW51ZTtjYXNlXCJjb21wYWN0LXNob3J0XCI6Y2FzZVwiS1wiOnQubm90YXRpb249XCJjb21wYWN0XCIsdC5jb21wYWN0RGlzcGxheT1cInNob3J0XCI7Y29udGludWU7Y2FzZVwiY29tcGFjdC1sb25nXCI6Y2FzZVwiS0tcIjp0Lm5vdGF0aW9uPVwiY29tcGFjdFwiLHQuY29tcGFjdERpc3BsYXk9XCJsb25nXCI7Y29udGludWU7Y2FzZVwic2NpZW50aWZpY1wiOnQ9ZnkoZnkoZnkoe30sdCkse25vdGF0aW9uOlwic2NpZW50aWZpY1wifSksby5vcHRpb25zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnkoZnkoe30sZSksU3kodCkpfSkse30pKTtjb250aW51ZTtjYXNlXCJlbmdpbmVlcmluZ1wiOnQ9ZnkoZnkoZnkoe30sdCkse25vdGF0aW9uOlwiZW5naW5lZXJpbmdcIn0pLG8ub3B0aW9ucy5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ5KGZ5KHt9LGUpLFN5KHQpKX0pLHt9KSk7Y29udGludWU7Y2FzZVwibm90YXRpb24tc2ltcGxlXCI6dC5ub3RhdGlvbj1cInN0YW5kYXJkXCI7Y29udGludWU7Y2FzZVwidW5pdC13aWR0aC1uYXJyb3dcIjp0LmN1cnJlbmN5RGlzcGxheT1cIm5hcnJvd1N5bWJvbFwiLHQudW5pdERpc3BsYXk9XCJuYXJyb3dcIjtjb250aW51ZTtjYXNlXCJ1bml0LXdpZHRoLXNob3J0XCI6dC5jdXJyZW5jeURpc3BsYXk9XCJjb2RlXCIsdC51bml0RGlzcGxheT1cInNob3J0XCI7Y29udGludWU7Y2FzZVwidW5pdC13aWR0aC1mdWxsLW5hbWVcIjp0LmN1cnJlbmN5RGlzcGxheT1cIm5hbWVcIix0LnVuaXREaXNwbGF5PVwibG9uZ1wiO2NvbnRpbnVlO2Nhc2VcInVuaXQtd2lkdGgtaXNvLWNvZGVcIjp0LmN1cnJlbmN5RGlzcGxheT1cInN5bWJvbFwiO2NvbnRpbnVlO2Nhc2VcInNjYWxlXCI6dC5zY2FsZT1wYXJzZUZsb2F0KG8ub3B0aW9uc1swXSk7Y29udGludWU7Y2FzZVwiaW50ZWdlci13aWR0aFwiOmlmKG8ub3B0aW9ucy5sZW5ndGg+MSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImludGVnZXItd2lkdGggc3RlbXMgb25seSBhY2NlcHQgYSBzaW5nbGUgb3B0aW9uYWwgb3B0aW9uXCIpO28ub3B0aW9uc1swXS5yZXBsYWNlKGh5LChmdW5jdGlvbihlLG4scixvLGksYSl7aWYobil0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzPXIubGVuZ3RoO2Vsc2V7aWYobyYmaSl0aHJvdyBuZXcgRXJyb3IoXCJXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgbWF4aW11bSBpbnRlZ2VyIGRpZ2l0c1wiKTtpZihhKXRocm93IG5ldyBFcnJvcihcIldlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBleGFjdCBpbnRlZ2VyIGRpZ2l0c1wiKX1yZXR1cm5cIlwifSkpO2NvbnRpbnVlfWlmKGJ5LnRlc3Qoby5zdGVtKSl0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzPW8uc3RlbS5sZW5ndGg7ZWxzZSBpZihneS50ZXN0KG8uc3RlbSkpe2lmKG8ub3B0aW9ucy5sZW5ndGg+MSl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkZyYWN0aW9uLXByZWNpc2lvbiBzdGVtcyBvbmx5IGFjY2VwdCBhIHNpbmdsZSBvcHRpb25hbCBvcHRpb25cIik7by5zdGVtLnJlcGxhY2UoZ3ksKGZ1bmN0aW9uKGUsbixyLG8saSxhKXtyZXR1cm5cIipcIj09PXI/dC5taW5pbXVtRnJhY3Rpb25EaWdpdHM9bi5sZW5ndGg6byYmXCIjXCI9PT1vWzBdP3QubWF4aW11bUZyYWN0aW9uRGlnaXRzPW8ubGVuZ3RoOmkmJmE/KHQubWluaW11bUZyYWN0aW9uRGlnaXRzPWkubGVuZ3RoLHQubWF4aW11bUZyYWN0aW9uRGlnaXRzPWkubGVuZ3RoK2EubGVuZ3RoKToodC5taW5pbXVtRnJhY3Rpb25EaWdpdHM9bi5sZW5ndGgsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHM9bi5sZW5ndGgpLFwiXCJ9KSk7dmFyIGk9by5vcHRpb25zWzBdO1wid1wiPT09aT90PWZ5KGZ5KHt9LHQpLHt0cmFpbGluZ1plcm9EaXNwbGF5Olwic3RyaXBJZkludGVnZXJcIn0pOmkmJih0PWZ5KGZ5KHt9LHQpLHl5KGkpKSl9ZWxzZSBpZihteS50ZXN0KG8uc3RlbSkpdD1meShmeSh7fSx0KSx5eShvLnN0ZW0pKTtlbHNle3ZhciBhPXZ5KG8uc3RlbSk7YSYmKHQ9ZnkoZnkoe30sdCksYSkpO3ZhciBsPXd5KG8uc3RlbSk7bCYmKHQ9ZnkoZnkoe30sdCksbCkpfX1yZXR1cm4gdH12YXIgeHksT3k9e0FYOltcIkhcIl0sQlE6W1wiSFwiXSxDUDpbXCJIXCJdLENaOltcIkhcIl0sREs6W1wiSFwiXSxGSTpbXCJIXCJdLElEOltcIkhcIl0sSVM6W1wiSFwiXSxNTDpbXCJIXCJdLE5FOltcIkhcIl0sUlU6W1wiSFwiXSxTRTpbXCJIXCJdLFNKOltcIkhcIl0sU0s6W1wiSFwiXSxBUzpbXCJoXCIsXCJIXCJdLEJUOltcImhcIixcIkhcIl0sREo6W1wiaFwiLFwiSFwiXSxFUjpbXCJoXCIsXCJIXCJdLEdIOltcImhcIixcIkhcIl0sSU46W1wiaFwiLFwiSFwiXSxMUzpbXCJoXCIsXCJIXCJdLFBHOltcImhcIixcIkhcIl0sUFc6W1wiaFwiLFwiSFwiXSxTTzpbXCJoXCIsXCJIXCJdLFRPOltcImhcIixcIkhcIl0sVlU6W1wiaFwiLFwiSFwiXSxXUzpbXCJoXCIsXCJIXCJdLFwiMDAxXCI6W1wiSFwiLFwiaFwiXSxBTDpbXCJoXCIsXCJIXCIsXCJoQlwiXSxURDpbXCJoXCIsXCJIXCIsXCJoQlwiXSxcImNhLUVTXCI6W1wiSFwiLFwiaFwiLFwiaEJcIl0sQ0Y6W1wiSFwiLFwiaFwiLFwiaEJcIl0sQ006W1wiSFwiLFwiaFwiLFwiaEJcIl0sXCJmci1DQVwiOltcIkhcIixcImhcIixcImhCXCJdLFwiZ2wtRVNcIjpbXCJIXCIsXCJoXCIsXCJoQlwiXSxcIml0LUNIXCI6W1wiSFwiLFwiaFwiLFwiaEJcIl0sXCJpdC1JVFwiOltcIkhcIixcImhcIixcImhCXCJdLExVOltcIkhcIixcImhcIixcImhCXCJdLE5QOltcIkhcIixcImhcIixcImhCXCJdLFBGOltcIkhcIixcImhcIixcImhCXCJdLFNDOltcIkhcIixcImhcIixcImhCXCJdLFNNOltcIkhcIixcImhcIixcImhCXCJdLFNOOltcIkhcIixcImhcIixcImhCXCJdLFRGOltcIkhcIixcImhcIixcImhCXCJdLFZBOltcIkhcIixcImhcIixcImhCXCJdLENZOltcImhcIixcIkhcIixcImhiXCIsXCJoQlwiXSxHUjpbXCJoXCIsXCJIXCIsXCJoYlwiLFwiaEJcIl0sQ086W1wiaFwiLFwiSFwiLFwiaEJcIixcImhiXCJdLERPOltcImhcIixcIkhcIixcImhCXCIsXCJoYlwiXSxLUDpbXCJoXCIsXCJIXCIsXCJoQlwiLFwiaGJcIl0sS1I6W1wiaFwiLFwiSFwiLFwiaEJcIixcImhiXCJdLE5BOltcImhcIixcIkhcIixcImhCXCIsXCJoYlwiXSxQQTpbXCJoXCIsXCJIXCIsXCJoQlwiLFwiaGJcIl0sUFI6W1wiaFwiLFwiSFwiLFwiaEJcIixcImhiXCJdLFZFOltcImhcIixcIkhcIixcImhCXCIsXCJoYlwiXSxBQzpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sQUk6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLEJXOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxCWjpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sQ0M6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLENLOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxDWDpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sREc6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLEZLOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxHQjpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sR0c6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLEdJOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxJRTpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sSU06W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLElPOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxKRTpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sTFQ6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLE1LOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxNTjpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sTVM6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLE5GOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxORzpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sTlI6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLE5VOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxQTjpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sU0g6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLFNYOltcIkhcIixcImhcIixcImhiXCIsXCJoQlwiXSxUQTpbXCJIXCIsXCJoXCIsXCJoYlwiLFwiaEJcIl0sWkE6W1wiSFwiLFwiaFwiLFwiaGJcIixcImhCXCJdLFwiYWYtWkFcIjpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sQVI6W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLENMOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxDUjpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sQ1U6W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLEVBOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxcImVzLUJPXCI6W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLFwiZXMtQlJcIjpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sXCJlcy1FQ1wiOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxcImVzLUVTXCI6W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLFwiZXMtR1FcIjpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sXCJlcy1QRVwiOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxHVDpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sSE46W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLElDOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxLRzpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sS006W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLExLOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxNQTpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sTVg6W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLE5JOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxQWTpbXCJIXCIsXCJoXCIsXCJoQlwiLFwiaGJcIl0sU1Y6W1wiSFwiLFwiaFwiLFwiaEJcIixcImhiXCJdLFVZOltcIkhcIixcImhcIixcImhCXCIsXCJoYlwiXSxKUDpbXCJIXCIsXCJoXCIsXCJLXCJdLEFEOltcIkhcIixcImhCXCJdLEFNOltcIkhcIixcImhCXCJdLEFPOltcIkhcIixcImhCXCJdLEFUOltcIkhcIixcImhCXCJdLEFXOltcIkhcIixcImhCXCJdLEJFOltcIkhcIixcImhCXCJdLEJGOltcIkhcIixcImhCXCJdLEJKOltcIkhcIixcImhCXCJdLEJMOltcIkhcIixcImhCXCJdLEJSOltcIkhcIixcImhCXCJdLENHOltcIkhcIixcImhCXCJdLENJOltcIkhcIixcImhCXCJdLENWOltcIkhcIixcImhCXCJdLERFOltcIkhcIixcImhCXCJdLEVFOltcIkhcIixcImhCXCJdLEZSOltcIkhcIixcImhCXCJdLEdBOltcIkhcIixcImhCXCJdLEdGOltcIkhcIixcImhCXCJdLEdOOltcIkhcIixcImhCXCJdLEdQOltcIkhcIixcImhCXCJdLEdXOltcIkhcIixcImhCXCJdLEhSOltcIkhcIixcImhCXCJdLElMOltcIkhcIixcImhCXCJdLElUOltcIkhcIixcImhCXCJdLEtaOltcIkhcIixcImhCXCJdLE1DOltcIkhcIixcImhCXCJdLE1EOltcIkhcIixcImhCXCJdLE1GOltcIkhcIixcImhCXCJdLE1ROltcIkhcIixcImhCXCJdLE1aOltcIkhcIixcImhCXCJdLE5DOltcIkhcIixcImhCXCJdLE5MOltcIkhcIixcImhCXCJdLFBNOltcIkhcIixcImhCXCJdLFBUOltcIkhcIixcImhCXCJdLFJFOltcIkhcIixcImhCXCJdLFJPOltcIkhcIixcImhCXCJdLFNJOltcIkhcIixcImhCXCJdLFNSOltcIkhcIixcImhCXCJdLFNUOltcIkhcIixcImhCXCJdLFRHOltcIkhcIixcImhCXCJdLFRSOltcIkhcIixcImhCXCJdLFdGOltcIkhcIixcImhCXCJdLFlUOltcIkhcIixcImhCXCJdLEJEOltcImhcIixcImhCXCIsXCJIXCJdLFBLOltcImhcIixcImhCXCIsXCJIXCJdLEFaOltcIkhcIixcImhCXCIsXCJoXCJdLEJBOltcIkhcIixcImhCXCIsXCJoXCJdLEJHOltcIkhcIixcImhCXCIsXCJoXCJdLENIOltcIkhcIixcImhCXCIsXCJoXCJdLEdFOltcIkhcIixcImhCXCIsXCJoXCJdLExJOltcIkhcIixcImhCXCIsXCJoXCJdLE1FOltcIkhcIixcImhCXCIsXCJoXCJdLFJTOltcIkhcIixcImhCXCIsXCJoXCJdLFVBOltcIkhcIixcImhCXCIsXCJoXCJdLFVaOltcIkhcIixcImhCXCIsXCJoXCJdLFhLOltcIkhcIixcImhCXCIsXCJoXCJdLEFHOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxBVTpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sQkI6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLEJNOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxCUzpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sQ0E6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLERNOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxcImVuLTAwMVwiOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxGSjpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sRk06W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLEdEOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxHTTpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sR1U6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLEdZOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxKTTpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sS0k6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLEtOOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxLWTpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sTEM6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLExSOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxNSDpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sTVA6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLE1XOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxOWjpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sU0I6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLFNHOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxTTDpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sU1M6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLFNaOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxUQzpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sVFQ6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLFVNOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxVUzpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sVkM6W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLFZHOltcImhcIixcImhiXCIsXCJIXCIsXCJoQlwiXSxWSTpbXCJoXCIsXCJoYlwiLFwiSFwiLFwiaEJcIl0sWk06W1wiaFwiLFwiaGJcIixcIkhcIixcImhCXCJdLEJPOltcIkhcIixcImhCXCIsXCJoXCIsXCJoYlwiXSxFQzpbXCJIXCIsXCJoQlwiLFwiaFwiLFwiaGJcIl0sRVM6W1wiSFwiLFwiaEJcIixcImhcIixcImhiXCJdLEdROltcIkhcIixcImhCXCIsXCJoXCIsXCJoYlwiXSxQRTpbXCJIXCIsXCJoQlwiLFwiaFwiLFwiaGJcIl0sQUU6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLFwiYXItMDAxXCI6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLEJIOltcImhcIixcImhCXCIsXCJoYlwiLFwiSFwiXSxEWjpbXCJoXCIsXCJoQlwiLFwiaGJcIixcIkhcIl0sRUc6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLEVIOltcImhcIixcImhCXCIsXCJoYlwiLFwiSFwiXSxISzpbXCJoXCIsXCJoQlwiLFwiaGJcIixcIkhcIl0sSVE6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLEpPOltcImhcIixcImhCXCIsXCJoYlwiLFwiSFwiXSxLVzpbXCJoXCIsXCJoQlwiLFwiaGJcIixcIkhcIl0sTEI6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLExZOltcImhcIixcImhCXCIsXCJoYlwiLFwiSFwiXSxNTzpbXCJoXCIsXCJoQlwiLFwiaGJcIixcIkhcIl0sTVI6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLE9NOltcImhcIixcImhCXCIsXCJoYlwiLFwiSFwiXSxQSDpbXCJoXCIsXCJoQlwiLFwiaGJcIixcIkhcIl0sUFM6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLFFBOltcImhcIixcImhCXCIsXCJoYlwiLFwiSFwiXSxTQTpbXCJoXCIsXCJoQlwiLFwiaGJcIixcIkhcIl0sU0Q6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLFNZOltcImhcIixcImhCXCIsXCJoYlwiLFwiSFwiXSxUTjpbXCJoXCIsXCJoQlwiLFwiaGJcIixcIkhcIl0sWUU6W1wiaFwiLFwiaEJcIixcImhiXCIsXCJIXCJdLEFGOltcIkhcIixcImhiXCIsXCJoQlwiLFwiaFwiXSxMQTpbXCJIXCIsXCJoYlwiLFwiaEJcIixcImhcIl0sQ046W1wiSFwiLFwiaEJcIixcImhiXCIsXCJoXCJdLExWOltcIkhcIixcImhCXCIsXCJoYlwiLFwiaFwiXSxUTDpbXCJIXCIsXCJoQlwiLFwiaGJcIixcImhcIl0sXCJ6dS1aQVwiOltcIkhcIixcImhCXCIsXCJoYlwiLFwiaFwiXSxDRDpbXCJoQlwiLFwiSFwiXSxJUjpbXCJoQlwiLFwiSFwiXSxcImhpLUlOXCI6W1wiaEJcIixcImhcIixcIkhcIl0sXCJrbi1JTlwiOltcImhCXCIsXCJoXCIsXCJIXCJdLFwibWwtSU5cIjpbXCJoQlwiLFwiaFwiLFwiSFwiXSxcInRlLUlOXCI6W1wiaEJcIixcImhcIixcIkhcIl0sS0g6W1wiaEJcIixcImhcIixcIkhcIixcImhiXCJdLFwidGEtSU5cIjpbXCJoQlwiLFwiaFwiLFwiaGJcIixcIkhcIl0sQk46W1wiaGJcIixcImhCXCIsXCJoXCIsXCJIXCJdLE1ZOltcImhiXCIsXCJoQlwiLFwiaFwiLFwiSFwiXSxFVDpbXCJoQlwiLFwiaGJcIixcImhcIixcIkhcIl0sXCJndS1JTlwiOltcImhCXCIsXCJoYlwiLFwiaFwiLFwiSFwiXSxcIm1yLUlOXCI6W1wiaEJcIixcImhiXCIsXCJoXCIsXCJIXCJdLFwicGEtSU5cIjpbXCJoQlwiLFwiaGJcIixcImhcIixcIkhcIl0sVFc6W1wiaEJcIixcImhiXCIsXCJoXCIsXCJIXCJdLEtFOltcImhCXCIsXCJoYlwiLFwiSFwiLFwiaFwiXSxNTTpbXCJoQlwiLFwiaGJcIixcIkhcIixcImhcIl0sVFo6W1wiaEJcIixcImhiXCIsXCJIXCIsXCJoXCJdLFVHOltcImhCXCIsXCJoYlwiLFwiSFwiLFwiaFwiXX07ZnVuY3Rpb24gX3koZSl7dmFyIHQ9ZS5ob3VyQ3ljbGU7aWYodm9pZCAwPT09dCYmZS5ob3VyQ3ljbGVzJiZlLmhvdXJDeWNsZXMubGVuZ3RoJiYodD1lLmhvdXJDeWNsZXNbMF0pLHQpc3dpdGNoKHQpe2Nhc2VcImgyNFwiOnJldHVyblwia1wiO2Nhc2VcImgyM1wiOnJldHVyblwiSFwiO2Nhc2VcImgxMlwiOnJldHVyblwiaFwiO2Nhc2VcImgxMVwiOnJldHVyblwiS1wiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBob3VyQ3ljbGVcIil9dmFyIG4scj1lLmxhbmd1YWdlO3JldHVyblwicm9vdFwiIT09ciYmKG49ZS5tYXhpbWl6ZSgpLnJlZ2lvbiksKE95W258fFwiXCJdfHxPeVtyfHxcIlwiXXx8T3lbXCJcIi5jb25jYXQocixcIi0wMDFcIildfHxPeVtcIjAwMVwiXSlbMF19dmFyIEN5PW5ldyBSZWdFeHAoXCJeXCIuY29uY2F0KGN5LnNvdXJjZSxcIipcIikpLGt5PW5ldyBSZWdFeHAoXCJcIi5jb25jYXQoY3kuc291cmNlLFwiKiRcIikpO2Z1bmN0aW9uIEF5KGUsdCl7cmV0dXJue3N0YXJ0OmUsZW5kOnR9fXZhciBUeT0hIVN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCxFeT0hIVN0cmluZy5mcm9tQ29kZVBvaW50LGp5PSEhT2JqZWN0LmZyb21FbnRyaWVzLEl5PSEhU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdCxMeT0hIVN0cmluZy5wcm90b3R5cGUudHJpbVN0YXJ0LER5PSEhU3RyaW5nLnByb3RvdHlwZS50cmltRW5kLE55PSEhTnVtYmVyLmlzU2FmZUludGVnZXI/TnVtYmVyLmlzU2FmZUludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJmlzRmluaXRlKGUpJiZNYXRoLmZsb29yKGUpPT09ZSYmTWF0aC5hYnMoZSk8PTkwMDcxOTkyNTQ3NDA5OTF9LFJ5PSEwO3RyeXtSeT1cImFcIj09PShudWxsPT09KHh5PVd5KFwiKFteXFxcXHB7V2hpdGVfU3BhY2V9XFxcXHB7UGF0dGVybl9TeW50YXh9XSopXCIsXCJ5dVwiKS5leGVjKFwiYVwiKSl8fHZvaWQgMD09PXh5P3ZvaWQgMDp4eVswXSl9Y2F0Y2goV0Qpe1J5PSExfXZhciBCeSxVeT1UeT9mdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuc3RhcnRzV2l0aCh0LG4pfTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuc2xpY2UobixuK3QubGVuZ3RoKT09PXR9LEZ5PUV5P1N0cmluZy5mcm9tQ29kZVBvaW50OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO2Zvcih2YXIgbixyPVwiXCIsbz1lLmxlbmd0aCxpPTA7bz5pOyl7aWYoKG49ZVtpKytdKT4xMTE0MTExKXRocm93IFJhbmdlRXJyb3IobitcIiBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50XCIpO3IrPW48NjU1MzY/U3RyaW5nLmZyb21DaGFyQ29kZShuKTpTdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2Kygobi09NjU1MzYpPj4xMCksbiUxMDI0KzU2MzIwKX1yZXR1cm4gcn0sTXk9ank/T2JqZWN0LmZyb21FbnRyaWVzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD17fSxuPTAscj1lO248ci5sZW5ndGg7bisrKXt2YXIgbz1yW25dLGk9b1swXSxhPW9bMV07dFtpXT1hfXJldHVybiB0fSx6eT1JeT9mdW5jdGlvbihlLHQpe3JldHVybiBlLmNvZGVQb2ludEF0KHQpfTpmdW5jdGlvbihlLHQpe3ZhciBuPWUubGVuZ3RoO2lmKCEodDwwfHx0Pj1uKSl7dmFyIHIsbz1lLmNoYXJDb2RlQXQodCk7cmV0dXJuIG88NTUyOTZ8fG8+NTYzMTl8fHQrMT09PW58fChyPWUuY2hhckNvZGVBdCh0KzEpKTw1NjMyMHx8cj41NzM0Mz9vOnItNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNn19LEh5PUx5P2Z1bmN0aW9uKGUpe3JldHVybiBlLnRyaW1TdGFydCgpfTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKEN5LFwiXCIpfSxWeT1EeT9mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltRW5kKCl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2Uoa3ksXCJcIil9O2Z1bmN0aW9uIFd5KGUsdCl7cmV0dXJuIG5ldyBSZWdFeHAoZSx0KX1pZihSeSl7dmFyIEd5PVd5KFwiKFteXFxcXHB7V2hpdGVfU3BhY2V9XFxcXHB7UGF0dGVybl9TeW50YXh9XSopXCIsXCJ5dVwiKTtCeT1mdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBHeS5sYXN0SW5kZXg9dCxudWxsIT09KG49R3kuZXhlYyhlKVsxXSkmJnZvaWQgMCE9PW4/bjpcIlwifX1lbHNlIEJ5PWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdOzspe3ZhciByPXp5KGUsdCk7aWYodm9pZCAwPT09cnx8cXkocil8fFF5KHIpKWJyZWFrO24ucHVzaChyKSx0Kz1yPj02NTUzNj8yOjF9cmV0dXJuIEZ5LmFwcGx5KHZvaWQgMCxuKX07dmFyICR5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0aGlzLm1lc3NhZ2U9ZSx0aGlzLnBvc2l0aW9uPXtvZmZzZXQ6MCxsaW5lOjEsY29sdW1uOjF9LHRoaXMuaWdub3JlVGFnPSEhdC5pZ25vcmVUYWcsdGhpcy5sb2NhbGU9dC5sb2NhbGUsdGhpcy5yZXF1aXJlc090aGVyQ2xhdXNlPSEhdC5yZXF1aXJlc090aGVyQ2xhdXNlLHRoaXMuc2hvdWxkUGFyc2VTa2VsZXRvbnM9ISF0LnNob3VsZFBhcnNlU2tlbGV0b25zfXJldHVybiBlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbigpe2lmKDAhPT10aGlzLm9mZnNldCgpKXRocm93IEVycm9yKFwicGFyc2VyIGNhbiBvbmx5IGJlIHVzZWQgb25jZVwiKTtyZXR1cm4gdGhpcy5wYXJzZU1lc3NhZ2UoMCxcIlwiLCExKX0sZS5wcm90b3R5cGUucGFyc2VNZXNzYWdlPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W107IXRoaXMuaXNFT0YoKTspe3ZhciBvPXRoaXMuY2hhcigpO2lmKDEyMz09PW8pe2lmKChpPXRoaXMucGFyc2VBcmd1bWVudChlLG4pKS5lcnIpcmV0dXJuIGk7ci5wdXNoKGkudmFsKX1lbHNle2lmKDEyNT09PW8mJmU+MClicmVhaztpZigzNSE9PW98fFwicGx1cmFsXCIhPT10JiZcInNlbGVjdG9yZGluYWxcIiE9PXQpe2lmKDYwPT09byYmIXRoaXMuaWdub3JlVGFnJiY0Nz09PXRoaXMucGVlaygpKXtpZihuKWJyZWFrO3JldHVybiB0aGlzLmVycm9yKHFiLlVOTUFUQ0hFRF9DTE9TSU5HX1RBRyxBeSh0aGlzLmNsb25lUG9zaXRpb24oKSx0aGlzLmNsb25lUG9zaXRpb24oKSkpfWlmKDYwPT09byYmIXRoaXMuaWdub3JlVGFnJiZLeSh0aGlzLnBlZWsoKXx8MCkpe2lmKChpPXRoaXMucGFyc2VUYWcoZSx0KSkuZXJyKXJldHVybiBpO3IucHVzaChpLnZhbCl9ZWxzZXt2YXIgaTtpZigoaT10aGlzLnBhcnNlTGl0ZXJhbChlLHQpKS5lcnIpcmV0dXJuIGk7ci5wdXNoKGkudmFsKX19ZWxzZXt2YXIgYT10aGlzLmNsb25lUG9zaXRpb24oKTt0aGlzLmJ1bXAoKSxyLnB1c2goe3R5cGU6UWIucG91bmQsbG9jYXRpb246QXkoYSx0aGlzLmNsb25lUG9zaXRpb24oKSl9KX19fXJldHVybnt2YWw6cixlcnI6bnVsbH19LGUucHJvdG90eXBlLnBhcnNlVGFnPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jbG9uZVBvc2l0aW9uKCk7dGhpcy5idW1wKCk7dmFyIHI9dGhpcy5wYXJzZVRhZ05hbWUoKTtpZih0aGlzLmJ1bXBTcGFjZSgpLHRoaXMuYnVtcElmKFwiLz5cIikpcmV0dXJue3ZhbDp7dHlwZTpRYi5saXRlcmFsLHZhbHVlOlwiPFwiLmNvbmNhdChyLFwiLz5cIiksbG9jYXRpb246QXkobix0aGlzLmNsb25lUG9zaXRpb24oKSl9LGVycjpudWxsfTtpZih0aGlzLmJ1bXBJZihcIj5cIikpe3ZhciBvPXRoaXMucGFyc2VNZXNzYWdlKGUrMSx0LCEwKTtpZihvLmVycilyZXR1cm4gbzt2YXIgaT1vLnZhbCxhPXRoaXMuY2xvbmVQb3NpdGlvbigpO2lmKHRoaXMuYnVtcElmKFwiPC9cIikpe2lmKHRoaXMuaXNFT0YoKXx8IUt5KHRoaXMuY2hhcigpKSlyZXR1cm4gdGhpcy5lcnJvcihxYi5JTlZBTElEX1RBRyxBeShhLHRoaXMuY2xvbmVQb3NpdGlvbigpKSk7dmFyIGw9dGhpcy5jbG9uZVBvc2l0aW9uKCk7cmV0dXJuIHIhPT10aGlzLnBhcnNlVGFnTmFtZSgpP3RoaXMuZXJyb3IocWIuVU5NQVRDSEVEX0NMT1NJTkdfVEFHLEF5KGwsdGhpcy5jbG9uZVBvc2l0aW9uKCkpKToodGhpcy5idW1wU3BhY2UoKSx0aGlzLmJ1bXBJZihcIj5cIik/e3ZhbDp7dHlwZTpRYi50YWcsdmFsdWU6cixjaGlsZHJlbjppLGxvY2F0aW9uOkF5KG4sdGhpcy5jbG9uZVBvc2l0aW9uKCkpfSxlcnI6bnVsbH06dGhpcy5lcnJvcihxYi5JTlZBTElEX1RBRyxBeShhLHRoaXMuY2xvbmVQb3NpdGlvbigpKSkpfXJldHVybiB0aGlzLmVycm9yKHFiLlVOQ0xPU0VEX1RBRyxBeShuLHRoaXMuY2xvbmVQb3NpdGlvbigpKSl9cmV0dXJuIHRoaXMuZXJyb3IocWIuSU5WQUxJRF9UQUcsQXkobix0aGlzLmNsb25lUG9zaXRpb24oKSkpfSxlLnByb3RvdHlwZS5wYXJzZVRhZ05hbWU9ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub2Zmc2V0KCk7Zm9yKHRoaXMuYnVtcCgpOyF0aGlzLmlzRU9GKCkmJig0NT09PShlPXRoaXMuY2hhcigpKXx8NDY9PT1lfHxlPj00OCYmZTw9NTd8fDk1PT09ZXx8ZT49OTcmJmU8PTEyMnx8ZT49NjUmJmU8PTkwfHwxODM9PWV8fGU+PTE5MiYmZTw9MjE0fHxlPj0yMTYmJmU8PTI0Nnx8ZT49MjQ4JiZlPD04OTN8fGU+PTg5NSYmZTw9ODE5MXx8ZT49ODIwNCYmZTw9ODIwNXx8ZT49ODI1NSYmZTw9ODI1Nnx8ZT49ODMwNCYmZTw9ODU5MXx8ZT49MTEyNjQmJmU8PTEyMjcxfHxlPj0xMjI4OSYmZTw9NTUyOTV8fGU+PTYzNzQ0JiZlPD02NDk3NXx8ZT49NjUwMDgmJmU8PTY1NTMzfHxlPj02NTUzNiYmZTw9OTgzMDM5KTspdGhpcy5idW1wKCk7cmV0dXJuIHRoaXMubWVzc2FnZS5zbGljZSh0LHRoaXMub2Zmc2V0KCkpfSxlLnByb3RvdHlwZS5wYXJzZUxpdGVyYWw9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dGhpcy5jbG9uZVBvc2l0aW9uKCkscj1cIlwiOzspe3ZhciBvPXRoaXMudHJ5UGFyc2VRdW90ZSh0KTtpZihvKXIrPW87ZWxzZXt2YXIgaT10aGlzLnRyeVBhcnNlVW5xdW90ZWQoZSx0KTtpZihpKXIrPWk7ZWxzZXt2YXIgYT10aGlzLnRyeVBhcnNlTGVmdEFuZ2xlQnJhY2tldCgpO2lmKCFhKWJyZWFrO3IrPWF9fX12YXIgbD1BeShuLHRoaXMuY2xvbmVQb3NpdGlvbigpKTtyZXR1cm57dmFsOnt0eXBlOlFiLmxpdGVyYWwsdmFsdWU6cixsb2NhdGlvbjpsfSxlcnI6bnVsbH19LGUucHJvdG90eXBlLnRyeVBhcnNlTGVmdEFuZ2xlQnJhY2tldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRU9GKCl8fDYwIT09dGhpcy5jaGFyKCl8fCF0aGlzLmlnbm9yZVRhZyYmKEt5KGU9dGhpcy5wZWVrKCl8fDApfHw0Nz09PWUpP251bGw6KHRoaXMuYnVtcCgpLFwiPFwiKTt2YXIgZX0sZS5wcm90b3R5cGUudHJ5UGFyc2VRdW90ZT1mdW5jdGlvbihlKXtpZih0aGlzLmlzRU9GKCl8fDM5IT09dGhpcy5jaGFyKCkpcmV0dXJuIG51bGw7c3dpdGNoKHRoaXMucGVlaygpKXtjYXNlIDM5OnJldHVybiB0aGlzLmJ1bXAoKSx0aGlzLmJ1bXAoKSxcIidcIjtjYXNlIDEyMzpjYXNlIDYwOmNhc2UgNjI6Y2FzZSAxMjU6YnJlYWs7Y2FzZSAzNTppZihcInBsdXJhbFwiPT09ZXx8XCJzZWxlY3RvcmRpbmFsXCI9PT1lKWJyZWFrO3JldHVybiBudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9dGhpcy5idW1wKCk7dmFyIHQ9W3RoaXMuY2hhcigpXTtmb3IodGhpcy5idW1wKCk7IXRoaXMuaXNFT0YoKTspe3ZhciBuPXRoaXMuY2hhcigpO2lmKDM5PT09bil7aWYoMzkhPT10aGlzLnBlZWsoKSl7dGhpcy5idW1wKCk7YnJlYWt9dC5wdXNoKDM5KSx0aGlzLmJ1bXAoKX1lbHNlIHQucHVzaChuKTt0aGlzLmJ1bXAoKX1yZXR1cm4gRnkuYXBwbHkodm9pZCAwLHQpfSxlLnByb3RvdHlwZS50cnlQYXJzZVVucXVvdGVkPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5pc0VPRigpKXJldHVybiBudWxsO3ZhciBuPXRoaXMuY2hhcigpO3JldHVybiA2MD09PW58fDEyMz09PW58fDM1PT09biYmKFwicGx1cmFsXCI9PT10fHxcInNlbGVjdG9yZGluYWxcIj09PXQpfHwxMjU9PT1uJiZlPjA/bnVsbDoodGhpcy5idW1wKCksRnkobikpfSxlLnByb3RvdHlwZS5wYXJzZUFyZ3VtZW50PWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jbG9uZVBvc2l0aW9uKCk7aWYodGhpcy5idW1wKCksdGhpcy5idW1wU3BhY2UoKSx0aGlzLmlzRU9GKCkpcmV0dXJuIHRoaXMuZXJyb3IocWIuRVhQRUNUX0FSR1VNRU5UX0NMT1NJTkdfQlJBQ0UsQXkobix0aGlzLmNsb25lUG9zaXRpb24oKSkpO2lmKDEyNT09PXRoaXMuY2hhcigpKXJldHVybiB0aGlzLmJ1bXAoKSx0aGlzLmVycm9yKHFiLkVNUFRZX0FSR1VNRU5ULEF5KG4sdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTt2YXIgcj10aGlzLnBhcnNlSWRlbnRpZmllcklmUG9zc2libGUoKS52YWx1ZTtpZighcilyZXR1cm4gdGhpcy5lcnJvcihxYi5NQUxGT1JNRURfQVJHVU1FTlQsQXkobix0aGlzLmNsb25lUG9zaXRpb24oKSkpO2lmKHRoaXMuYnVtcFNwYWNlKCksdGhpcy5pc0VPRigpKXJldHVybiB0aGlzLmVycm9yKHFiLkVYUEVDVF9BUkdVTUVOVF9DTE9TSU5HX0JSQUNFLEF5KG4sdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTtzd2l0Y2godGhpcy5jaGFyKCkpe2Nhc2UgMTI1OnJldHVybiB0aGlzLmJ1bXAoKSx7dmFsOnt0eXBlOlFiLmFyZ3VtZW50LHZhbHVlOnIsbG9jYXRpb246QXkobix0aGlzLmNsb25lUG9zaXRpb24oKSl9LGVycjpudWxsfTtjYXNlIDQ0OnJldHVybiB0aGlzLmJ1bXAoKSx0aGlzLmJ1bXBTcGFjZSgpLHRoaXMuaXNFT0YoKT90aGlzLmVycm9yKHFiLkVYUEVDVF9BUkdVTUVOVF9DTE9TSU5HX0JSQUNFLEF5KG4sdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTp0aGlzLnBhcnNlQXJndW1lbnRPcHRpb25zKGUsdCxyLG4pO2RlZmF1bHQ6cmV0dXJuIHRoaXMuZXJyb3IocWIuTUFMRk9STUVEX0FSR1VNRU5ULEF5KG4sdGhpcy5jbG9uZVBvc2l0aW9uKCkpKX19LGUucHJvdG90eXBlLnBhcnNlSWRlbnRpZmllcklmUG9zc2libGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNsb25lUG9zaXRpb24oKSx0PXRoaXMub2Zmc2V0KCksbj1CeSh0aGlzLm1lc3NhZ2UsdCkscj10K24ubGVuZ3RoO3JldHVybiB0aGlzLmJ1bXBUbyhyKSx7dmFsdWU6bixsb2NhdGlvbjpBeShlLHRoaXMuY2xvbmVQb3NpdGlvbigpKX19LGUucHJvdG90eXBlLnBhcnNlQXJndW1lbnRPcHRpb25zPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGk9dGhpcy5jbG9uZVBvc2l0aW9uKCksYT10aGlzLnBhcnNlSWRlbnRpZmllcklmUG9zc2libGUoKS52YWx1ZSxsPXRoaXMuY2xvbmVQb3NpdGlvbigpO3N3aXRjaChhKXtjYXNlXCJcIjpyZXR1cm4gdGhpcy5lcnJvcihxYi5FWFBFQ1RfQVJHVU1FTlRfVFlQRSxBeShpLGwpKTtjYXNlXCJudW1iZXJcIjpjYXNlXCJkYXRlXCI6Y2FzZVwidGltZVwiOnRoaXMuYnVtcFNwYWNlKCk7dmFyIHM9bnVsbDtpZih0aGlzLmJ1bXBJZihcIixcIikpe3RoaXMuYnVtcFNwYWNlKCk7dmFyIGM9dGhpcy5jbG9uZVBvc2l0aW9uKCk7aWYoKGI9dGhpcy5wYXJzZVNpbXBsZUFyZ1N0eWxlSWZQb3NzaWJsZSgpKS5lcnIpcmV0dXJuIGI7aWYoMD09PShwPVZ5KGIudmFsKSkubGVuZ3RoKXJldHVybiB0aGlzLmVycm9yKHFiLkVYUEVDVF9BUkdVTUVOVF9TVFlMRSxBeSh0aGlzLmNsb25lUG9zaXRpb24oKSx0aGlzLmNsb25lUG9zaXRpb24oKSkpO3M9e3N0eWxlOnAsc3R5bGVMb2NhdGlvbjpBeShjLHRoaXMuY2xvbmVQb3NpdGlvbigpKX19aWYoKHk9dGhpcy50cnlQYXJzZUFyZ3VtZW50Q2xvc2UocikpLmVycilyZXR1cm4geTt2YXIgdT1BeShyLHRoaXMuY2xvbmVQb3NpdGlvbigpKTtpZihzJiZVeShudWxsPT1zP3ZvaWQgMDpzLnN0eWxlLFwiOjpcIiwwKSl7dmFyIGQ9SHkocy5zdHlsZS5zbGljZSgyKSk7aWYoXCJudW1iZXJcIj09PWEpcmV0dXJuKGI9dGhpcy5wYXJzZU51bWJlclNrZWxldG9uRnJvbVN0cmluZyhkLHMuc3R5bGVMb2NhdGlvbikpLmVycj9iOnt2YWw6e3R5cGU6UWIubnVtYmVyLHZhbHVlOm4sbG9jYXRpb246dSxzdHlsZTpiLnZhbH0sZXJyOm51bGx9O2lmKDA9PT1kLmxlbmd0aClyZXR1cm4gdGhpcy5lcnJvcihxYi5FWFBFQ1RfREFURV9USU1FX1NLRUxFVE9OLHUpO3ZhciBmPWQ7dGhpcy5sb2NhbGUmJihmPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVwiXCIscj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lLmNoYXJBdChyKTtpZihcImpcIj09PW8pe2Zvcih2YXIgaT0wO3IrMTxlLmxlbmd0aCYmZS5jaGFyQXQocisxKT09PW87KWkrKyxyKys7dmFyIGE9MSsoMSZpKSxsPWk8Mj8xOjMrKGk+PjEpLHM9X3kodCk7Zm9yKFwiSFwiIT1zJiZcImtcIiE9c3x8KGw9MCk7bC0tID4wOyluKz1cImFcIjtmb3IoO2EtLSA+MDspbj1zK259ZWxzZSBuKz1cIkpcIj09PW8/XCJIXCI6b31yZXR1cm4gbn0oZCx0aGlzLmxvY2FsZSkpO3ZhciBwPXt0eXBlOlhiLmRhdGVUaW1lLHBhdHRlcm46Zixsb2NhdGlvbjpzLnN0eWxlTG9jYXRpb24scGFyc2VkT3B0aW9uczp0aGlzLnNob3VsZFBhcnNlU2tlbGV0b25zP2R5KGYpOnt9fTtyZXR1cm57dmFsOnt0eXBlOlwiZGF0ZVwiPT09YT9RYi5kYXRlOlFiLnRpbWUsdmFsdWU6bixsb2NhdGlvbjp1LHN0eWxlOnB9LGVycjpudWxsfX1yZXR1cm57dmFsOnt0eXBlOlwibnVtYmVyXCI9PT1hP1FiLm51bWJlcjpcImRhdGVcIj09PWE/UWIuZGF0ZTpRYi50aW1lLHZhbHVlOm4sbG9jYXRpb246dSxzdHlsZTpudWxsIT09KG89bnVsbD09cz92b2lkIDA6cy5zdHlsZSkmJnZvaWQgMCE9PW8/bzpudWxsfSxlcnI6bnVsbH07Y2FzZVwicGx1cmFsXCI6Y2FzZVwic2VsZWN0b3JkaW5hbFwiOmNhc2VcInNlbGVjdFwiOnZhciBnPXRoaXMuY2xvbmVQb3NpdGlvbigpO2lmKHRoaXMuYnVtcFNwYWNlKCksIXRoaXMuYnVtcElmKFwiLFwiKSlyZXR1cm4gdGhpcy5lcnJvcihxYi5FWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX09QVElPTlMsQXkoZyxLYih7fSxnKSkpO3RoaXMuYnVtcFNwYWNlKCk7dmFyIG09dGhpcy5wYXJzZUlkZW50aWZpZXJJZlBvc3NpYmxlKCksaD0wO2lmKFwic2VsZWN0XCIhPT1hJiZcIm9mZnNldFwiPT09bS52YWx1ZSl7aWYoIXRoaXMuYnVtcElmKFwiOlwiKSlyZXR1cm4gdGhpcy5lcnJvcihxYi5FWFBFQ1RfUExVUkFMX0FSR1VNRU5UX09GRlNFVF9WQUxVRSxBeSh0aGlzLmNsb25lUG9zaXRpb24oKSx0aGlzLmNsb25lUG9zaXRpb24oKSkpO3ZhciBiO2lmKHRoaXMuYnVtcFNwYWNlKCksKGI9dGhpcy50cnlQYXJzZURlY2ltYWxJbnRlZ2VyKHFiLkVYUEVDVF9QTFVSQUxfQVJHVU1FTlRfT0ZGU0VUX1ZBTFVFLHFiLklOVkFMSURfUExVUkFMX0FSR1VNRU5UX09GRlNFVF9WQUxVRSkpLmVycilyZXR1cm4gYjt0aGlzLmJ1bXBTcGFjZSgpLG09dGhpcy5wYXJzZUlkZW50aWZpZXJJZlBvc3NpYmxlKCksaD1iLnZhbH12YXIgeSx2PXRoaXMudHJ5UGFyc2VQbHVyYWxPclNlbGVjdE9wdGlvbnMoZSxhLHQsbSk7aWYodi5lcnIpcmV0dXJuIHY7aWYoKHk9dGhpcy50cnlQYXJzZUFyZ3VtZW50Q2xvc2UocikpLmVycilyZXR1cm4geTt2YXIgdz1BeShyLHRoaXMuY2xvbmVQb3NpdGlvbigpKTtyZXR1cm5cInNlbGVjdFwiPT09YT97dmFsOnt0eXBlOlFiLnNlbGVjdCx2YWx1ZTpuLG9wdGlvbnM6TXkodi52YWwpLGxvY2F0aW9uOnd9LGVycjpudWxsfTp7dmFsOnt0eXBlOlFiLnBsdXJhbCx2YWx1ZTpuLG9wdGlvbnM6TXkodi52YWwpLG9mZnNldDpoLHBsdXJhbFR5cGU6XCJwbHVyYWxcIj09PWE/XCJjYXJkaW5hbFwiOlwib3JkaW5hbFwiLGxvY2F0aW9uOnd9LGVycjpudWxsfTtkZWZhdWx0OnJldHVybiB0aGlzLmVycm9yKHFiLklOVkFMSURfQVJHVU1FTlRfVFlQRSxBeShpLGwpKX19LGUucHJvdG90eXBlLnRyeVBhcnNlQXJndW1lbnRDbG9zZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pc0VPRigpfHwxMjUhPT10aGlzLmNoYXIoKT90aGlzLmVycm9yKHFiLkVYUEVDVF9BUkdVTUVOVF9DTE9TSU5HX0JSQUNFLEF5KGUsdGhpcy5jbG9uZVBvc2l0aW9uKCkpKToodGhpcy5idW1wKCkse3ZhbDohMCxlcnI6bnVsbH0pfSxlLnByb3RvdHlwZS5wYXJzZVNpbXBsZUFyZ1N0eWxlSWZQb3NzaWJsZT1mdW5jdGlvbigpe2Zvcih2YXIgZT0wLHQ9dGhpcy5jbG9uZVBvc2l0aW9uKCk7IXRoaXMuaXNFT0YoKTspe3N3aXRjaCh0aGlzLmNoYXIoKSl7Y2FzZSAzOTp0aGlzLmJ1bXAoKTt2YXIgbj10aGlzLmNsb25lUG9zaXRpb24oKTtpZighdGhpcy5idW1wVW50aWwoXCInXCIpKXJldHVybiB0aGlzLmVycm9yKHFiLlVOQ0xPU0VEX1FVT1RFX0lOX0FSR1VNRU5UX1NUWUxFLEF5KG4sdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTt0aGlzLmJ1bXAoKTticmVhaztjYXNlIDEyMzplKz0xLHRoaXMuYnVtcCgpO2JyZWFrO2Nhc2UgMTI1OmlmKCEoZT4wKSlyZXR1cm57dmFsOnRoaXMubWVzc2FnZS5zbGljZSh0Lm9mZnNldCx0aGlzLm9mZnNldCgpKSxlcnI6bnVsbH07ZS09MTticmVhaztkZWZhdWx0OnRoaXMuYnVtcCgpfX1yZXR1cm57dmFsOnRoaXMubWVzc2FnZS5zbGljZSh0Lm9mZnNldCx0aGlzLm9mZnNldCgpKSxlcnI6bnVsbH19LGUucHJvdG90eXBlLnBhcnNlTnVtYmVyU2tlbGV0b25Gcm9tU3RyaW5nPWZ1bmN0aW9uKGUsdCl7dmFyIG49W107dHJ5e249ZnVuY3Rpb24oZSl7aWYoMD09PWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcihcIk51bWJlciBza2VsZXRvbiBjYW5ub3QgYmUgZW1wdHlcIik7Zm9yKHZhciB0PVtdLG49MCxyPWUuc3BsaXQocHkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPjB9KSk7bjxyLmxlbmd0aDtuKyspe3ZhciBvPXJbbl0uc3BsaXQoXCIvXCIpO2lmKDA9PT1vLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBza2VsZXRvblwiKTtmb3IodmFyIGk9b1swXSxhPW8uc2xpY2UoMSksbD0wLHM9YTtsPHMubGVuZ3RoO2wrKylpZigwPT09c1tsXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgc2tlbGV0b25cIik7dC5wdXNoKHtzdGVtOmksb3B0aW9uczphfSl9cmV0dXJuIHR9KGUpfWNhdGNoKHIpe3JldHVybiB0aGlzLmVycm9yKHFiLklOVkFMSURfTlVNQkVSX1NLRUxFVE9OLHQpfXJldHVybnt2YWw6e3R5cGU6WGIubnVtYmVyLHRva2VuczpuLGxvY2F0aW9uOnQscGFyc2VkT3B0aW9uczp0aGlzLnNob3VsZFBhcnNlU2tlbGV0b25zP1B5KG4pOnt9fSxlcnI6bnVsbH19LGUucHJvdG90eXBlLnRyeVBhcnNlUGx1cmFsT3JTZWxlY3RPcHRpb25zPWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbyxpPSExLGE9W10sbD1uZXcgU2V0LHM9ci52YWx1ZSxjPXIubG9jYXRpb247Oyl7aWYoMD09PXMubGVuZ3RoKXt2YXIgdT10aGlzLmNsb25lUG9zaXRpb24oKTtpZihcInNlbGVjdFwiPT09dHx8IXRoaXMuYnVtcElmKFwiPVwiKSlicmVhazt2YXIgZD10aGlzLnRyeVBhcnNlRGVjaW1hbEludGVnZXIocWIuRVhQRUNUX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUixxYi5JTlZBTElEX1BMVVJBTF9BUkdVTUVOVF9TRUxFQ1RPUik7aWYoZC5lcnIpcmV0dXJuIGQ7Yz1BeSh1LHRoaXMuY2xvbmVQb3NpdGlvbigpKSxzPXRoaXMubWVzc2FnZS5zbGljZSh1Lm9mZnNldCx0aGlzLm9mZnNldCgpKX1pZihsLmhhcyhzKSlyZXR1cm4gdGhpcy5lcnJvcihcInNlbGVjdFwiPT09dD9xYi5EVVBMSUNBVEVfU0VMRUNUX0FSR1VNRU5UX1NFTEVDVE9SOnFiLkRVUExJQ0FURV9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1IsYyk7XCJvdGhlclwiPT09cyYmKGk9ITApLHRoaXMuYnVtcFNwYWNlKCk7dmFyIGY9dGhpcy5jbG9uZVBvc2l0aW9uKCk7aWYoIXRoaXMuYnVtcElmKFwie1wiKSlyZXR1cm4gdGhpcy5lcnJvcihcInNlbGVjdFwiPT09dD9xYi5FWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX1NFTEVDVE9SX0ZSQUdNRU5UOnFiLkVYUEVDVF9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1JfRlJBR01FTlQsQXkodGhpcy5jbG9uZVBvc2l0aW9uKCksdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTt2YXIgcD10aGlzLnBhcnNlTWVzc2FnZShlKzEsdCxuKTtpZihwLmVycilyZXR1cm4gcDt2YXIgZz10aGlzLnRyeVBhcnNlQXJndW1lbnRDbG9zZShmKTtpZihnLmVycilyZXR1cm4gZzthLnB1c2goW3Mse3ZhbHVlOnAudmFsLGxvY2F0aW9uOkF5KGYsdGhpcy5jbG9uZVBvc2l0aW9uKCkpfV0pLGwuYWRkKHMpLHRoaXMuYnVtcFNwYWNlKCkscz0obz10aGlzLnBhcnNlSWRlbnRpZmllcklmUG9zc2libGUoKSkudmFsdWUsYz1vLmxvY2F0aW9ufXJldHVybiAwPT09YS5sZW5ndGg/dGhpcy5lcnJvcihcInNlbGVjdFwiPT09dD9xYi5FWFBFQ1RfU0VMRUNUX0FSR1VNRU5UX1NFTEVDVE9SOnFiLkVYUEVDVF9QTFVSQUxfQVJHVU1FTlRfU0VMRUNUT1IsQXkodGhpcy5jbG9uZVBvc2l0aW9uKCksdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTp0aGlzLnJlcXVpcmVzT3RoZXJDbGF1c2UmJiFpP3RoaXMuZXJyb3IocWIuTUlTU0lOR19PVEhFUl9DTEFVU0UsQXkodGhpcy5jbG9uZVBvc2l0aW9uKCksdGhpcy5jbG9uZVBvc2l0aW9uKCkpKTp7dmFsOmEsZXJyOm51bGx9fSxlLnByb3RvdHlwZS50cnlQYXJzZURlY2ltYWxJbnRlZ2VyPWZ1bmN0aW9uKGUsdCl7dmFyIG49MSxyPXRoaXMuY2xvbmVQb3NpdGlvbigpO3RoaXMuYnVtcElmKFwiK1wiKXx8dGhpcy5idW1wSWYoXCItXCIpJiYobj0tMSk7Zm9yKHZhciBvPSExLGk9MDshdGhpcy5pc0VPRigpOyl7dmFyIGE9dGhpcy5jaGFyKCk7aWYoIShhPj00OCYmYTw9NTcpKWJyZWFrO289ITAsaT0xMCppKyhhLTQ4KSx0aGlzLmJ1bXAoKX12YXIgbD1BeShyLHRoaXMuY2xvbmVQb3NpdGlvbigpKTtyZXR1cm4gbz9OeShpKj1uKT97dmFsOmksZXJyOm51bGx9OnRoaXMuZXJyb3IodCxsKTp0aGlzLmVycm9yKGUsbCl9LGUucHJvdG90eXBlLm9mZnNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uLm9mZnNldH0sZS5wcm90b3R5cGUuaXNFT0Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vZmZzZXQoKT09PXRoaXMubWVzc2FnZS5sZW5ndGh9LGUucHJvdG90eXBlLmNsb25lUG9zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm57b2Zmc2V0OnRoaXMucG9zaXRpb24ub2Zmc2V0LGxpbmU6dGhpcy5wb3NpdGlvbi5saW5lLGNvbHVtbjp0aGlzLnBvc2l0aW9uLmNvbHVtbn19LGUucHJvdG90eXBlLmNoYXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBvc2l0aW9uLm9mZnNldDtpZihlPj10aGlzLm1lc3NhZ2UubGVuZ3RoKXRocm93IEVycm9yKFwib3V0IG9mIGJvdW5kXCIpO3ZhciB0PXp5KHRoaXMubWVzc2FnZSxlKTtpZih2b2lkIDA9PT10KXRocm93IEVycm9yKFwiT2Zmc2V0IFwiLmNvbmNhdChlLFwiIGlzIGF0IGludmFsaWQgVVRGLTE2IGNvZGUgdW5pdCBib3VuZGFyeVwiKSk7cmV0dXJuIHR9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUsdCl7cmV0dXJue3ZhbDpudWxsLGVycjp7a2luZDplLG1lc3NhZ2U6dGhpcy5tZXNzYWdlLGxvY2F0aW9uOnR9fX0sZS5wcm90b3R5cGUuYnVtcD1mdW5jdGlvbigpe2lmKCF0aGlzLmlzRU9GKCkpe3ZhciBlPXRoaXMuY2hhcigpOzEwPT09ZT8odGhpcy5wb3NpdGlvbi5saW5lKz0xLHRoaXMucG9zaXRpb24uY29sdW1uPTEsdGhpcy5wb3NpdGlvbi5vZmZzZXQrPTEpOih0aGlzLnBvc2l0aW9uLmNvbHVtbis9MSx0aGlzLnBvc2l0aW9uLm9mZnNldCs9ZTw2NTUzNj8xOjIpfX0sZS5wcm90b3R5cGUuYnVtcElmPWZ1bmN0aW9uKGUpe2lmKFV5KHRoaXMubWVzc2FnZSxlLHRoaXMub2Zmc2V0KCkpKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKyl0aGlzLmJ1bXAoKTtyZXR1cm4hMH1yZXR1cm4hMX0sZS5wcm90b3R5cGUuYnVtcFVudGlsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub2Zmc2V0KCksbj10aGlzLm1lc3NhZ2UuaW5kZXhPZihlLHQpO3JldHVybiBuPj0wPyh0aGlzLmJ1bXBUbyhuKSwhMCk6KHRoaXMuYnVtcFRvKHRoaXMubWVzc2FnZS5sZW5ndGgpLCExKX0sZS5wcm90b3R5cGUuYnVtcFRvPWZ1bmN0aW9uKGUpe2lmKHRoaXMub2Zmc2V0KCk+ZSl0aHJvdyBFcnJvcihcInRhcmdldE9mZnNldCBcIi5jb25jYXQoZSxcIiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgY3VycmVudCBvZmZzZXQgXCIpLmNvbmNhdCh0aGlzLm9mZnNldCgpKSk7Zm9yKGU9TWF0aC5taW4oZSx0aGlzLm1lc3NhZ2UubGVuZ3RoKTs7KXt2YXIgdD10aGlzLm9mZnNldCgpO2lmKHQ9PT1lKWJyZWFrO2lmKHQ+ZSl0aHJvdyBFcnJvcihcInRhcmdldE9mZnNldCBcIi5jb25jYXQoZSxcIiBpcyBhdCBpbnZhbGlkIFVURi0xNiBjb2RlIHVuaXQgYm91bmRhcnlcIikpO2lmKHRoaXMuYnVtcCgpLHRoaXMuaXNFT0YoKSlicmVha319LGUucHJvdG90eXBlLmJ1bXBTcGFjZT1mdW5jdGlvbigpe2Zvcig7IXRoaXMuaXNFT0YoKSYmcXkodGhpcy5jaGFyKCkpOyl0aGlzLmJ1bXAoKX0sZS5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe2lmKHRoaXMuaXNFT0YoKSlyZXR1cm4gbnVsbDt2YXIgZT10aGlzLmNoYXIoKSx0PXRoaXMub2Zmc2V0KCksbj10aGlzLm1lc3NhZ2UuY2hhckNvZGVBdCh0KyhlPj02NTUzNj8yOjEpKTtyZXR1cm4gbnVsbCE9bj9uOm51bGx9LGV9KCk7ZnVuY3Rpb24gS3koZSl7cmV0dXJuIGU+PTk3JiZlPD0xMjJ8fGU+PTY1JiZlPD05MH1mdW5jdGlvbiBxeShlKXtyZXR1cm4gZT49OSYmZTw9MTN8fDMyPT09ZXx8MTMzPT09ZXx8ZT49ODIwNiYmZTw9ODIwN3x8ODIzMj09PWV8fDgyMzM9PT1lfWZ1bmN0aW9uIFF5KGUpe3JldHVybiBlPj0zMyYmZTw9MzV8fDM2PT09ZXx8ZT49MzcmJmU8PTM5fHw0MD09PWV8fDQxPT09ZXx8NDI9PT1lfHw0Mz09PWV8fDQ0PT09ZXx8NDU9PT1lfHxlPj00NiYmZTw9NDd8fGU+PTU4JiZlPD01OXx8ZT49NjAmJmU8PTYyfHxlPj02MyYmZTw9NjR8fDkxPT09ZXx8OTI9PT1lfHw5Mz09PWV8fDk0PT09ZXx8OTY9PT1lfHwxMjM9PT1lfHwxMjQ9PT1lfHwxMjU9PT1lfHwxMjY9PT1lfHwxNjE9PT1lfHxlPj0xNjImJmU8PTE2NXx8MTY2PT09ZXx8MTY3PT09ZXx8MTY5PT09ZXx8MTcxPT09ZXx8MTcyPT09ZXx8MTc0PT09ZXx8MTc2PT09ZXx8MTc3PT09ZXx8MTgyPT09ZXx8MTg3PT09ZXx8MTkxPT09ZXx8MjE1PT09ZXx8MjQ3PT09ZXx8ZT49ODIwOCYmZTw9ODIxM3x8ZT49ODIxNCYmZTw9ODIxNXx8ODIxNj09PWV8fDgyMTc9PT1lfHw4MjE4PT09ZXx8ZT49ODIxOSYmZTw9ODIyMHx8ODIyMT09PWV8fDgyMjI9PT1lfHw4MjIzPT09ZXx8ZT49ODIyNCYmZTw9ODIzMXx8ZT49ODI0MCYmZTw9ODI0OHx8ODI0OT09PWV8fDgyNTA9PT1lfHxlPj04MjUxJiZlPD04MjU0fHxlPj04MjU3JiZlPD04MjU5fHw4MjYwPT09ZXx8ODI2MT09PWV8fDgyNjI9PT1lfHxlPj04MjYzJiZlPD04MjczfHw4Mjc0PT09ZXx8ODI3NT09PWV8fGU+PTgyNzcmJmU8PTgyODZ8fGU+PTg1OTImJmU8PTg1OTZ8fGU+PTg1OTcmJmU8PTg2MDF8fGU+PTg2MDImJmU8PTg2MDN8fGU+PTg2MDQmJmU8PTg2MDd8fDg2MDg9PT1lfHxlPj04NjA5JiZlPD04NjEwfHw4NjExPT09ZXx8ZT49ODYxMiYmZTw9ODYxM3x8ODYxND09PWV8fGU+PTg2MTUmJmU8PTg2MjF8fDg2MjI9PT1lfHxlPj04NjIzJiZlPD04NjUzfHxlPj04NjU0JiZlPD04NjU1fHxlPj04NjU2JiZlPD04NjU3fHw4NjU4PT09ZXx8ODY1OT09PWV8fDg2NjA9PT1lfHxlPj04NjYxJiZlPD04NjkxfHxlPj04NjkyJiZlPD04OTU5fHxlPj04OTYwJiZlPD04OTY3fHw4OTY4PT09ZXx8ODk2OT09PWV8fDg5NzA9PT1lfHw4OTcxPT09ZXx8ZT49ODk3MiYmZTw9ODk5MXx8ZT49ODk5MiYmZTw9ODk5M3x8ZT49ODk5NCYmZTw9OWUzfHw5MDAxPT09ZXx8OTAwMj09PWV8fGU+PTkwMDMmJmU8PTkwODN8fDkwODQ9PT1lfHxlPj05MDg1JiZlPD05MTE0fHxlPj05MTE1JiZlPD05MTM5fHxlPj05MTQwJiZlPD05MTc5fHxlPj05MTgwJiZlPD05MTg1fHxlPj05MTg2JiZlPD05MjU0fHxlPj05MjU1JiZlPD05Mjc5fHxlPj05MjgwJiZlPD05MjkwfHxlPj05MjkxJiZlPD05MzExfHxlPj05NDcyJiZlPD05NjU0fHw5NjU1PT09ZXx8ZT49OTY1NiYmZTw9OTY2NHx8OTY2NT09PWV8fGU+PTk2NjYmJmU8PTk3MTl8fGU+PTk3MjAmJmU8PTk3Mjd8fGU+PTk3MjgmJmU8PTk4Mzh8fDk4Mzk9PT1lfHxlPj05ODQwJiZlPD0xMDA4N3x8MTAwODg9PT1lfHwxMDA4OT09PWV8fDEwMDkwPT09ZXx8MTAwOTE9PT1lfHwxMDA5Mj09PWV8fDEwMDkzPT09ZXx8MTAwOTQ9PT1lfHwxMDA5NT09PWV8fDEwMDk2PT09ZXx8MTAwOTc9PT1lfHwxMDA5OD09PWV8fDEwMDk5PT09ZXx8MTAxMDA9PT1lfHwxMDEwMT09PWV8fGU+PTEwMTMyJiZlPD0xMDE3NXx8ZT49MTAxNzYmJmU8PTEwMTgwfHwxMDE4MT09PWV8fDEwMTgyPT09ZXx8ZT49MTAxODMmJmU8PTEwMjEzfHwxMDIxND09PWV8fDEwMjE1PT09ZXx8MTAyMTY9PT1lfHwxMDIxNz09PWV8fDEwMjE4PT09ZXx8MTAyMTk9PT1lfHwxMDIyMD09PWV8fDEwMjIxPT09ZXx8MTAyMjI9PT1lfHwxMDIyMz09PWV8fGU+PTEwMjI0JiZlPD0xMDIzOXx8ZT49MTAyNDAmJmU8PTEwNDk1fHxlPj0xMDQ5NiYmZTw9MTA2MjZ8fDEwNjI3PT09ZXx8MTA2Mjg9PT1lfHwxMDYyOT09PWV8fDEwNjMwPT09ZXx8MTA2MzE9PT1lfHwxMDYzMj09PWV8fDEwNjMzPT09ZXx8MTA2MzQ9PT1lfHwxMDYzNT09PWV8fDEwNjM2PT09ZXx8MTA2Mzc9PT1lfHwxMDYzOD09PWV8fDEwNjM5PT09ZXx8MTA2NDA9PT1lfHwxMDY0MT09PWV8fDEwNjQyPT09ZXx8MTA2NDM9PT1lfHwxMDY0ND09PWV8fDEwNjQ1PT09ZXx8MTA2NDY9PT1lfHwxMDY0Nz09PWV8fDEwNjQ4PT09ZXx8ZT49MTA2NDkmJmU8PTEwNzExfHwxMDcxMj09PWV8fDEwNzEzPT09ZXx8MTA3MTQ9PT1lfHwxMDcxNT09PWV8fGU+PTEwNzE2JiZlPD0xMDc0N3x8MTA3NDg9PT1lfHwxMDc0OT09PWV8fGU+PTEwNzUwJiZlPD0xMTAwN3x8ZT49MTEwMDgmJmU8PTExMDU1fHxlPj0xMTA1NiYmZTw9MTEwNzZ8fGU+PTExMDc3JiZlPD0xMTA3OHx8ZT49MTEwNzkmJmU8PTExMDg0fHxlPj0xMTA4NSYmZTw9MTExMjN8fGU+PTExMTI0JiZlPD0xMTEyNXx8ZT49MTExMjYmJmU8PTExMTU3fHwxMTE1OD09PWV8fGU+PTExMTU5JiZlPD0xMTI2M3x8ZT49MTE3NzYmJmU8PTExNzc3fHwxMTc3OD09PWV8fDExNzc5PT09ZXx8MTE3ODA9PT1lfHwxMTc4MT09PWV8fGU+PTExNzgyJiZlPD0xMTc4NHx8MTE3ODU9PT1lfHwxMTc4Nj09PWV8fDExNzg3PT09ZXx8MTE3ODg9PT1lfHwxMTc4OT09PWV8fGU+PTExNzkwJiZlPD0xMTc5OHx8MTE3OTk9PT1lfHxlPj0xMTgwMCYmZTw9MTE4MDF8fDExODAyPT09ZXx8MTE4MDM9PT1lfHwxMTgwND09PWV8fDExODA1PT09ZXx8ZT49MTE4MDYmJmU8PTExODA3fHwxMTgwOD09PWV8fDExODA5PT09ZXx8MTE4MTA9PT1lfHwxMTgxMT09PWV8fDExODEyPT09ZXx8MTE4MTM9PT1lfHwxMTgxND09PWV8fDExODE1PT09ZXx8MTE4MTY9PT1lfHwxMTgxNz09PWV8fGU+PTExODE4JiZlPD0xMTgyMnx8MTE4MjM9PT1lfHxlPj0xMTgyNCYmZTw9MTE4MzN8fGU+PTExODM0JiZlPD0xMTgzNXx8ZT49MTE4MzYmJmU8PTExODM5fHwxMTg0MD09PWV8fDExODQxPT09ZXx8MTE4NDI9PT1lfHxlPj0xMTg0MyYmZTw9MTE4NTV8fGU+PTExODU2JiZlPD0xMTg1N3x8MTE4NTg9PT1lfHxlPj0xMTg1OSYmZTw9MTE5MDN8fGU+PTEyMjg5JiZlPD0xMjI5MXx8MTIyOTY9PT1lfHwxMjI5Nz09PWV8fDEyMjk4PT09ZXx8MTIyOTk9PT1lfHwxMjMwMD09PWV8fDEyMzAxPT09ZXx8MTIzMDI9PT1lfHwxMjMwMz09PWV8fDEyMzA0PT09ZXx8MTIzMDU9PT1lfHxlPj0xMjMwNiYmZTw9MTIzMDd8fDEyMzA4PT09ZXx8MTIzMDk9PT1lfHwxMjMxMD09PWV8fDEyMzExPT09ZXx8MTIzMTI9PT1lfHwxMjMxMz09PWV8fDEyMzE0PT09ZXx8MTIzMTU9PT1lfHwxMjMxNj09PWV8fDEyMzE3PT09ZXx8ZT49MTIzMTgmJmU8PTEyMzE5fHwxMjMyMD09PWV8fDEyMzM2PT09ZXx8NjQ4MzA9PT1lfHw2NDgzMT09PWV8fGU+PTY1MDkzJiZlPD02NTA5NH1mdW5jdGlvbiBYeShlKXtlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lmKGRlbGV0ZSBlLmxvY2F0aW9uLHJ5KGUpfHxveShlKSlmb3IodmFyIHQgaW4gZS5vcHRpb25zKWRlbGV0ZSBlLm9wdGlvbnNbdF0ubG9jYXRpb24sWHkoZS5vcHRpb25zW3RdLnZhbHVlKTtlbHNlIGV5KGUpJiZseShlLnN0eWxlKXx8KHR5KGUpfHxueShlKSkmJnN5KGUuc3R5bGUpP2RlbGV0ZSBlLnN0eWxlLmxvY2F0aW9uOmF5KGUpJiZYeShlLmNoaWxkcmVuKX0pKX1mdW5jdGlvbiBZeShlLHQpe3ZvaWQgMD09PXQmJih0PXt9KSx0PUtiKHtzaG91bGRQYXJzZVNrZWxldG9uczohMCxyZXF1aXJlc090aGVyQ2xhdXNlOiEwfSx0KTt2YXIgbj1uZXcgJHkoZSx0KS5wYXJzZSgpO2lmKG4uZXJyKXt2YXIgcj1TeW50YXhFcnJvcihxYltuLmVyci5raW5kXSk7dGhyb3cgci5sb2NhdGlvbj1uLmVyci5sb2NhdGlvbixyLm9yaWdpbmFsTWVzc2FnZT1uLmVyci5tZXNzYWdlLHJ9cmV0dXJuKG51bGw9PXQ/dm9pZCAwOnQuY2FwdHVyZUxvY2F0aW9uKXx8WHkobi52YWwpLG4udmFsfWZ1bmN0aW9uIFp5KGUsdCl7dmFyIG49dCYmdC5jYWNoZT90LmNhY2hlOmF2LHI9dCYmdC5zZXJpYWxpemVyP3Quc2VyaWFsaXplcjpydjtyZXR1cm4odCYmdC5zdHJhdGVneT90LnN0cmF0ZWd5Om52KShlLHtjYWNoZTpuLHNlcmlhbGl6ZXI6cn0pfWZ1bmN0aW9uIEp5KGUsdCxuLHIpe3ZhciBvPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxcIm51bWJlclwiPT10eXBlb2YgZXx8XCJib29sZWFuXCI9PXR5cGVvZiBlfShyKT9yOm4ociksaT10LmdldChvKTtyZXR1cm4gdm9pZCAwPT09aSYmKGk9ZS5jYWxsKHRoaXMsciksdC5zZXQobyxpKSksaX1mdW5jdGlvbiBldihlLHQsbil7dmFyIHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpLG89bihyKSxpPXQuZ2V0KG8pO3JldHVybiB2b2lkIDA9PT1pJiYoaT1lLmFwcGx5KHRoaXMsciksdC5zZXQobyxpKSksaX1mdW5jdGlvbiB0dihlLHQsbixyLG8pe3JldHVybiBuLmJpbmQodCxlLHIsbyl9ZnVuY3Rpb24gbnYoZSx0KXtyZXR1cm4gdHYoZSx0aGlzLDE9PT1lLmxlbmd0aD9KeTpldix0LmNhY2hlLmNyZWF0ZSgpLHQuc2VyaWFsaXplcil9dmFyIHJ2PWZ1bmN0aW9uKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3VtZW50cyl9O2Z1bmN0aW9uIG92KCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpfW92LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FjaGVbZV19LG92LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSx0KXt0aGlzLmNhY2hlW2VdPXR9O3ZhciBpdixhdj17Y3JlYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBvdn19LGx2PXt2YXJpYWRpYzpmdW5jdGlvbihlLHQpe3JldHVybiB0dihlLHRoaXMsZXYsdC5jYWNoZS5jcmVhdGUoKSx0LnNlcmlhbGl6ZXIpfSxtb25hZGljOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR2KGUsdGhpcyxKeSx0LmNhY2hlLmNyZWF0ZSgpLHQuc2VyaWFsaXplcil9fTshZnVuY3Rpb24oZSl7ZS5NSVNTSU5HX1ZBTFVFPVwiTUlTU0lOR19WQUxVRVwiLGUuSU5WQUxJRF9WQUxVRT1cIklOVkFMSURfVkFMVUVcIixlLk1JU1NJTkdfSU5UTF9BUEk9XCJNSVNTSU5HX0lOVExfQVBJXCJ9KGl2fHwoaXY9e30pKTt2YXIgc3YsY3Y9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4scil7dmFyIG89ZS5jYWxsKHRoaXMsdCl8fHRoaXM7cmV0dXJuIG8uY29kZT1uLG8ub3JpZ2luYWxNZXNzYWdlPXIsb31yZXR1cm4gV2IodCxlKSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiW2Zvcm1hdGpzIEVycm9yOiBcIi5jb25jYXQodGhpcy5jb2RlLFwiXSBcIikuY29uY2F0KHRoaXMubWVzc2FnZSl9LHR9KEVycm9yKSx1dj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbixyLG8pe3JldHVybiBlLmNhbGwodGhpcywnSW52YWxpZCB2YWx1ZXMgZm9yIFwiJy5jb25jYXQodCwnXCI6IFwiJykuY29uY2F0KG4sJ1wiLiBPcHRpb25zIGFyZSBcIicpLmNvbmNhdChPYmplY3Qua2V5cyhyKS5qb2luKCdcIiwgXCInKSwnXCInKSxpdi5JTlZBTElEX1ZBTFVFLG8pfHx0aGlzfXJldHVybiBXYih0LGUpLHR9KGN2KSxkdj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbixyKXtyZXR1cm4gZS5jYWxsKHRoaXMsJ1ZhbHVlIGZvciBcIicuY29uY2F0KHQsJ1wiIG11c3QgYmUgb2YgdHlwZSAnKS5jb25jYXQobiksaXYuSU5WQUxJRF9WQUxVRSxyKXx8dGhpc31yZXR1cm4gV2IodCxlKSx0fShjdiksZnY9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcywnVGhlIGludGwgc3RyaW5nIGNvbnRleHQgdmFyaWFibGUgXCInLmNvbmNhdCh0LCdcIiB3YXMgbm90IHByb3ZpZGVkIHRvIHRoZSBzdHJpbmcgXCInKS5jb25jYXQobiwnXCInKSxpdi5NSVNTSU5HX1ZBTFVFLG4pfHx0aGlzfXJldHVybiBXYih0LGUpLHR9KGN2KTtmdW5jdGlvbiBwdihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlfWZ1bmN0aW9uIGd2KGUsdCxuLHIsbyxpLGEpe2lmKDE9PT1lLmxlbmd0aCYmWmIoZVswXSkpcmV0dXJuW3t0eXBlOnN2LmxpdGVyYWwsdmFsdWU6ZVswXS52YWx1ZX1dO2Zvcih2YXIgbD1bXSxzPTAsYz1lO3M8Yy5sZW5ndGg7cysrKXt2YXIgdT1jW3NdO2lmKFpiKHUpKWwucHVzaCh7dHlwZTpzdi5saXRlcmFsLHZhbHVlOnUudmFsdWV9KTtlbHNlIGlmKGl5KHUpKVwibnVtYmVyXCI9PXR5cGVvZiBpJiZsLnB1c2goe3R5cGU6c3YubGl0ZXJhbCx2YWx1ZTpuLmdldE51bWJlckZvcm1hdCh0KS5mb3JtYXQoaSl9KTtlbHNle3ZhciBkPXUudmFsdWU7aWYoIW98fCEoZCBpbiBvKSl0aHJvdyBuZXcgZnYoZCxhKTt2YXIgZj1vW2RdO2lmKEpiKHUpKWYmJlwic3RyaW5nXCIhPXR5cGVvZiBmJiZcIm51bWJlclwiIT10eXBlb2YgZnx8KGY9XCJzdHJpbmdcIj09dHlwZW9mIGZ8fFwibnVtYmVyXCI9PXR5cGVvZiBmP1N0cmluZyhmKTpcIlwiKSxsLnB1c2goe3R5cGU6XCJzdHJpbmdcIj09dHlwZW9mIGY/c3YubGl0ZXJhbDpzdi5vYmplY3QsdmFsdWU6Zn0pO2Vsc2UgaWYodHkodSkpe3ZhciBwPVwic3RyaW5nXCI9PXR5cGVvZiB1LnN0eWxlP3IuZGF0ZVt1LnN0eWxlXTpzeSh1LnN0eWxlKT91LnN0eWxlLnBhcnNlZE9wdGlvbnM6dm9pZCAwO2wucHVzaCh7dHlwZTpzdi5saXRlcmFsLHZhbHVlOm4uZ2V0RGF0ZVRpbWVGb3JtYXQodCxwKS5mb3JtYXQoZil9KX1lbHNlIGlmKG55KHUpKXtwPVwic3RyaW5nXCI9PXR5cGVvZiB1LnN0eWxlP3IudGltZVt1LnN0eWxlXTpzeSh1LnN0eWxlKT91LnN0eWxlLnBhcnNlZE9wdGlvbnM6ci50aW1lLm1lZGl1bTtsLnB1c2goe3R5cGU6c3YubGl0ZXJhbCx2YWx1ZTpuLmdldERhdGVUaW1lRm9ybWF0KHQscCkuZm9ybWF0KGYpfSl9ZWxzZSBpZihleSh1KSl7KHA9XCJzdHJpbmdcIj09dHlwZW9mIHUuc3R5bGU/ci5udW1iZXJbdS5zdHlsZV06bHkodS5zdHlsZSk/dS5zdHlsZS5wYXJzZWRPcHRpb25zOnZvaWQgMCkmJnAuc2NhbGUmJihmKj1wLnNjYWxlfHwxKSxsLnB1c2goe3R5cGU6c3YubGl0ZXJhbCx2YWx1ZTpuLmdldE51bWJlckZvcm1hdCh0LHApLmZvcm1hdChmKX0pfWVsc2V7aWYoYXkodSkpe3ZhciBnPXUuY2hpbGRyZW4sbT11LnZhbHVlLGg9b1ttXTtpZighcHYoaCkpdGhyb3cgbmV3IGR2KG0sXCJmdW5jdGlvblwiLGEpO3ZhciBiPWgoZ3YoZyx0LG4scixvLGkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWV9KSkpO0FycmF5LmlzQXJyYXkoYil8fChiPVtiXSksbC5wdXNoLmFwcGx5KGwsYi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybnt0eXBlOlwic3RyaW5nXCI9PXR5cGVvZiBlP3N2LmxpdGVyYWw6c3Yub2JqZWN0LHZhbHVlOmV9fSkpKX1pZihyeSh1KSl7aWYoISh5PXUub3B0aW9uc1tmXXx8dS5vcHRpb25zLm90aGVyKSl0aHJvdyBuZXcgdXYodS52YWx1ZSxmLE9iamVjdC5rZXlzKHUub3B0aW9ucyksYSk7bC5wdXNoLmFwcGx5KGwsZ3YoeS52YWx1ZSx0LG4scixvKSl9ZWxzZSBpZihveSh1KSl7dmFyIHk7aWYoISh5PXUub3B0aW9uc1tcIj1cIi5jb25jYXQoZildKSl7aWYoIUludGwuUGx1cmFsUnVsZXMpdGhyb3cgbmV3IGN2KCdJbnRsLlBsdXJhbFJ1bGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXCJAZm9ybWF0anMvaW50bC1wbHVyYWxydWxlc1wiXFxuJyxpdi5NSVNTSU5HX0lOVExfQVBJLGEpO3ZhciB2PW4uZ2V0UGx1cmFsUnVsZXModCx7dHlwZTp1LnBsdXJhbFR5cGV9KS5zZWxlY3QoZi0odS5vZmZzZXR8fDApKTt5PXUub3B0aW9uc1t2XXx8dS5vcHRpb25zLm90aGVyfWlmKCF5KXRocm93IG5ldyB1dih1LnZhbHVlLGYsT2JqZWN0LmtleXModS5vcHRpb25zKSxhKTtsLnB1c2guYXBwbHkobCxndih5LnZhbHVlLHQsbixyLG8sZi0odS5vZmZzZXR8fDApKSl9ZWxzZTt9fX1yZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RoPDI/ZTplLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj1lW2UubGVuZ3RoLTFdO3JldHVybiBuJiZuLnR5cGU9PT1zdi5saXRlcmFsJiZ0LnR5cGU9PT1zdi5saXRlcmFsP24udmFsdWUrPXQudmFsdWU6ZS5wdXNoKHQpLGV9KSxbXSl9KGwpfWZ1bmN0aW9uIG12KGUsdCl7cmV0dXJuIHQ/T2JqZWN0LmtleXMoZSkucmVkdWNlKChmdW5jdGlvbihuLHIpe3ZhciBvLGk7cmV0dXJuIG5bcl09KG89ZVtyXSwoaT10W3JdKT9HYihHYihHYih7fSxvfHx7fSksaXx8e30pLE9iamVjdC5rZXlzKG8pLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1HYihHYih7fSxvW3RdKSxpW3RdfHx7fSksZX0pLHt9KSk6byksbn0pLEdiKHt9LGUpKTplfWZ1bmN0aW9uIGh2KGUpe3JldHVybntjcmVhdGU6ZnVuY3Rpb24oKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSxzZXQ6ZnVuY3Rpb24odCxuKXtlW3RdPW59fX19fSFmdW5jdGlvbihlKXtlW2UubGl0ZXJhbD0wXT1cImxpdGVyYWxcIixlW2Uub2JqZWN0PTFdPVwib2JqZWN0XCJ9KHN2fHwoc3Y9e30pKTt2YXIgYnYseXY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsbixyLG8pe3ZvaWQgMD09PW4mJihuPWUuZGVmYXVsdExvY2FsZSk7dmFyIGk9dGhpcztpZih0aGlzLmZvcm1hdHRlckNhY2hlPXtudW1iZXI6e30sZGF0ZVRpbWU6e30scGx1cmFsUnVsZXM6e319LHRoaXMuZm9ybWF0PWZ1bmN0aW9uKGUpe3ZhciB0PWkuZm9ybWF0VG9QYXJ0cyhlKTtpZigxPT09dC5sZW5ndGgpcmV0dXJuIHRbMF0udmFsdWU7dmFyIG49dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGVuZ3RoJiZ0LnR5cGU9PT1zdi5saXRlcmFsJiZcInN0cmluZ1wiPT10eXBlb2YgZVtlLmxlbmd0aC0xXT9lW2UubGVuZ3RoLTFdKz10LnZhbHVlOmUucHVzaCh0LnZhbHVlKSxlfSksW10pO3JldHVybiBuLmxlbmd0aDw9MT9uWzBdfHxcIlwiOm59LHRoaXMuZm9ybWF0VG9QYXJ0cz1mdW5jdGlvbihlKXtyZXR1cm4gZ3YoaS5hc3QsaS5sb2NhbGVzLGkuZm9ybWF0dGVycyxpLmZvcm1hdHMsZSx2b2lkIDAsaS5tZXNzYWdlKX0sdGhpcy5yZXNvbHZlZE9wdGlvbnM9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm57bG9jYWxlOihudWxsPT09KGU9aS5yZXNvbHZlZExvY2FsZSl8fHZvaWQgMD09PWU/dm9pZCAwOmUudG9TdHJpbmcoKSl8fEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihpLmxvY2FsZXMpWzBdfX0sdGhpcy5nZXRBc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gaS5hc3R9LHRoaXMubG9jYWxlcz1uLHRoaXMucmVzb2x2ZWRMb2NhbGU9ZS5yZXNvbHZlTG9jYWxlKG4pLFwic3RyaW5nXCI9PXR5cGVvZiB0KXtpZih0aGlzLm1lc3NhZ2U9dCwhZS5fX3BhcnNlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnRsTWVzc2FnZUZvcm1hdC5fX3BhcnNlIG11c3QgYmUgc2V0IHRvIHByb2Nlc3MgYG1lc3NhZ2VgIG9mIHR5cGUgYHN0cmluZ2BcIik7dGhpcy5hc3Q9ZS5fX3BhcnNlKHQse2lnbm9yZVRhZzpudWxsPT1vP3ZvaWQgMDpvLmlnbm9yZVRhZyxsb2NhbGU6dGhpcy5yZXNvbHZlZExvY2FsZX0pfWVsc2UgdGhpcy5hc3Q9dDtpZighQXJyYXkuaXNBcnJheSh0aGlzLmFzdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkEgbWVzc2FnZSBtdXN0IGJlIHByb3ZpZGVkIGFzIGEgU3RyaW5nIG9yIEFTVC5cIik7dGhpcy5mb3JtYXRzPW12KGUuZm9ybWF0cyxyKSx0aGlzLmZvcm1hdHRlcnM9byYmby5mb3JtYXR0ZXJzfHxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e251bWJlcjp7fSxkYXRlVGltZTp7fSxwbHVyYWxSdWxlczp7fX0pLHtnZXROdW1iZXJGb3JtYXQ6WnkoKGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIG5ldygoZT1JbnRsLk51bWJlckZvcm1hdCkuYmluZC5hcHBseShlLCRiKFt2b2lkIDBdLHQsITEpKSl9KSx7Y2FjaGU6aHYoZS5udW1iZXIpLHN0cmF0ZWd5Omx2LnZhcmlhZGljfSksZ2V0RGF0ZVRpbWVGb3JtYXQ6WnkoKGZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQ9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIG5ldygoZT1JbnRsLkRhdGVUaW1lRm9ybWF0KS5iaW5kLmFwcGx5KGUsJGIoW3ZvaWQgMF0sdCwhMSkpKX0pLHtjYWNoZTpodihlLmRhdGVUaW1lKSxzdHJhdGVneTpsdi52YXJpYWRpY30pLGdldFBsdXJhbFJ1bGVzOlp5KChmdW5jdGlvbigpe2Zvcih2YXIgZSx0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBuZXcoKGU9SW50bC5QbHVyYWxSdWxlcykuYmluZC5hcHBseShlLCRiKFt2b2lkIDBdLHQsITEpKSl9KSx7Y2FjaGU6aHYoZS5wbHVyYWxSdWxlcyksc3RyYXRlZ3k6bHYudmFyaWFkaWN9KX19KHRoaXMuZm9ybWF0dGVyQ2FjaGUpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRMb2NhbGVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUubWVtb2l6ZWREZWZhdWx0TG9jYWxlfHwoZS5tZW1vaXplZERlZmF1bHRMb2NhbGU9KG5ldyBJbnRsLk51bWJlckZvcm1hdCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlKSxlLm1lbW9pemVkRGVmYXVsdExvY2FsZX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlLm1lbW9pemVkRGVmYXVsdExvY2FsZT1udWxsLGUucmVzb2x2ZUxvY2FsZT1mdW5jdGlvbihlKXtpZih2b2lkIDAhPT1JbnRsLkxvY2FsZSl7dmFyIHQ9SW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKGUpO3JldHVybiB0Lmxlbmd0aD4wP25ldyBJbnRsLkxvY2FsZSh0WzBdKTpuZXcgSW50bC5Mb2NhbGUoXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTplWzBdKX19LGUuX19wYXJzZT1ZeSxlLmZvcm1hdHM9e251bWJlcjp7aW50ZWdlcjp7bWF4aW11bUZyYWN0aW9uRGlnaXRzOjB9LGN1cnJlbmN5OntzdHlsZTpcImN1cnJlbmN5XCJ9LHBlcmNlbnQ6e3N0eWxlOlwicGVyY2VudFwifX0sZGF0ZTp7c2hvcnQ6e21vbnRoOlwibnVtZXJpY1wiLGRheTpcIm51bWVyaWNcIix5ZWFyOlwiMi1kaWdpdFwifSxtZWRpdW06e21vbnRoOlwic2hvcnRcIixkYXk6XCJudW1lcmljXCIseWVhcjpcIm51bWVyaWNcIn0sbG9uZzp7bW9udGg6XCJsb25nXCIsZGF5OlwibnVtZXJpY1wiLHllYXI6XCJudW1lcmljXCJ9LGZ1bGw6e3dlZWtkYXk6XCJsb25nXCIsbW9udGg6XCJsb25nXCIsZGF5OlwibnVtZXJpY1wiLHllYXI6XCJudW1lcmljXCJ9fSx0aW1lOntzaG9ydDp7aG91cjpcIm51bWVyaWNcIixtaW51dGU6XCJudW1lcmljXCJ9LG1lZGl1bTp7aG91cjpcIm51bWVyaWNcIixtaW51dGU6XCJudW1lcmljXCIsc2Vjb25kOlwibnVtZXJpY1wifSxsb25nOntob3VyOlwibnVtZXJpY1wiLG1pbnV0ZTpcIm51bWVyaWNcIixzZWNvbmQ6XCJudW1lcmljXCIsdGltZVpvbmVOYW1lOlwic2hvcnRcIn0sZnVsbDp7aG91cjpcIm51bWVyaWNcIixtaW51dGU6XCJudW1lcmljXCIsc2Vjb25kOlwibnVtZXJpY1wiLHRpbWVab25lTmFtZTpcInNob3J0XCJ9fX0sZX0oKTshZnVuY3Rpb24oZSl7ZS5GT1JNQVRfRVJST1I9XCJGT1JNQVRfRVJST1JcIixlLlVOU1VQUE9SVEVEX0ZPUk1BVFRFUj1cIlVOU1VQUE9SVEVEX0ZPUk1BVFRFUlwiLGUuSU5WQUxJRF9DT05GSUc9XCJJTlZBTElEX0NPTkZJR1wiLGUuTUlTU0lOR19EQVRBPVwiTUlTU0lOR19EQVRBXCIsZS5NSVNTSU5HX1RSQU5TTEFUSU9OPVwiTUlTU0lOR19UUkFOU0xBVElPTlwifShidnx8KGJ2PXt9KSk7dmFyIHZ2PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobixyLG8pe3ZhciBpPXRoaXMsYT1vP28gaW5zdGFuY2VvZiBFcnJvcj9vOm5ldyBFcnJvcihTdHJpbmcobykpOnZvaWQgMDtyZXR1cm4oaT1lLmNhbGwodGhpcyxcIltAZm9ybWF0anMvaW50bCBFcnJvciBcIi5jb25jYXQobixcIl0gXCIpLmNvbmNhdChyLFwiXFxuXCIpLmNvbmNhdChhP1wiXFxuXCIuY29uY2F0KGEubWVzc2FnZSxcIlxcblwiKS5jb25jYXQoYS5zdGFjayk6XCJcIikpfHx0aGlzKS5jb2RlPW4sXCJmdW5jdGlvblwiPT10eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKGksdCksaX1yZXR1cm4gTWIodCxlKSx0fShFcnJvciksd3Y9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyxidi5VTlNVUFBPUlRFRF9GT1JNQVRURVIsdCxuKXx8dGhpc31yZXR1cm4gTWIodCxlKSx0fSh2diksU3Y9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3JldHVybiBlLmNhbGwodGhpcyxidi5JTlZBTElEX0NPTkZJRyx0LG4pfHx0aGlzfXJldHVybiBNYih0LGUpLHR9KHZ2KSxQdj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbil7cmV0dXJuIGUuY2FsbCh0aGlzLGJ2Lk1JU1NJTkdfREFUQSx0LG4pfHx0aGlzfXJldHVybiBNYih0LGUpLHR9KHZ2KSx4dj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQsbixyKXtyZXR1cm4gZS5jYWxsKHRoaXMsYnYuRk9STUFUX0VSUk9SLFwiXCIuY29uY2F0KHQsXCJcXG5Mb2NhbGU6IFwiKS5jb25jYXQobixcIlxcblwiKSxyKXx8dGhpc31yZXR1cm4gTWIodCxlKSx0fSh2diksT3Y9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4scixvKXt2YXIgaT1lLmNhbGwodGhpcyxcIlwiLmNvbmNhdCh0LFwiXFxuTWVzc2FnZUlEOiBcIikuY29uY2F0KG51bGw9PXI/dm9pZCAwOnIuaWQsXCJcXG5EZWZhdWx0IE1lc3NhZ2U6IFwiKS5jb25jYXQobnVsbD09cj92b2lkIDA6ci5kZWZhdWx0TWVzc2FnZSxcIlxcbkRlc2NyaXB0aW9uOiBcIikuY29uY2F0KG51bGw9PXI/dm9pZCAwOnIuZGVzY3JpcHRpb24sXCJcXG5cIiksbixvKXx8dGhpcztyZXR1cm4gaS5kZXNjcmlwdG9yPXIsaX1yZXR1cm4gTWIodCxlKSx0fSh4diksX3Y9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LG4pe3ZhciByPWUuY2FsbCh0aGlzLGJ2Lk1JU1NJTkdfVFJBTlNMQVRJT04sJ01pc3NpbmcgbWVzc2FnZTogXCInLmNvbmNhdCh0LmlkLCdcIiBmb3IgbG9jYWxlIFwiJykuY29uY2F0KG4sJ1wiLCB1c2luZyAnKS5jb25jYXQodC5kZWZhdWx0TWVzc2FnZT9cImRlZmF1bHQgbWVzc2FnZSAoXCIuY29uY2F0KFwic3RyaW5nXCI9PXR5cGVvZiB0LmRlZmF1bHRNZXNzYWdlP3QuZGVmYXVsdE1lc3NhZ2U6dC5kZWZhdWx0TWVzc2FnZS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBudWxsIT09KHQ9ZS52YWx1ZSkmJnZvaWQgMCE9PXQ/dDpKU09OLnN0cmluZ2lmeShlKX0pKS5qb2luKCksXCIpXCIpOlwiaWRcIixcIiBhcyBmYWxsYmFjay5cIikpfHx0aGlzO3JldHVybiByLmRlc2NyaXB0b3I9dCxyfXJldHVybiBNYih0LGUpLHR9KHZ2KTtmdW5jdGlvbiBDdihlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSx0LnJlZHVjZSgoZnVuY3Rpb24odCxyKXtyZXR1cm4gciBpbiBlP3Rbcl09ZVtyXTpyIGluIG4mJih0W3JdPW5bcl0pLHR9KSx7fSl9dmFyIGt2PXtmb3JtYXRzOnt9LG1lc3NhZ2VzOnt9LHRpbWVab25lOnZvaWQgMCxkZWZhdWx0TG9jYWxlOlwiZW5cIixkZWZhdWx0Rm9ybWF0czp7fSxmYWxsYmFja09uRW1wdHlTdHJpbmc6ITAsb25FcnJvcjpmdW5jdGlvbihlKXswfSxvbldhcm46ZnVuY3Rpb24oZSl7MH19O2Z1bmN0aW9uIEF2KGUpe3JldHVybntjcmVhdGU6ZnVuY3Rpb24oKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfSxzZXQ6ZnVuY3Rpb24odCxuKXtlW3RdPW59fX19fWZ1bmN0aW9uIFR2KGUsdCxuLHIpe3ZhciBvLGk9ZSYmZVt0XTtpZihpJiYobz1pW25dKSxvKXJldHVybiBvO3IobmV3IHd2KFwiTm8gXCIuY29uY2F0KHQsXCIgZm9ybWF0IG5hbWVkOiBcIikuY29uY2F0KG4pKSl9ZnVuY3Rpb24gRXYoZSl7VWIoZSxcIltSZWFjdCBJbnRsXSBDb3VsZCBub3QgZmluZCByZXF1aXJlZCBgaW50bGAgb2JqZWN0LiA8SW50bFByb3ZpZGVyPiBuZWVkcyB0byBleGlzdCBpbiB0aGUgY29tcG9uZW50IGFuY2VzdHJ5LlwiKX12YXIganY9SWIoSWIoe30sa3YpLHt0ZXh0Q29tcG9uZW50Om8uRnJhZ21lbnR9KTtmdW5jdGlvbiBJdihlLHQpe2lmKGU9PT10KXJldHVybiEwO2lmKCFlfHwhdClyZXR1cm4hMTt2YXIgbj1PYmplY3Qua2V5cyhlKSxyPU9iamVjdC5rZXlzKHQpLG89bi5sZW5ndGg7aWYoci5sZW5ndGghPT1vKXJldHVybiExO2Zvcih2YXIgaT0wO2k8bztpKyspe3ZhciBhPW5baV07aWYoZVthXSE9PXRbYV18fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxhKSlyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBMdihlLHQpe3JldHVybiBPYmplY3Qua2V5cyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKG4scil7cmV0dXJuIG5bcl09emIoe3RpbWVab25lOnR9LGVbcl0pLG59KSx7fSl9ZnVuY3Rpb24gRHYoZSx0KXtyZXR1cm4gT2JqZWN0LmtleXMoemIoemIoe30sZSksdCkpLnJlZHVjZSgoZnVuY3Rpb24obixyKXtyZXR1cm4gbltyXT16Yih6Yih7fSxlW3JdfHx7fSksdFtyXXx8e30pLG59KSx7fSl9ZnVuY3Rpb24gTnYoZSx0KXtpZighdClyZXR1cm4gZTt2YXIgbj15di5mb3JtYXRzO3JldHVybiB6Yih6Yih6Yih7fSxuKSxlKSx7ZGF0ZTpEdihMdihuLmRhdGUsdCksTHYoZS5kYXRlfHx7fSx0KSksdGltZTpEdihMdihuLnRpbWUsdCksTHYoZS50aW1lfHx7fSx0KSl9KX12YXIgUnY9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1lLmxvY2FsZSxhPWUuZm9ybWF0cyxsPWUubWVzc2FnZXMscz1lLmRlZmF1bHRMb2NhbGUsYz1lLmRlZmF1bHRGb3JtYXRzLHU9ZS5mYWxsYmFja09uRW1wdHlTdHJpbmcsZD1lLm9uRXJyb3IsZj1lLnRpbWVab25lLHA9ZS5kZWZhdWx0UmljaFRleHRFbGVtZW50czt2b2lkIDA9PT1uJiYobj17aWQ6XCJcIn0pO3ZhciBnPW4uaWQsbT1uLmRlZmF1bHRNZXNzYWdlO1ViKCEhZyxcIltAZm9ybWF0anMvaW50bF0gQW4gYGlkYCBtdXN0IGJlIHByb3ZpZGVkIHRvIGZvcm1hdCBhIG1lc3NhZ2UuIFlvdSBjYW4gZWl0aGVyOlxcbjEuIENvbmZpZ3VyZSB5b3VyIGJ1aWxkIHRvb2xjaGFpbiB3aXRoIFtiYWJlbC1wbHVnaW4tZm9ybWF0anNdKGh0dHBzOi8vZm9ybWF0anMuaW8vZG9jcy90b29saW5nL2JhYmVsLXBsdWdpbilcXG5vciBbQGZvcm1hdGpzL3RzLXRyYW5zZm9ybWVyXShodHRwczovL2Zvcm1hdGpzLmlvL2RvY3MvdG9vbGluZy90cy10cmFuc2Zvcm1lcikgT1JcXG4yLiBDb25maWd1cmUgeW91ciBgZXNsaW50YCBjb25maWcgdG8gaW5jbHVkZSBbZXNsaW50LXBsdWdpbi1mb3JtYXRqc10oaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL3Rvb2xpbmcvbGludGVyI2VuZm9yY2UtaWQpXFxudG8gYXV0b2ZpeCB0aGlzIGlzc3VlXCIpO3ZhciBoPVN0cmluZyhnKSxiPWwmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsLGgpJiZsW2hdO2lmKEFycmF5LmlzQXJyYXkoYikmJjE9PT1iLmxlbmd0aCYmYlswXS50eXBlPT09UWIubGl0ZXJhbClyZXR1cm4gYlswXS52YWx1ZTtpZighciYmYiYmXCJzdHJpbmdcIj09dHlwZW9mIGImJiFwKXJldHVybiBiLnJlcGxhY2UoLydcXHsoLio/KVxcfScvZ2ksXCJ7JDF9XCIpO2lmKHI9emIoemIoe30scCkscnx8e30pLGE9TnYoYSxmKSxjPU52KGMsZiksIWIpe2lmKCExPT09dSYmXCJcIj09PWIpcmV0dXJuIGI7aWYoKCFtfHxpJiZpLnRvTG93ZXJDYXNlKCkhPT1zLnRvTG93ZXJDYXNlKCkpJiZkKG5ldyBfdihuLGkpKSxtKXRyeXtyZXR1cm4gdC5nZXRNZXNzYWdlRm9ybWF0KG0scyxjLG8pLmZvcm1hdChyKX1jYXRjaCh5KXtyZXR1cm4gZChuZXcgT3YoJ0Vycm9yIGZvcm1hdHRpbmcgZGVmYXVsdCBtZXNzYWdlIGZvcjogXCInLmNvbmNhdChoLCdcIiwgcmVuZGVyaW5nIGRlZmF1bHQgbWVzc2FnZSB2ZXJiYXRpbScpLGksbix5KSksXCJzdHJpbmdcIj09dHlwZW9mIG0/bTpofXJldHVybiBofXRyeXtyZXR1cm4gdC5nZXRNZXNzYWdlRm9ybWF0KGIsaSxhLHpiKHtmb3JtYXR0ZXJzOnR9LG98fHt9KSkuZm9ybWF0KHIpfWNhdGNoKHkpe2QobmV3IE92KCdFcnJvciBmb3JtYXR0aW5nIG1lc3NhZ2U6IFwiJy5jb25jYXQoaCwnXCIsIHVzaW5nICcpLmNvbmNhdChtP1wiZGVmYXVsdCBtZXNzYWdlXCI6XCJpZFwiLFwiIGFzIGZhbGxiYWNrLlwiKSxpLG4seSkpfWlmKG0pdHJ5e3JldHVybiB0LmdldE1lc3NhZ2VGb3JtYXQobSxzLGMsbykuZm9ybWF0KHIpfWNhdGNoKHkpe2QobmV3IE92KCdFcnJvciBmb3JtYXR0aW5nIHRoZSBkZWZhdWx0IG1lc3NhZ2UgZm9yOiBcIicuY29uY2F0KGgsJ1wiLCByZW5kZXJpbmcgbWVzc2FnZSB2ZXJiYXRpbScpLGksbix5KSl9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGI/YjpcInN0cmluZ1wiPT10eXBlb2YgbT9tOmh9LEJ2PVtcInN0eWxlXCIsXCJjdXJyZW5jeVwiLFwiY3VycmVuY3lEaXNwbGF5XCIsXCJ1bml0XCIsXCJ1bml0RGlzcGxheVwiLFwidXNlR3JvdXBpbmdcIixcIm1pbmltdW1JbnRlZ2VyRGlnaXRzXCIsXCJtaW5pbXVtRnJhY3Rpb25EaWdpdHNcIixcIm1heGltdW1GcmFjdGlvbkRpZ2l0c1wiLFwibWluaW11bVNpZ25pZmljYW50RGlnaXRzXCIsXCJtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHNcIixcImNvbXBhY3REaXNwbGF5XCIsXCJjdXJyZW5jeURpc3BsYXlcIixcImN1cnJlbmN5U2lnblwiLFwibm90YXRpb25cIixcInNpZ25EaXNwbGF5XCIsXCJ1bml0XCIsXCJ1bml0RGlzcGxheVwiLFwibnVtYmVyaW5nU3lzdGVtXCJdO2Z1bmN0aW9uIFV2KGUsdCxuKXt2YXIgcj1lLmxvY2FsZSxvPWUuZm9ybWF0cyxpPWUub25FcnJvcjt2b2lkIDA9PT1uJiYobj17fSk7dmFyIGE9bi5mb3JtYXQsbD1hJiZUdihvLFwibnVtYmVyXCIsYSxpKXx8e307cmV0dXJuIHQocixDdihuLEJ2LGwpKX1mdW5jdGlvbiBGdihlLHQsbixyKXt2b2lkIDA9PT1yJiYocj17fSk7dHJ5e3JldHVybiBVdihlLHQscikuZm9ybWF0KG4pfWNhdGNoKG8pe2Uub25FcnJvcihuZXcgdnYoYnYuRk9STUFUX0VSUk9SLFwiRXJyb3IgZm9ybWF0dGluZyBudW1iZXIuXCIsbykpfXJldHVybiBTdHJpbmcobil9ZnVuY3Rpb24gTXYoZSx0LG4scil7dm9pZCAwPT09ciYmKHI9e30pO3RyeXtyZXR1cm4gVXYoZSx0LHIpLmZvcm1hdFRvUGFydHMobil9Y2F0Y2gobyl7ZS5vbkVycm9yKG5ldyB2dihidi5GT1JNQVRfRVJST1IsXCJFcnJvciBmb3JtYXR0aW5nIG51bWJlci5cIixvKSl9cmV0dXJuW119dmFyIHp2PVtcIm51bWVyaWNcIixcInN0eWxlXCJdO2Z1bmN0aW9uIEh2KGUsdCxuLHIsbyl7dm9pZCAwPT09byYmKG89e30pLHJ8fChyPVwic2Vjb25kXCIpLEludGwuUmVsYXRpdmVUaW1lRm9ybWF0fHxlLm9uRXJyb3IobmV3IGN2KCdJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuXFxuVHJ5IHBvbHlmaWxsaW5nIGl0IHVzaW5nIFwiQGZvcm1hdGpzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0XCJcXG4nLGl2Lk1JU1NJTkdfSU5UTF9BUEkpKTt0cnl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lLmxvY2FsZSxvPWUuZm9ybWF0cyxpPWUub25FcnJvcjt2b2lkIDA9PT1uJiYobj17fSk7dmFyIGE9bi5mb3JtYXQsbD0hIWEmJlR2KG8sXCJyZWxhdGl2ZVwiLGEsaSl8fHt9O3JldHVybiB0KHIsQ3Yobix6dixsKSl9KGUsdCxvKS5mb3JtYXQobixyKX1jYXRjaChpKXtlLm9uRXJyb3IobmV3IHh2KFwiRXJyb3IgZm9ybWF0dGluZyByZWxhdGl2ZSB0aW1lLlwiLGUubG9jYWxlLGkpKX1yZXR1cm4gU3RyaW5nKG4pfXZhciBWdj1bXCJmb3JtYXRNYXRjaGVyXCIsXCJ0aW1lWm9uZVwiLFwiaG91cjEyXCIsXCJ3ZWVrZGF5XCIsXCJlcmFcIixcInllYXJcIixcIm1vbnRoXCIsXCJkYXlcIixcImhvdXJcIixcIm1pbnV0ZVwiLFwic2Vjb25kXCIsXCJ0aW1lWm9uZU5hbWVcIixcImhvdXJDeWNsZVwiLFwiZGF0ZVN0eWxlXCIsXCJ0aW1lU3R5bGVcIixcImNhbGVuZGFyXCIsXCJudW1iZXJpbmdTeXN0ZW1cIixcImZyYWN0aW9uYWxTZWNvbmREaWdpdHNcIl07ZnVuY3Rpb24gV3YoZSx0LG4scil7dmFyIG89ZS5sb2NhbGUsaT1lLmZvcm1hdHMsYT1lLm9uRXJyb3IsbD1lLnRpbWVab25lO3ZvaWQgMD09PXImJihyPXt9KTt2YXIgcz1yLmZvcm1hdCxjPXpiKHpiKHt9LGwmJnt0aW1lWm9uZTpsfSkscyYmVHYoaSx0LHMsYSkpLHU9Q3YocixWdixjKTtyZXR1cm5cInRpbWVcIiE9PXR8fHUuaG91cnx8dS5taW51dGV8fHUuc2Vjb25kfHx1LnRpbWVTdHlsZXx8dS5kYXRlU3R5bGV8fCh1PXpiKHpiKHt9LHUpLHtob3VyOlwibnVtZXJpY1wiLG1pbnV0ZTpcIm51bWVyaWNcIn0pKSxuKG8sdSl9ZnVuY3Rpb24gR3YoZSx0KXtmb3IodmFyIG49W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz1uWzBdLGk9blsxXSxhPXZvaWQgMD09PWk/e306aSxsPVwic3RyaW5nXCI9PXR5cGVvZiBvP25ldyBEYXRlKG98fDApOm87dHJ5e3JldHVybiBXdihlLFwiZGF0ZVwiLHQsYSkuZm9ybWF0KGwpfWNhdGNoKHMpe2Uub25FcnJvcihuZXcgdnYoYnYuRk9STUFUX0VSUk9SLFwiRXJyb3IgZm9ybWF0dGluZyBkYXRlLlwiLHMpKX1yZXR1cm4gU3RyaW5nKGwpfWZ1bmN0aW9uICR2KGUsdCl7Zm9yKHZhciBuPVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKW5bci0yXT1hcmd1bWVudHNbcl07dmFyIG89blswXSxpPW5bMV0sYT12b2lkIDA9PT1pP3t9OmksbD1cInN0cmluZ1wiPT10eXBlb2Ygbz9uZXcgRGF0ZShvfHwwKTpvO3RyeXtyZXR1cm4gV3YoZSxcInRpbWVcIix0LGEpLmZvcm1hdChsKX1jYXRjaChzKXtlLm9uRXJyb3IobmV3IHZ2KGJ2LkZPUk1BVF9FUlJPUixcIkVycm9yIGZvcm1hdHRpbmcgdGltZS5cIixzKSl9cmV0dXJuIFN0cmluZyhsKX1mdW5jdGlvbiBLdihlLHQpe2Zvcih2YXIgbj1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyluW3ItMl09YXJndW1lbnRzW3JdO3ZhciBvPW5bMF0saT1uWzFdLGE9blsyXSxsPXZvaWQgMD09PWE/e306YSxzPWUudGltZVpvbmUsYz1lLmxvY2FsZSx1PWUub25FcnJvcixkPUN2KGwsVnYscz97dGltZVpvbmU6c306e30pO3RyeXtyZXR1cm4gdChjLGQpLmZvcm1hdFJhbmdlKG8saSl9Y2F0Y2goZil7dShuZXcgdnYoYnYuRk9STUFUX0VSUk9SLFwiRXJyb3IgZm9ybWF0dGluZyBkYXRlIHRpbWUgcmFuZ2UuXCIsZikpfXJldHVybiBTdHJpbmcobyl9ZnVuY3Rpb24gcXYoZSx0KXtmb3IodmFyIG49W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz1uWzBdLGk9blsxXSxhPXZvaWQgMD09PWk/e306aSxsPVwic3RyaW5nXCI9PXR5cGVvZiBvP25ldyBEYXRlKG98fDApOm87dHJ5e3JldHVybiBXdihlLFwiZGF0ZVwiLHQsYSkuZm9ybWF0VG9QYXJ0cyhsKX1jYXRjaChzKXtlLm9uRXJyb3IobmV3IHZ2KGJ2LkZPUk1BVF9FUlJPUixcIkVycm9yIGZvcm1hdHRpbmcgZGF0ZS5cIixzKSl9cmV0dXJuW119ZnVuY3Rpb24gUXYoZSx0KXtmb3IodmFyIG49W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspbltyLTJdPWFyZ3VtZW50c1tyXTt2YXIgbz1uWzBdLGk9blsxXSxhPXZvaWQgMD09PWk/e306aSxsPVwic3RyaW5nXCI9PXR5cGVvZiBvP25ldyBEYXRlKG98fDApOm87dHJ5e3JldHVybiBXdihlLFwidGltZVwiLHQsYSkuZm9ybWF0VG9QYXJ0cyhsKX1jYXRjaChzKXtlLm9uRXJyb3IobmV3IHZ2KGJ2LkZPUk1BVF9FUlJPUixcIkVycm9yIGZvcm1hdHRpbmcgdGltZS5cIixzKSl9cmV0dXJuW119dmFyIFh2PVtcInR5cGVcIl07ZnVuY3Rpb24gWXYoZSx0LG4scil7dmFyIG89ZS5sb2NhbGUsaT1lLm9uRXJyb3I7dm9pZCAwPT09ciYmKHI9e30pLEludGwuUGx1cmFsUnVsZXN8fGkobmV3IGN2KCdJbnRsLlBsdXJhbFJ1bGVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXCJAZm9ybWF0anMvaW50bC1wbHVyYWxydWxlc1wiXFxuJyxpdi5NSVNTSU5HX0lOVExfQVBJKSk7dmFyIGE9Q3YocixYdik7dHJ5e3JldHVybiB0KG8sYSkuc2VsZWN0KG4pfWNhdGNoKGwpe2kobmV3IHh2KFwiRXJyb3IgZm9ybWF0dGluZyBwbHVyYWwuXCIsbyxsKSl9cmV0dXJuXCJvdGhlclwifWZ1bmN0aW9uIFp2KGUpe3JldHVybiBadj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxadihlKX12YXIgSnY9W1widHlwZVwiLFwic3R5bGVcIl0sZXc9RGF0ZS5ub3coKTtmdW5jdGlvbiB0dyhlLHQsbixyKXt2b2lkIDA9PT1yJiYocj17fSk7dmFyIG89bncoZSx0LG4scikucmVkdWNlKChmdW5jdGlvbihlLHQpe3ZhciBuPXQudmFsdWU7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIG4/ZS5wdXNoKG4pOlwic3RyaW5nXCI9PXR5cGVvZiBlW2UubGVuZ3RoLTFdP2VbZS5sZW5ndGgtMV0rPW46ZS5wdXNoKG4pLGV9KSxbXSk7cmV0dXJuIDE9PT1vLmxlbmd0aD9vWzBdOjA9PT1vLmxlbmd0aD9cIlwiOm99ZnVuY3Rpb24gbncoZSx0LG4scil7dmFyIG89ZS5sb2NhbGUsaT1lLm9uRXJyb3I7dm9pZCAwPT09ciYmKHI9e30pLEludGwuTGlzdEZvcm1hdHx8aShuZXcgY3YoJ0ludGwuTGlzdEZvcm1hdCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuXFxuVHJ5IHBvbHlmaWxsaW5nIGl0IHVzaW5nIFwiQGZvcm1hdGpzL2ludGwtbGlzdGZvcm1hdFwiXFxuJyxpdi5NSVNTSU5HX0lOVExfQVBJKSk7dmFyIGE9Q3YocixKdik7dHJ5e3ZhciBsPXt9LHM9bi5tYXAoKGZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIj09PVp2KGUpKXt2YXIgbj1mdW5jdGlvbihlKXtyZXR1cm5cIlwiLmNvbmNhdChldyxcIl9cIikuY29uY2F0KGUsXCJfXCIpLmNvbmNhdChldyl9KHQpO3JldHVybiBsW25dPWUsbn1yZXR1cm4gU3RyaW5nKGUpfSkpO3JldHVybiB0KG8sYSkuZm9ybWF0VG9QYXJ0cyhzKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVyblwibGl0ZXJhbFwiPT09ZS50eXBlP2U6emIoemIoe30sZSkse3ZhbHVlOmxbZS52YWx1ZV18fGUudmFsdWV9KX0pKX1jYXRjaChjKXtpKG5ldyB2dihidi5GT1JNQVRfRVJST1IsXCJFcnJvciBmb3JtYXR0aW5nIGxpc3QuXCIsYykpfXJldHVybiBufXZhciBydz1bXCJzdHlsZVwiLFwidHlwZVwiLFwiZmFsbGJhY2tcIixcImxhbmd1YWdlRGlzcGxheVwiXTtmdW5jdGlvbiBvdyhlLHQsbixyKXt2YXIgbz1lLmxvY2FsZSxpPWUub25FcnJvcjtJbnRsLkRpc3BsYXlOYW1lc3x8aShuZXcgY3YoJ0ludGwuRGlzcGxheU5hbWVzIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC5cXG5UcnkgcG9seWZpbGxpbmcgaXQgdXNpbmcgXCJAZm9ybWF0anMvaW50bC1kaXNwbGF5bmFtZXNcIlxcbicsaXYuTUlTU0lOR19JTlRMX0FQSSkpO3ZhciBhPUN2KHIscncpO3RyeXtyZXR1cm4gdChvLGEpLm9mKG4pfWNhdGNoKGwpe2kobmV3IHZ2KGJ2LkZPUk1BVF9FUlJPUixcIkVycm9yIGZvcm1hdHRpbmcgZGlzcGxheSBuYW1lLlwiLGwpKX19ZnVuY3Rpb24gaXcoZSl7dmFyIHQ7ZS5vbldhcm4mJmUuZGVmYXVsdFJpY2hUZXh0RWxlbWVudHMmJlwic3RyaW5nXCI9PXR5cGVvZigodD1lLm1lc3NhZ2VzfHx7fSk/dFtPYmplY3Qua2V5cyh0KVswXV06dm9pZCAwKSYmZS5vbldhcm4oJ1tAZm9ybWF0anMvaW50bF0gXCJkZWZhdWx0UmljaFRleHRFbGVtZW50c1wiIHdhcyBzcGVjaWZpZWQgYnV0IFwibWVzc2FnZVwiIHdhcyBub3QgcHJlLWNvbXBpbGVkLiBcXG5QbGVhc2UgY29uc2lkZXIgdXNpbmcgXCJAZm9ybWF0anMvY2xpXCIgdG8gcHJlLWNvbXBpbGUgeW91ciBtZXNzYWdlcyBmb3IgcGVyZm9ybWFuY2UuXFxuRm9yIG1vcmUgZGV0YWlscyBzZWUgaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL2dldHRpbmctc3RhcnRlZC9tZXNzYWdlLWRpc3RyaWJ1dGlvbicpfWZ1bmN0aW9uIGF3KGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e2RhdGVUaW1lOnt9LG51bWJlcjp7fSxtZXNzYWdlOnt9LHJlbGF0aXZlVGltZTp7fSxwbHVyYWxSdWxlczp7fSxsaXN0Ont9LGRpc3BsYXlOYW1lczp7fX0pO3ZhciB0PUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LG49SW50bC5MaXN0Rm9ybWF0LHI9SW50bC5EaXNwbGF5TmFtZXMsbz1aeSgoZnVuY3Rpb24oKXtmb3IodmFyIGUsdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbmV3KChlPUludGwuRGF0ZVRpbWVGb3JtYXQpLmJpbmQuYXBwbHkoZSxIYihbdm9pZCAwXSx0LCExKSkpfSkse2NhY2hlOkF2KGUuZGF0ZVRpbWUpLHN0cmF0ZWd5Omx2LnZhcmlhZGljfSksaT1aeSgoZnVuY3Rpb24oKXtmb3IodmFyIGUsdD1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gbmV3KChlPUludGwuTnVtYmVyRm9ybWF0KS5iaW5kLmFwcGx5KGUsSGIoW3ZvaWQgMF0sdCwhMSkpKX0pLHtjYWNoZTpBdihlLm51bWJlciksc3RyYXRlZ3k6bHYudmFyaWFkaWN9KSxhPVp5KChmdW5jdGlvbigpe2Zvcih2YXIgZSx0PVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBuZXcoKGU9SW50bC5QbHVyYWxSdWxlcykuYmluZC5hcHBseShlLEhiKFt2b2lkIDBdLHQsITEpKSl9KSx7Y2FjaGU6QXYoZS5wbHVyYWxSdWxlcyksc3RyYXRlZ3k6bHYudmFyaWFkaWN9KTtyZXR1cm57Z2V0RGF0ZVRpbWVGb3JtYXQ6byxnZXROdW1iZXJGb3JtYXQ6aSxnZXRNZXNzYWdlRm9ybWF0Olp5KChmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3IHl2KGUsdCxuLHpiKHtmb3JtYXR0ZXJzOntnZXROdW1iZXJGb3JtYXQ6aSxnZXREYXRlVGltZUZvcm1hdDpvLGdldFBsdXJhbFJ1bGVzOmF9fSxyfHx7fSkpfSkse2NhY2hlOkF2KGUubWVzc2FnZSksc3RyYXRlZ3k6bHYudmFyaWFkaWN9KSxnZXRSZWxhdGl2ZVRpbWVGb3JtYXQ6WnkoKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbl09YXJndW1lbnRzW25dO3JldHVybiBuZXcodC5iaW5kLmFwcGx5KHQsSGIoW3ZvaWQgMF0sZSwhMSkpKX0pLHtjYWNoZTpBdihlLnJlbGF0aXZlVGltZSksc3RyYXRlZ3k6bHYudmFyaWFkaWN9KSxnZXRQbHVyYWxSdWxlczphLGdldExpc3RGb3JtYXQ6WnkoKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKWVbdF09YXJndW1lbnRzW3RdO3JldHVybiBuZXcobi5iaW5kLmFwcGx5KG4sSGIoW3ZvaWQgMF0sZSwhMSkpKX0pLHtjYWNoZTpBdihlLmxpc3QpLHN0cmF0ZWd5Omx2LnZhcmlhZGljfSksZ2V0RGlzcGxheU5hbWVzOlp5KChmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyllW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gbmV3KHIuYmluZC5hcHBseShyLEhiKFt2b2lkIDBdLGUsITEpKSl9KSx7Y2FjaGU6QXYoZS5kaXNwbGF5TmFtZXMpLHN0cmF0ZWd5Omx2LnZhcmlhZGljfSl9fSh0KSxyPXpiKHpiKHt9LGt2KSxlKSxvPXIubG9jYWxlLGk9ci5kZWZhdWx0TG9jYWxlLGE9ci5vbkVycm9yO3JldHVybiBvPyFJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YobykubGVuZ3RoJiZhP2EobmV3IFB2KCdNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciBsb2NhbGU6IFwiJy5jb25jYXQobywnXCIgaW4gSW50bC5OdW1iZXJGb3JtYXQuIFVzaW5nIGRlZmF1bHQgbG9jYWxlOiBcIicpLmNvbmNhdChpLCdcIiBhcyBmYWxsYmFjay4gU2VlIGh0dHBzOi8vZm9ybWF0anMuaW8vZG9jcy9yZWFjdC1pbnRsI3J1bnRpbWUtcmVxdWlyZW1lbnRzIGZvciBtb3JlIGRldGFpbHMnKSkpOiFJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihvKS5sZW5ndGgmJmEmJmEobmV3IFB2KCdNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciBsb2NhbGU6IFwiJy5jb25jYXQobywnXCIgaW4gSW50bC5EYXRlVGltZUZvcm1hdC4gVXNpbmcgZGVmYXVsdCBsb2NhbGU6IFwiJykuY29uY2F0KGksJ1wiIGFzIGZhbGxiYWNrLiBTZWUgaHR0cHM6Ly9mb3JtYXRqcy5pby9kb2NzL3JlYWN0LWludGwjcnVudGltZS1yZXF1aXJlbWVudHMgZm9yIG1vcmUgZGV0YWlscycpKSk6KGEmJmEobmV3IFN2KCdcImxvY2FsZVwiIHdhcyBub3QgY29uZmlndXJlZCwgdXNpbmcgXCInLmNvbmNhdChpLCdcIiBhcyBmYWxsYmFjay4gU2VlIGh0dHBzOi8vZm9ybWF0anMuaW8vZG9jcy9yZWFjdC1pbnRsL2FwaSNpbnRsc2hhcGUgZm9yIG1vcmUgZGV0YWlscycpKSksci5sb2NhbGU9ci5kZWZhdWx0TG9jYWxlfHxcImVuXCIpLGl3KHIpLHpiKHpiKHt9LHIpLHtmb3JtYXR0ZXJzOm4sZm9ybWF0TnVtYmVyOkZ2LmJpbmQobnVsbCxyLG4uZ2V0TnVtYmVyRm9ybWF0KSxmb3JtYXROdW1iZXJUb1BhcnRzOk12LmJpbmQobnVsbCxyLG4uZ2V0TnVtYmVyRm9ybWF0KSxmb3JtYXRSZWxhdGl2ZVRpbWU6SHYuYmluZChudWxsLHIsbi5nZXRSZWxhdGl2ZVRpbWVGb3JtYXQpLGZvcm1hdERhdGU6R3YuYmluZChudWxsLHIsbi5nZXREYXRlVGltZUZvcm1hdCksZm9ybWF0RGF0ZVRvUGFydHM6cXYuYmluZChudWxsLHIsbi5nZXREYXRlVGltZUZvcm1hdCksZm9ybWF0VGltZTokdi5iaW5kKG51bGwscixuLmdldERhdGVUaW1lRm9ybWF0KSxmb3JtYXREYXRlVGltZVJhbmdlOkt2LmJpbmQobnVsbCxyLG4uZ2V0RGF0ZVRpbWVGb3JtYXQpLGZvcm1hdFRpbWVUb1BhcnRzOlF2LmJpbmQobnVsbCxyLG4uZ2V0RGF0ZVRpbWVGb3JtYXQpLGZvcm1hdFBsdXJhbDpZdi5iaW5kKG51bGwscixuLmdldFBsdXJhbFJ1bGVzKSxmb3JtYXRNZXNzYWdlOlJ2LmJpbmQobnVsbCxyLG4pLCR0OlJ2LmJpbmQobnVsbCxyLG4pLGZvcm1hdExpc3Q6dHcuYmluZChudWxsLHIsbi5nZXRMaXN0Rm9ybWF0KSxmb3JtYXRMaXN0VG9QYXJ0czpudy5iaW5kKG51bGwscixuLmdldExpc3RGb3JtYXQpLGZvcm1hdERpc3BsYXlOYW1lOm93LmJpbmQobnVsbCxyLG4uZ2V0RGlzcGxheU5hbWVzKX0pfWZ1bmN0aW9uIGx3KGUpe3JldHVybntsb2NhbGU6ZS5sb2NhbGUsdGltZVpvbmU6ZS50aW1lWm9uZSxmYWxsYmFja09uRW1wdHlTdHJpbmc6ZS5mYWxsYmFja09uRW1wdHlTdHJpbmcsZm9ybWF0czplLmZvcm1hdHMsdGV4dENvbXBvbmVudDplLnRleHRDb21wb25lbnQsbWVzc2FnZXM6ZS5tZXNzYWdlcyxkZWZhdWx0TG9jYWxlOmUuZGVmYXVsdExvY2FsZSxkZWZhdWx0Rm9ybWF0czplLmRlZmF1bHRGb3JtYXRzLG9uRXJyb3I6ZS5vbkVycm9yLG9uV2FybjplLm9uV2Fybix3cmFwUmljaFRleHRDaHVua3NJbkZyYWdtZW50OmUud3JhcFJpY2hUZXh0Q2h1bmtzSW5GcmFnbWVudCxkZWZhdWx0UmljaFRleHRFbGVtZW50czplLmRlZmF1bHRSaWNoVGV4dEVsZW1lbnRzfX1mdW5jdGlvbiBzdyhlKXtyZXR1cm4gZT9PYmplY3Qua2V5cyhlKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsbil7dmFyIHIsaT1lW25dO3JldHVybiB0W25dPXB2KGkpPyhyPWksZnVuY3Rpb24oZSl7cmV0dXJuIHIoby5DaGlsZHJlbi50b0FycmF5KGUpKX0pOmksdH0pLHt9KTplfXZhciBjdz1mdW5jdGlvbihlLHQsbixyKXtmb3IodmFyIGk9W10sYT00O2E8YXJndW1lbnRzLmxlbmd0aDthKyspaVthLTRdPWFyZ3VtZW50c1thXTt2YXIgbD1zdyhyKSxzPVJ2LmFwcGx5KHZvaWQgMCxEYihbZSx0LG4sbF0saSwhMSkpO3JldHVybiBBcnJheS5pc0FycmF5KHMpP28uQ2hpbGRyZW4udG9BcnJheShzKTpzfSx1dz1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGVmYXVsdFJpY2hUZXh0RWxlbWVudHMscj1MYihlLFtcImRlZmF1bHRSaWNoVGV4dEVsZW1lbnRzXCJdKSxvPXN3KG4pLGk9YXcoSWIoSWIoSWIoe30sanYpLHIpLHtkZWZhdWx0UmljaFRleHRFbGVtZW50czpvfSksdCksYT17bG9jYWxlOmkubG9jYWxlLHRpbWVab25lOmkudGltZVpvbmUsZmFsbGJhY2tPbkVtcHR5U3RyaW5nOmkuZmFsbGJhY2tPbkVtcHR5U3RyaW5nLGZvcm1hdHM6aS5mb3JtYXRzLGRlZmF1bHRMb2NhbGU6aS5kZWZhdWx0TG9jYWxlLGRlZmF1bHRGb3JtYXRzOmkuZGVmYXVsdEZvcm1hdHMsbWVzc2FnZXM6aS5tZXNzYWdlcyxvbkVycm9yOmkub25FcnJvcixkZWZhdWx0UmljaFRleHRFbGVtZW50czpvfTtyZXR1cm4gSWIoSWIoe30saSkse2Zvcm1hdE1lc3NhZ2U6Y3cuYmluZChudWxsLGEsaS5mb3JtYXR0ZXJzKSwkdDpjdy5iaW5kKG51bGwsYSxpLmZvcm1hdHRlcnMpfSl9LGR3PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgdD1udWxsIT09ZSYmZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7cmV0dXJuIHQuY2FjaGU9e2RhdGVUaW1lOnt9LG51bWJlcjp7fSxtZXNzYWdlOnt9LHJlbGF0aXZlVGltZTp7fSxwbHVyYWxSdWxlczp7fSxsaXN0Ont9LGRpc3BsYXlOYW1lczp7fX0sdC5zdGF0ZT17Y2FjaGU6dC5jYWNoZSxpbnRsOnV3KGx3KHQucHJvcHMpLHQuY2FjaGUpLHByZXZDb25maWc6bHcodC5wcm9wcyl9LHR9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKHQpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9ZX1qYihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KG4ucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyBuKX0odCxlKSx0LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz1mdW5jdGlvbihlLHQpe3ZhciBuPXQucHJldkNvbmZpZyxyPXQuY2FjaGUsbz1sdyhlKTtyZXR1cm4gSXYobixvKT9udWxsOntpbnRsOnV3KG8scikscHJldkNvbmZpZzpvfX0sdC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIEV2KHRoaXMuc3RhdGUuaW50bCksby5jcmVhdGVFbGVtZW50KFJiLHt2YWx1ZTp0aGlzLnN0YXRlLmludGx9LHRoaXMucHJvcHMuY2hpbGRyZW4pfSx0LmRpc3BsYXlOYW1lPVwiSW50bFByb3ZpZGVyXCIsdC5kZWZhdWx0UHJvcHM9anYsdH0oby5QdXJlQ29tcG9uZW50KSxmdz1kdztmdW5jdGlvbiBwdyhlLHQpe3ZhciBuPWUudmFsdWVzLHI9TGIoZSxbXCJ2YWx1ZXNcIl0pLG89dC52YWx1ZXMsaT1MYih0LFtcInZhbHVlc1wiXSk7cmV0dXJuIEl2KG8sbikmJkl2KHIsaSl9ZnVuY3Rpb24gZ3coZSl7dmFyIHQ9ZnVuY3Rpb24oKXt2YXIgZT1vLnVzZUNvbnRleHQoQmIpO3JldHVybiBFdihlKSxlfSgpLG49dC5mb3JtYXRNZXNzYWdlLHI9dC50ZXh0Q29tcG9uZW50LGk9dm9pZCAwPT09cj9vLkZyYWdtZW50OnIsYT1lLmlkLGw9ZS5kZXNjcmlwdGlvbixzPWUuZGVmYXVsdE1lc3NhZ2UsYz1lLnZhbHVlcyx1PWUuY2hpbGRyZW4sZD1lLnRhZ05hbWUsZj12b2lkIDA9PT1kP2k6ZCxwPW4oe2lkOmEsZGVzY3JpcHRpb246bCxkZWZhdWx0TWVzc2FnZTpzfSxjLHtpZ25vcmVUYWc6ZS5pZ25vcmVUYWd9KTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB1P3UoQXJyYXkuaXNBcnJheShwKT9wOltwXSk6Zj9vLmNyZWF0ZUVsZW1lbnQoZixudWxsLG8uQ2hpbGRyZW4udG9BcnJheShwKSk6by5jcmVhdGVFbGVtZW50KG8uRnJhZ21lbnQsbnVsbCxwKX1ndy5kaXNwbGF5TmFtZT1cIkZvcm1hdHRlZE1lc3NhZ2VcIjt2YXIgbXc9by5tZW1vKGd3LHB3KTttdy5kaXNwbGF5TmFtZT1cIk1lbW9pemVkRm9ybWF0dGVkTWVzc2FnZVwiO3ZhciBodz1tdyxidz1vLm1lbW8oKGZ1bmN0aW9uKGUpe3ZhciB0PWUudGV4dCxuPWUuZW1iZWRkZWRCaW5kaW5ncyxyPXZvaWQgMD09PW4/e306bjtyZXR1cm4oMCwkZS5qc3gpKGZ3LHtsb2NhbGU6XCJlblwiLGRlZmF1bHRMb2NhbGU6XCJlblwiLGNoaWxkcmVuOigwLCRlLmpzeCkoaHcse2lkOlwibm90X3VzZWRcIixkZWZhdWx0TWVzc2FnZTp0LHZhbHVlczpyfSl9KX0pKSx5dz1mdW5jdGlvbihlKXt2YXIgdCxuPUl0LmRlZmF1bHQuaW5zdGFuY2Uscj1uLmJhbm5lckVudmlyb25tZW50LG89bi5iYW5uZXJFbnZpcm9ubWVudFVybCxpPWUuc3R5bGVzO3N3aXRjaChyKXtjYXNlIHdiLkludGVybmFsOnQ9XCJNaWNyb3NvZnQgSW50ZXJuYWwgPGVudmlyb25tZW50QmFubmVyRGVzY3JpcHRpb24+RG8gbm90IHN0b3JlIGFueSBwZXJzb25hbGx5IGlkZW50aWZpYWJsZSBpbmZvcm1hdGlvbi48L2Vudmlyb25tZW50QmFubmVyRGVzY3JpcHRpb24+XCI7YnJlYWs7Y2FzZSB3Yi5UZXN0U2xpY2U6dD1cIiBcIjticmVhaztjYXNlIHdiLkZpcnN0U2xpY2U6dD1cIiBcIjticmVhaztkZWZhdWx0OnQ9XCJcIn1yZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTppLmVudkJhbm5lcixcImRhdGEtdGVzdGlkXCI6XCJlbnZpcm9ubWVudEJhbm5lclwiLHJvbGU6XCJiYW5uZXJcIixjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTppLmVudkJhbm5lcklubmVyLGNoaWxkcmVuOigwLCRlLmpzeCkoYncse3RleHQ6dCxlbWJlZGRlZEJpbmRpbmdzOntlbnZpcm9ubWVudEJhbm5lckRlc2NyaXB0aW9uOmZ1bmN0aW9uKGUpe3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmkuZW52QmFubmVyRGVzY3JpcHRpb24sY2hpbGRyZW46XCJcIi5jb25jYXQoZSl9KX0sZW52aXJvbm1lbnRCYW5uZXJMaW5rOmZ1bmN0aW9uKGUpe3JldHVybigwLCRlLmpzeCkoXCJhXCIse2hyZWY6byxjaGlsZHJlbjplfSl9fX0pfSl9KX0sdnc9ZnVuY3Rpb24oKXt2YXIgZT1VbS5pbnN0YW5jZS51c2VFbnZpcm9ubWVudEJhbm5lclN0eWxlcygpO3JldHVybigwLCRlLmpzeCkoeXcse3N0eWxlczplfSl9O2Z1bmN0aW9uIHd3KCl7cmV0dXJuIHd3PU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sd3cuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFN3KGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfXZhciBQdz1bXCJvbkNsaWNrXCIsXCJyZWxhdGl2ZVwiLFwicmVsb2FkRG9jdW1lbnRcIixcInJlcGxhY2VcIixcInN0YXRlXCIsXCJ0YXJnZXRcIixcInRvXCIsXCJwcmV2ZW50U2Nyb2xsUmVzZXRcIl07dmFyIHh3PW8uZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm9uQ2xpY2sscj1lLnJlbGF0aXZlLGk9ZS5yZWxvYWREb2N1bWVudCxhPWUucmVwbGFjZSxsPWUuc3RhdGUscz1lLnRhcmdldCxjPWUudG8sdT1lLnByZXZlbnRTY3JvbGxSZXNldCxkPVN3KGUsUHcpLGY9ZnVuY3Rpb24oZSx0KXt2YXIgbj0odm9pZCAwPT09dD97fTp0KS5yZWxhdGl2ZTtQZSgpfHxTKCExKTt2YXIgcj1vLnVzZUNvbnRleHQoeWUpLGk9ci5iYXNlbmFtZSxhPXIubmF2aWdhdG9yLGw9X2UoZSx7cmVsYXRpdmU6bn0pLHM9bC5oYXNoLGM9bC5wYXRobmFtZSx1PWwuc2VhcmNoLGQ9YztyZXR1cm5cIi9cIiE9PWkmJihkPVwiL1wiPT09Yz9pOkYoW2ksY10pKSxhLmNyZWF0ZUhyZWYoe3BhdGhuYW1lOmQsc2VhcmNoOnUsaGFzaDpzfSl9KGMse3JlbGF0aXZlOnJ9KSxwPWZ1bmN0aW9uKGUsdCl7dmFyIG49dm9pZCAwPT09dD97fTp0LHI9bi50YXJnZXQsaT1uLnJlcGxhY2UsYT1uLnN0YXRlLGw9bi5wcmV2ZW50U2Nyb2xsUmVzZXQscz1uLnJlbGF0aXZlLGM9T2UoKSx1PXhlKCksZD1fZShlLHtyZWxhdGl2ZTpzfSk7cmV0dXJuIG8udXNlQ2FsbGJhY2soKGZ1bmN0aW9uKHQpe2lmKGZ1bmN0aW9uKGUsdCl7cmV0dXJuISgwIT09ZS5idXR0b258fHQmJlwiX3NlbGZcIiE9PXR8fGZ1bmN0aW9uKGUpe3JldHVybiEhKGUubWV0YUtleXx8ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5zaGlmdEtleSl9KGUpKX0odCxyKSl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPXZvaWQgMCE9PWk/aTpPKHUpPT09TyhkKTtjKGUse3JlcGxhY2U6bixzdGF0ZTphLHByZXZlbnRTY3JvbGxSZXNldDpsLHJlbGF0aXZlOnN9KX19KSxbdSxjLGQsaSxhLHIsZSxsLHNdKX0oYyx7cmVwbGFjZTphLHN0YXRlOmwsdGFyZ2V0OnMscHJldmVudFNjcm9sbFJlc2V0OnUscmVsYXRpdmU6cn0pO3JldHVybiBvLmNyZWF0ZUVsZW1lbnQoXCJhXCIsd3coe30sZCx7aHJlZjpmLG9uQ2xpY2s6aT9uOmZ1bmN0aW9uKGUpe24mJm4oZSksZS5kZWZhdWx0UHJldmVudGVkfHxwKGUpfSxyZWY6dCx0YXJnZXQ6c30pKX0pKTt2YXIgT3csX3c7KGZ1bmN0aW9uKGUpe2UuVXNlU2Nyb2xsUmVzdG9yYXRpb249XCJ1c2VTY3JvbGxSZXN0b3JhdGlvblwiLGUuVXNlU3VibWl0SW1wbD1cInVzZVN1Ym1pdEltcGxcIixlLlVzZUZldGNoZXI9XCJ1c2VGZXRjaGVyXCJ9KShPd3x8KE93PXt9KSksZnVuY3Rpb24oZSl7ZS5Vc2VGZXRjaGVycz1cInVzZUZldGNoZXJzXCIsZS5Vc2VTY3JvbGxSZXN0b3JhdGlvbj1cInVzZVNjcm9sbFJlc3RvcmF0aW9uXCJ9KF93fHwoX3c9e30pKTtmdW5jdGlvbiBDdyhlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmT2JqZWN0LnZhbHVlcyhUdCkuaW5jbHVkZXMoZSl9dmFyIGt3LEF3PWZ1bmN0aW9uKGUpe2lmKE9iamVjdC52YWx1ZXMoVHQpLmluY2x1ZGVzKGUpJiZlIT09VHQuTm9uZSlyZXR1cm5cIi9cIi5jb25jYXQoZSk7dGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB2aWV3OiBcIi5jb25jYXQoZSxcIiAtIGNhbm5vdCBjcmVhdGUgcm91dGUuXCIpKX0sVHc9ZnVuY3Rpb24oZSl7cmV0dXJuXCIvXCIuY29uY2F0KFR0LlZpZXdBZ3JlZW1lbnQsXCIvXCIpLmNvbmNhdChlKX07ZnVuY3Rpb24gRXcoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIGp3KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBJdyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9qdyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0x3KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpqdyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBMdyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gRHcoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIE53KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIE53KGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBOdyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFJ3KGUpe3JldHVybiBSdz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxSdyhlKX1mdW5jdGlvbiBCdyhlKXtyZXR1cm4gdm9pZCAwIT09ZSYmXCJvYmplY3RcIj09PVJ3KGUpJiZudWxsIT09ZSYmIUFycmF5LmlzQXJyYXkoZSkmJjAhPT1PYmplY3Qua2V5cyhlKS5sZW5ndGh9IWZ1bmN0aW9uKGUpe2UuQTExeUNvbmZvcm1lPVwiYTExeUNvbmZvcm1lXCIsZS5DaGluYVBpcGxMZWFybk1vcmU9XCJjaGluYXBpcGxsZWFybm1vcmVcIixlLkNoaW5hUHJpdmFjeT1cImNoaW5hcHJpdmFjeVwiLGUuSW1wcmVzc3VtPVwiaW1wcmVzc3VtXCIsZS5Lb3JlYUNvbnNlbnREYXRhQ29sbGVjdGlvbj1cImtvcmVhZGF0YWNvbGxlY3Rpb25cIixlLktvcmVhQ29uc2VudERhdGFQcm92aXNpb249XCJrb3JlYWRhdGFwcm92aXNpb25cIixlLlByaXZhY3k9XCJwcml2YWN5XCIsZS5UZXJtc09mVXNlPVwidG91XCJ9KGt3fHwoa3c9e30pKTt2YXIgVXc9ZnVuY3Rpb24gZSh0LG4pe3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyhuKS5mb3JFYWNoKChmdW5jdGlvbihvKXt2YXIgaT1EdyhvLDIpLGE9aVswXSxsPWlbMV0scz1uW2FdLGM9dFthXTtpZihudWxsPT1jKXI9SXcoSXcoe30scikse30sTHcoe30sYSxsKSk7ZWxzZSBpZihCdyhzKSYmQncoYykpe3ZhciB1PWUoYyxzKTtyPUl3KEl3KHt9LHIpLHt9LEx3KHt9LGEsdSkpfWVsc2Ugcj1JdyhJdyh7fSxyKSx7fSxMdyh7fSxhLGMpKX0pKSxyfSxGdz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSxMdyh0aGlzLFwiaXNJbml0aWFsaXplZFwiLCExKSxMdyh0aGlzLFwiZGVmYXVsdENvbmZpZ1ZhbHVlc1wiLHt9KSx0aGlzLmNvbmZpZz10LHRoaXMuZGVmYXVsdENvbmZpZ1ZhbHVlcz1Jdyh7fSx0KX12YXIgdCxuLHI7cmV0dXJuIHQ9ZSxuPVt7a2V5OlwiaW5pdGlhbGl6ZVwiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuaXNJbml0aWFsaXplZCl0aHJvdyBuZXcgRXJyb3IoXCJDb25maWcgYWxyZWFkeSBpbml0aWFsaXplZFwiKTt0aGlzLmlzSW5pdGlhbGl6ZWQ9ITA7dmFyIHQ9VXcoZSx0aGlzLmRlZmF1bHRDb25maWdWYWx1ZXMpO3RoaXMuY29uZmlnPUl3KEl3KEl3KHt9LHRoaXMuY29uZmlnKSxlKSx0KX19LHtrZXk6XCJpbnN0YW5jZVwiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmZpZ319LHtrZXk6XCJjbGVhbnVwXCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmNvbmZpZz10aGlzLmRlZmF1bHRDb25maWdWYWx1ZXMsdGhpcy5pc0luaXRpYWxpemVkPSExfX1dLG4mJkV3KHQucHJvdG90eXBlLG4pLHImJkV3KHQsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxlfSgpLE13PW5ldyBGdyh7Zm9vdGVyQTExeUNvbmZvcm1lVXJsOlwiXCIsZm9vdGVySW1wcmVzc3VtVXJsOlwiXCIsaGVscFVybDpcIlwiLGhlbHBVcmxIb3N0ZWQ6XCJcIixoaWRlRm9vdGVyOiExLHByaXZhY3lMaW5rRXh0ZXJuYWw6ITEscHJpdmFjeVVybDpcIlwiLHRlcm1zT2ZVc2VMaW5rRXh0ZXJuYWw6ITEsdGVybXNPZlVzZVVybDpcIlwifSksenc9TXc7ZnVuY3Rpb24gSHcoZSx0KXt2YXIgbj17fTtuLmZvb3RlckExMXlDb25mb3JtZVVybD1lLmExMXlDb25mb3JtZUxpbmssbi5oaWRlRm9vdGVyPWUuZkhpZGVGb290ZXIsbi5mb290ZXJJbXByZXNzdW1Vcmw9ZS51cmxJbXByZXNzdW0sZS51cmxIb3N0ZWRUT1VMaW5rJiZlLmZJc0hvc3RlZHx8ZS51cmxIb3N0ZWRUT1VMaW5rJiYhZS51cmxGb290ZXJUT1U/bi50ZXJtc09mVXNlVXJsPWUudXJsSG9zdGVkVE9VTGluazplLnVybEZvb3RlclRPVSYmKG4udGVybXNPZlVzZUxpbmtFeHRlcm5hbD0hMCxuLnRlcm1zT2ZVc2VVcmw9ZS51cmxGb290ZXJUT1UpLGUudXJsSG9zdGVkUHJpdmFjeUxpbmsmJmUuZklzSG9zdGVkfHxlLnVybEhvc3RlZFByaXZhY3lMaW5rJiYhZS51cmxGb290ZXJQcml2YWN5P24ucHJpdmFjeVVybD1lLnVybEhvc3RlZFByaXZhY3lMaW5rOmUudXJsRm9vdGVyUHJpdmFjeSYmKG4ucHJpdmFjeUxpbmtFeHRlcm5hbD0hMCxuLnByaXZhY3lVcmw9ZS51cmxGb290ZXJQcml2YWN5KSxuLmhlbHBVcmw9bnVsbD09dD92b2lkIDA6dC51cmxIZWxwTGluayxuLmhlbHBVcmxIb3N0ZWQ9bnVsbD09dD92b2lkIDA6dC51cmxIZWxwTGlua0Rpc3BsYXksTXcuaW5pdGlhbGl6ZShuKX12YXIgVnc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pc0RlYnVnSW5mb1Nob3duLG49dm9pZCAwIT09dCYmdCxyPWUub25EZWJ1Z0l0ZW1DbGljayxpPWUuZm9jdXNPbkVsbGlwc2lzLGE9dm9pZCAwIT09aSYmaSxsPUl0LmRlZmF1bHQuaW5zdGFuY2Uscz1sLmlzSG9zdGVkLGM9bC5pc0NoaW5hRGMsdT1sLmxvZ291dFVybCxkPWwuaGlkZURlYnVnRGV0YWlscyxmPWwuc2hvd0xvZ291dE9uRm9vdGVyLHA9encuaW5zdGFuY2UsZz1wLmZvb3RlckltcHJlc3N1bVVybCxtPXAuZm9vdGVyQTExeUNvbmZvcm1lVXJsLGg9SnQoKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGI9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLHk9Yi5hbHdheXNTaG93QmFja2dyb3VuZCx2PWIudGVybXNPZlVzZVVybCx3PWIudGVybXNPZlVzZVRleHQsUz1iLnByaXZhY3lVcmwsUD1iLnByaXZhY3lUZXh0LHg9Yi5zaG93Rm9vdGVyLE89Yi5zaG93VGVybXNPZlVzZSxfPWIuc2hvd1ByaXZhY3ksQz1iLnVzZURhcmtGb290ZXIsaz1iLmxheW91dFRlbXBsYXRlLEE9KDAsVW0uaW5zdGFuY2UudXNlRm9vdGVyU3R5bGVzKSgpLFQ9QyYmayE9PWN0Lmh4LlZlcnRpY2FsU3BsaXQsRT0heSYmVCxqPXkmJlQsST1TZyhBLmZvb3RlcixUP1NnKEEuZGFya0Zvb3RlcixjdC5rai5oYXNCYWNrZ3JvdW5kKTpcIlwiLEU/QS53aGl0ZU1vYmlsZUZvb3RlcjpcIlwiLHk/Y3Qua2ouYmFja2dyb3VuZEFsd2F5c1Zpc2libGU6XCJcIixjdC5rai5mb290ZXIpLEw9U2coQS5mb290ZXJJdGVtLFQ/U2coQS5kYXJrRm9vdGVyRm9vdGVySXRlbSxjdC5rai5oYXNCYWNrZ3JvdW5kKTpcIlwiLGo/QS53aGl0ZVRleHRNb2JpbGVGb290ZXJJdGVtOlwiXCIseT9jdC5rai5iYWNrZ3JvdW5kQWx3YXlzVmlzaWJsZTpcIlwiLGN0LmtqLmZvb3Rlckl0ZW0sY3Qua2ouZm9vdGVyQ29udGVudCksRD1TZyhBLmZvb3Rlck5vZGUsY3Qua2ouZm9vdGVyTGlua3MpLE49U2coTCxBLmRlYnVnSXRlbSxjdC5rai5kZWJ1Z0l0ZW0pLFI9eGUoKS5wYXRobmFtZSxCPSgwLG8udXNlUmVmKShudWxsKTsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7dmFyIGU7YSYmIW4mJihudWxsPT1CfHxudWxsPT09KGU9Qi5jdXJyZW50KXx8dm9pZCAwPT09ZXx8ZS5mb2N1cygpKX0pLFthLG5dKTt2YXIgVT1mJiZ1JiYoMCwkZS5qc3gpKFwiYVwiLHtpZDpcImxvZ291dFVybFwiLFwiZGF0YS10ZXN0aWRcIjpcImxvZ291dFVybFwiLGhyZWY6dSxjbGFzc05hbWU6TCxjaGlsZHJlbjpcIlNpZ24gb3V0XCJ9KTtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse2lkOlwiZm9vdGVyXCIsXCJkYXRhLXRlc3RpZFwiOlwiZm9vdGVyXCIscm9sZTpcImNvbnRlbnRpbmZvXCIsY2xhc3NOYW1lOkksY2hpbGRyZW46KDAsJGUuanN4cykoXCJkaXZcIix7aWQ6XCJmb290ZXJMaW5rc1wiLGNsYXNzTmFtZTpELGNoaWxkcmVuOlt4JiYoMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46W1UscyYmIWM/KDAsJGUuanN4cykoJGUuRnJhZ21lbnQse2NoaWxkcmVuOltPJiYhIXYmJigwLCRlLmpzeCkoeHcse3RvOlR3KGt3LlRlcm1zT2ZVc2UpLGlkOlwiZnRyVGVybXNcIixjbGFzc05hbWU6TCxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGgoe3R5cGU6THQuQmVnaW5OYXZpZ2F0ZSxzb3VyY2U6UixkZXN0aW5hdGlvbjpUdC5WaWV3QWdyZWVtZW50LGRpc3BsYXlPcHRpb25zOntuYXZpZ2F0aW9uRGlyZWN0aW9uOlwiZm9yd2FyZFwifX0pfSxjaGlsZHJlbjooMCxzdC5VYykodyl9KSxfJiYhIVMmJigwLCRlLmpzeCkoeHcse3RvOlR3KGt3LlByaXZhY3kpLGlkOlwiZnRyUHJpdmFjeVwiLGNsYXNzTmFtZTpMLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gaCh7dHlwZTpMdC5CZWdpbk5hdmlnYXRlLHNvdXJjZTpSLGRlc3RpbmF0aW9uOlR0LlZpZXdBZ3JlZW1lbnQsZGlzcGxheU9wdGlvbnM6e25hdmlnYXRpb25EaXJlY3Rpb246XCJmb3J3YXJkXCJ9fSl9LGNoaWxkcmVuOigwLHN0LlVjKShQKX0pLCEhZyYmKDAsJGUuanN4KSh4dyx7dG86VHcoa3cuSW1wcmVzc3VtKSxpZDpcImZ0ckltcHJlc3N1bVwiLGNsYXNzTmFtZTpMLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gaCh7dHlwZTpMdC5CZWdpbk5hdmlnYXRlLHNvdXJjZTpSLGRlc3RpbmF0aW9uOlR0LlZpZXdBZ3JlZW1lbnQsZGlzcGxheU9wdGlvbnM6e25hdmlnYXRpb25EaXJlY3Rpb246XCJmb3J3YXJkXCJ9fSl9LGNoaWxkcmVuOlwiSW1wcmVzc3VtXCJ9KSwhIW0mJigwLCRlLmpzeCkoeHcse3RvOlR3KGt3LkExMXlDb25mb3JtZSksaWQ6XCJmdHJBMTF5Q29uZm9ybWVcIixjbGFzc05hbWU6TCxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGgoe3R5cGU6THQuQmVnaW5OYXZpZ2F0ZSxzb3VyY2U6UixkZXN0aW5hdGlvbjpUdC5WaWV3QWdyZWVtZW50LGRpc3BsYXlPcHRpb25zOntuYXZpZ2F0aW9uRGlyZWN0aW9uOlwiZm9yd2FyZFwifX0pfSxjaGlsZHJlbjpcIkFjY2Vzc2liaWxpdHk6IFBhcnRpYWxseSBjb21wbGlhbnRcIn0pXX0pOigwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbTyYmISF2JiYoMCwkZS5qc3gpKFwiYVwiLHtpZDpcImZ0clRlcm1zXCIsaHJlZjp2LHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vcmVmZXJyZXIgbm9vcGVuZXJcIixjbGFzc05hbWU6TCxjaGlsZHJlbjooMCxzdC5VYykodyl9KSxfJiYhIVMmJigwLCRlLmpzeCkoXCJhXCIse2lkOlwiZnRyUHJpdmFjeVwiLGhyZWY6Uyx0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub3JlZmVycmVyIG5vb3BlbmVyXCIsY2xhc3NOYW1lOkwsY2hpbGRyZW46KDAsc3QuVWMpKFApfSksISFnJiYoMCwkZS5qc3gpKFwiYVwiLHtpZDpcImZ0ckltcHJlc3N1bVwiLGhyZWY6Zyx0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub3JlZmVycmVyIG5vb3BlbmVyXCIsY2xhc3NOYW1lOkwsY2hpbGRyZW46XCJJbXByZXNzdW1cIn0pLCEhbSYmKDAsJGUuanN4KShcImFcIix7aWQ6XCJmdHJBMTF5Q29uZm9ybWVcIixocmVmOm0sdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9yZWZlcnJlciBub29wZW5lclwiLGNsYXNzTmFtZTpMLGNoaWxkcmVuOlwiQWNjZXNzaWJpbGl0eTogUGFydGlhbGx5IGNvbXBsaWFudFwifSldfSldfSksIWQmJigwLCRlLmpzeCkoXCJhXCIse2lkOlwibW9yZU9wdGlvbnNcIixocmVmOlwiI1wiLHJvbGU6XCJidXR0b25cIixvbkNsaWNrOnIsY2xhc3NOYW1lOk4sXCJhcmlhLWxhYmVsXCI6XCJDbGljayBoZXJlIGZvciB0cm91Ymxlc2hvb3RpbmcgaW5mb3JtYXRpb25cIixcImFyaWEtZXhwYW5kZWRcIjpuLHJlZjpCLGNoaWxkcmVuOlwiLi4uXCJ9KV19KX0pfSxXdz1uZXcgTG0ucih7bG9hZEdhbWVwYWROYXZpZ2F0aW9uTW9kdWxlOiExLGlzR2FtaW5nRmxvdzohMSxpc1NpbXBsaWZpZWRDaGlsZEFjY291bnRDcmVhdGlvbjohMSx1c2VOZXdQaG9uZU51bWJlckNvbXBvbmVudDohMX0pLEd3PVd3O2Z1bmN0aW9uICR3KGUpe3ZhciB0PXt9O251bGwhPWUmJmUuZkxvYWRHYW1lcGFkTmF2aWdhdGlvbk1vZHVsZSYmKHQubG9hZEdhbWVwYWROYXZpZ2F0aW9uTW9kdWxlPWUuZkxvYWRHYW1lcGFkTmF2aWdhdGlvbk1vZHVsZSksbnVsbCE9ZSYmZS5mVXNlTmV3UGhvbmVOdW1iZXJDb21wb25lbnQmJih0LnVzZU5ld1Bob25lTnVtYmVyQ29tcG9uZW50PSEhZS5mVXNlTmV3UGhvbmVOdW1iZXJDb21wb25lbnQpLG51bGwhPWUmJmUuZklzR2FtaW5nRmxvdyYmKHQuaXNHYW1pbmdGbG93PWUuZklzR2FtaW5nRmxvdyksbnVsbCE9ZSYmZS5mSXNTaW1wbGlmaWVkQ2hpbGRBY2NvdW50Q3JlYXRpb24mJih0LmlzU2ltcGxpZmllZENoaWxkQWNjb3VudENyZWF0aW9uPWUuZklzU2ltcGxpZmllZENoaWxkQWNjb3VudENyZWF0aW9uKSxXdy5pbml0aWFsaXplKHQpfXZhciBLdz1mdW5jdGlvbihlKXt2YXIgdD1KdCgpLmdsb2JhbFN0YXRlLmdhbWVwYWRNYW5hZ2VyOygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXt2YXIgbj1udWxsPT1lP3ZvaWQgMDplLmN1cnJlbnQ7cmV0dXJuIG4mJnQmJnQucHVzaEZvY3VzQ29udGV4dChuKSxmdW5jdGlvbigpe24mJnQmJnQucG9wRm9jdXNDb250ZXh0KG4pfX0pLFtlLHRdKX07ZnVuY3Rpb24gcXcoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBRdyhlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtxdyhpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtxdyhpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX19dmFyIFh3PXtcImRhdGEtc2Nyb2xsYWJsZVwiOlwidHJ1ZVwifSxZdz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLHI9R3cuaW5zdGFuY2UubG9hZEdhbWVwYWROYXZpZ2F0aW9uTW9kdWxlLGk9SnQoKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGE9KDAsVW0uaW5zdGFuY2UudXNlQ29tbW9uU3R5bGVzKSgpLmdhbWVwYWROYXZpZ2F0aW9uV3JhcHBlcjsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3JldHVybihlPVF3KHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighcil7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGUubmV4dD0zLG4uZSg1MzMpLnRoZW4obi50LmJpbmQobiw2Nzc3LDIzKSk7Y2FzZSAzOnJldHVybiB0PWUuc2VudCxlLm5leHQ9Nix0LmluaXRHYW1lcGFkTmF2aWdhdGlvbigpO2Nhc2UgNjppKHt0eXBlOkx0LlNldEdhbWVwYWROYXZpZ2F0aW9uTW9kdWxlLHBheWxvYWQ6dH0pO2Nhc2UgNzpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9IWZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KCl9KSxbcixpXSk7dmFyIGw9KDAsby51c2VSZWYpKG51bGwpO3JldHVybiBLdyhsKSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTphLHJlZjpsLFwiZGF0YS10ZXN0aWRcIjpcImdhbWVwYWROYXZpZ2F0aW9uV3JhcHBlclwiLGNoaWxkcmVuOnR9KX0sWnc9ZnVuY3Rpb24oKXt2YXIgZT0oMCxVbS5pbnN0YW5jZS51c2VIZWFkZXJTdHlsZXMpKCksdD1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMsbj10LmhlYWRlckxvZ29Vcmw7aWYoIXQuc2hvd0hlYWRlcilyZXR1cm4gbnVsbDt2YXIgcj1TZyhlLmhlYWRlcixjdC5rai5oZWFkZXIpLG89U2coZS5oZWFkZXJMb2dvLGN0LmtqLmhlYWRlckxvZ28pO3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmUuaGVhZGVyQ29udGFpbmVyLFwiZGF0YS10ZXN0aWRcIjpcImhlYWRlclwiLHJvbGU6XCJiYW5uZXJcIixjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2lkOlwiaGVhZGVyXCIsY2xhc3NOYW1lOnIsY2hpbGRyZW46KDAsJGUuanN4KShcImltZ1wiLHtzcmM6bixhbHQ6XCJDb21wYW55IGxvZ29cIixjbGFzc05hbWU6b30pfSl9KX07ZnVuY3Rpb24gSncoKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX12YXIgZVM9ZnVuY3Rpb24oKXt2YXIgZT1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMsdD1lLmJhY2tncm91bmRMb2dvVXJsLG49ZS5sYXlvdXRUZW1wbGF0ZSxyPSgwLFVtLmluc3RhbmNlLnVzZUJhY2tncm91bmRMb2dvU3R5bGVzKSgpLG89U2coci5iYWNrZ3JvdW5kTG9nbyxuPT09Y3QuaHguVmVydGljYWxTcGxpdD9yLnZlcnRpY2FsU3BsaXQ6XCJcIik7cmV0dXJuIHQ/KDAsJGUuanN4KShcImltZ1wiLHtjbGFzc05hbWU6byxcImRhdGEtdGVzdGlkXCI6XCJiYWNrZ3JvdW5kTG9nb1wiLGFsdDpcInByZXNlbnRhdGlvblwiLHNyYzp0fSk6bnVsbH0sdFM9ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLHQ9ZS5pc0NoaW5hRGMsbj1lLmlzQ2lhbVVzZXJGbG93LHI9KDAsVW0uaW5zdGFuY2UudXNlQmFubmVyTG9nb1N0eWxlcykoKSxvPXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcyxpPW8uYmFubmVyTG9nb1VybCxhPW8uYmFubmVyTG9nb1RleHQ7aWYoaSl7dmFyIGw9U2coci5iYW5uZXJMb2dvLGN0LmtqLmJhbm5lckxvZ28pO3JldHVybigwLCRlLmpzeCkoXCJpbWdcIix7XCJkYXRhLXRlc3RpZFwiOlwiYmFubmVyTG9nb1wiLGNsYXNzTmFtZTpsLHNyYzppLGFsdDpcIlwifSl9cmV0dXJuIGE/KDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtdGVzdGlkXCI6XCJiYW5uZXJMb2dvVGV4dFwiLGNsYXNzTmFtZTpyLmJhbm5lckxvZ29UZXh0LGNoaWxkcmVuOigwLHN0LlVjKShhKX0pOnR8fG4/bnVsbDooMCwkZS5qc3gpKFNiLHtjbGFzc05hbWU6ci5sb2dvLHVybHM6b2IsYWx0OlwiTWljcm9zb2Z0XCJ9KX07ZnVuY3Rpb24gblMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJTKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJTKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiByUyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBvUz17Zm9yd2FyZDp7c2xpZGVJbjpcInNsaWRlSW5OZXh0XCIsc2xpZGVPdXQ6XCJzbGlkZU91dE5leHRcIn0sYmFjazp7c2xpZGVJbjpcInNsaWRlSW5CYWNrXCIsc2xpZGVPdXQ6XCJzbGlkZU91dEJhY2tcIn19LGlTPWZ1bmN0aW9uKCl7dmFyIGU9SnQoKS5nbG9iYWxTdGF0ZS5uYXZpZ2F0aW9uRGlyZWN0aW9uLHQ9VW0uaW5zdGFuY2UudXNlTGF5b3V0QW5pbWF0ZVN0eWxlcygpLG49dC5hbmltYXRlLHI9dC5zbGlkZUluQmFjayxpPXQuc2xpZGVJbk5leHQsYT10LnNsaWRlT3V0QmFjayxsPXQuc2xpZGVPdXROZXh0LHM9dC5mYWRlSW4sYz10LmZhZGVPdXQsdT14ZSgpLGQ9U2cobixsKSxmPVNnKG4sYSkscD1TZyhuLGkpLGc9U2cobixyKSxtPW5TKCgwLG8udXNlU3RhdGUpKHUpLDIpLGg9bVswXSxiPW1bMV0seT1uUygoMCxvLnVzZVN0YXRlKShvU1tlXS5zbGlkZUluKSwyKSx2PXlbMF0sdz15WzFdLFM9blMoKDAsby51c2VTdGF0ZSkocyksMiksUD1TWzBdLHg9U1sxXSxPPW5TKCgwLG8udXNlU3RhdGUpKHApLDIpLF89T1swXSxDPU9bMV07KDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3UucGF0aG5hbWUhPT1oLnBhdGhuYW1lJiZ2IT09b1NbZV0uc2xpZGVPdXQmJih3KG9TW2VdLnNsaWRlT3V0KSxDKFwiZm9yd2FyZFwiPT09ZT9kOmYpKX0pLFt1LGgsZSxkLGYsYyxQLHZdKTtyZXR1cm57Y3VycmVudExvY2F0aW9uOmgsc2xpZGVBbmltYXRpb25TdHlsZXM6XyxvbkFuaW1hdGlvbkVuZDpmdW5jdGlvbigpe3Y9PT1vU1tlXS5zbGlkZU91dCYmKHcob1NbZV0uc2xpZGVJbiksQyhcImZvcndhcmRcIj09PWU/cDpnKSxiKHUpKSxcIlwiIT09UCYmeChcIlwiKX0sZmFkZUluT25jZUFuaW1hdGlvblN0eWxlczpQfX0sYVM9ZnVuY3Rpb24oKXt2YXIgZT1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMsdD1lLnVzZVRyYW5zcGFyZW50TGlnaHRib3gsbj1lLmxheW91dFRlbXBsYXRlLHI9ZS5ib2lsZXJQbGF0ZVRleHQsbz0oMCxVbS5pbnN0YW5jZS51c2VCb2lsZXJQbGF0ZVN0eWxlcykoKSxpPVRpKCksYT1pUygpLGw9YS5zbGlkZUFuaW1hdGlvblN0eWxlcyxzPWEub25BbmltYXRpb25FbmQsYz1uPT09Y3QuaHguVmVydGljYWxTcGxpdCx1PVNnKGN0LmtqLmJvaWxlclBsYXRlVGV4dCxvLmJvaWxlclBsYXRlVGV4dCx0P28udHJhbnNwYXJlbnQ6XCJcIix0JiZjP28udHJhbnNwYXJlbnRWZXJ0aWNhbFNwbGl0OlwiXCIsYz9vLnZlcnRpY2FsU3BsaXQ6XCJcIixpP2w6XCJcIik7aWYoIXIpcmV0dXJuIG51bGw7dmFyIGQ9e19faHRtbDpyfTtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcImJvaWxlclBsYXRlVGV4dFwiLGNsYXNzTmFtZTp1LGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOmQsb25BbmltYXRpb25FbmQ6c30pfTtmdW5jdGlvbiBsUyhlKXtuYXZpZ2F0b3IuY2xpcGJvYXJkP25hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGUpOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTt0LnZhbHVlPWUsdC5zZWxlY3QoKTt0cnl7ZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpfWNhdGNoKG4pe31kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImJvZHlcIilbMF0ucmVtb3ZlQ2hpbGQodCl9KGUpfXZhciBzUz1bXCJjaGlsZHJlblwiXTtmdW5jdGlvbiBjUyhlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99dmFyIHVTPW8uZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuLHI9Y1MoZSxzUyksaT1yLmFyaWFMYWJlbCxhPXIuYXJpYUxhYmVsbGVkQnksbD1yLmFyaWFEZXNjcmliZWRCeSxzPXIuYXJpYUV4cGFuZGVkLGM9ci5hcmlhSGFzUG9wdXAsdT1yLmFyaWFSb2xlLGQ9ci5hcmlhQWN0aXZlRGVzY2VuZGFudCxmPXIuYXJpYUNvbnRyb2xzLHA9ci5idXR0b25JZCxnPXIuZGF0YVRlc3RJZCxtPXIuZGlzYWJsZWQsaD12b2lkIDAhPT1tJiZtLGI9ci5vbkNsaWNrLHk9ci5jbGFzc05hbWUsdj1yLnN0eWxlLHc9dm9pZCAwPT09dj97fTp2LFM9ci5oYXNGb2N1cyxQPXZvaWQgMCE9PVMmJlMseD1yLnR5cGUsTz12b2lkIDA9PT14P1wiYnV0dG9uXCI6eCxfPXIub25Nb3VzZU92ZXIsQz12b2lkIDA9PT1fP2Z1bmN0aW9uKCl7fTpfLGs9ci5vbk1vdXNlT3V0LEE9dm9pZCAwPT09az9mdW5jdGlvbigpe306ayxUPXIub25Gb2N1cyxFPXZvaWQgMD09PVQ/ZnVuY3Rpb24oKXt9OlQsaj1yLm9uQmx1cixJPXZvaWQgMD09PWo/ZnVuY3Rpb24oKXt9OmosTD1mdW5jdGlvbihlLHQpe3ZhciBuPSgwLG8udXNlUmVmKShudWxsKTtyZXR1cm4oMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7IWUmJnQmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPW4uY3VycmVudCl8fHZvaWQgMD09PWV8fGUuZm9jdXMoKX0pLGhwKX0pLFt0LGVdKSxufSh0LFApO3JldHVybigwLCRlLmpzeCkoXCJidXR0b25cIix7dHlwZTpPLG9uQ2xpY2s6YixkaXNhYmxlZDpoLFwiYXJpYS1sYWJlbFwiOmksXCJhcmlhLWxhYmVsbGVkYnlcIjphLFwiYXJpYS1kZXNjcmliZWRieVwiOmwsXCJhcmlhLWV4cGFuZGVkXCI6cyxcImFyaWEtaGFzcG9wdXBcIjpjLFwiYXJpYS1jb250cm9sc1wiOmYscm9sZTp1LFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCI6ZCxyZWY6bnVsbCE9dD90OkwsaWQ6cCxcImRhdGEtdGVzdGlkXCI6ZyxjbGFzc05hbWU6eSxzdHlsZTp3LG9uTW91c2VPdmVyOkMsb25Nb3VzZU91dDpBLG9uRm9jdXM6RSxvbkJsdXI6SSxjaGlsZHJlbjpufSl9KSksZFM9W1wiY2hpbGRyZW5cIixcImltYWdlXCIsXCJpbWdBZnRlckNvbnRlbnRcIl07ZnVuY3Rpb24gZlMoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHBTKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2ZTKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Z1MoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmZTKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGdTKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBtUyhlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99dmFyIGhTPW8uZm9yd2FyZFJlZigoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuLHI9ZS5pbWFnZSxvPWUuaW1nQWZ0ZXJDb250ZW50LGk9dm9pZCAwIT09byYmbyxhPW1TKGUsZFMpO3JldHVybigwLCRlLmpzeHMpKHVTLHBTKHBTKHt9LGEpLHt9LHtyZWY6dCxjaGlsZHJlbjpbIWkmJigwLCRlLmpzeCkoU2IscFMoe30scikpLG4saSYmKDAsJGUuanN4KShTYixwUyh7fSxyKSldfSkpfSkpLGJTPW4oNTAwMDUpLHlTPWZ1bmN0aW9uKCl7dmFyIGU9KDAsVW0uaW5zdGFuY2UudXNlUHJvZ3Jlc3NJbmRpY2F0b3JTdHlsZXMpKCksdD1JdC5kZWZhdWx0Lmluc3RhbmNlLnN1cHBvcnRXaW5kb3dzU3R5bGVzLG49VGkoKSYmIWppKCkscj10P2Uuc2xpZGluZ0xpbmVBbmltYXRpb246ZS5tYXJjaGluZ0FudHNBbmltYXRpb247cmV0dXJuKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOnIscm9sZTpcInByb2dyZXNzYmFyXCIsXCJhcmlhLWxhYmVsXCI6XCJQbGVhc2Ugd2FpdFwiLGNoaWxkcmVuOlt0JiYoMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKGUuc3VibGluZSxlLmluYyl9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhlLnN1YmxpbmUsZS5kZWMpfSldfSksIXQmJihuPygwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHt9KSwoMCwkZS5qc3gpKFwiZGl2XCIse30pLCgwLCRlLmpzeCkoXCJkaXZcIix7fSksKDAsJGUuanN4KShcImRpdlwiLHt9KSwoMCwkZS5qc3gpKFwiZGl2XCIse30pXX0pOigwLCRlLmpzeCkoU2Ise3VybHM6cmIscm9sZTpcInByZXNlbnRhdGlvblwifSkpXX0pfSx2Uz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49VW0uaW5zdGFuY2Uscj1uLnVzZUNvbW1vblN0eWxlcyxvPW4udXNlUHJvZ3Jlc3NJbmRpY2F0b3JTdHlsZXMsaT1yKCksYT1vKCk7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2coaS5yb3csYS5wcm9ncmVzc0luZGljYXRvckNvbnRhaW5lciksXCJkYXRhLXRlc3RpZFwiOlwicHJvZ3Jlc3NJbmRpY2F0b3JDb250YWluZXJcIixjaGlsZHJlbjp0fSl9O2Z1bmN0aW9uIHdTKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBTUyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBTUyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gU1MoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgUFM9ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLHQ9ZS5wb3N0VXNlcm5hbWUsbj1lLmRlYnVnTW9kZVVybCxyPVVtLmluc3RhbmNlLGk9ci51c2VDb21tb25TdHlsZXMsYT1yLnVzZURlYnVnVHJhY2VTdHlsZXMsbD0oMCxvLnVzZUNvbnRleHQpKFp0KSxzPWwuZ2xvYmFsU3RhdGUsYz1sLmRpc3BhdGNoU3RhdGVDaGFuZ2UsdT1zLmRlYnVnSW5mby5kZWJ1Z01vZGVBY3RpdmUsZD1zLnVzZXIsZj13UygoMCxvLnVzZVN0YXRlKSghMSksMikscD1mWzBdLGc9ZlsxXSxtPXdTKCgwLG8udXNlU3RhdGUpKCExKSwyKSxoPW1bMF0sYj1tWzFdLHk9YSgpLHY9aSgpLHc9bm4oKSxTPSgwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbigpe2Moe3R5cGU6THQuVG9nZ2xlRGVidWdNb2RlfSl9KSxbY10pLFA9KDAsby51c2VNZW1vKSgoZnVuY3Rpb24oKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoe21vZGU6dT8wOjEsdXNlcjp0LnNhZmVIdG1sRXNjYXBlZFN0cmluZ3x8ZC5kaXNwbGF5VXNlcm5hbWUuc2FmZUh0bWxFc2NhcGVkU3RyaW5nfHxcIlwifSl9KSxbdSx0LnNhZmVIdG1sRXNjYXBlZFN0cmluZyxkLmRpc3BsYXlVc2VybmFtZS5zYWZlSHRtbEVzY2FwZWRTdHJpbmddKSx4PSgwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbigpe2lmKCFoKXt2YXIgZT1uZXcgRGF0ZTtiKCEwKSxnKCExKSwoMCxiUy5NVykobix7cHJvY2Vzc2luZ1N0YXJ0VGltZTplLGJvZHk6UCx0ZWxlbWV0cnlTdGF0ZTp3fSkudGhlbihTLChmdW5jdGlvbigpe2coITApfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGIoITEpfSkpfX0pLFtoLG4sUCx3LFNdKTtpZighbilyZXR1cm4gbnVsbDt2YXIgTz11P1wiRGlzYWJsZSBmbGFnZ2luZ1wiOlwiRW5hYmxlIGZsYWdnaW5nXCI7cmV0dXJuKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOnkudHJhY2VTZWN0aW9uLFwiZGF0YS10ZXN0aWRcIjpcImRlYnVnVHJhY2VcIixjaGlsZHJlbjpbKDAsJGUuanN4cykoXCJkaXZcIix7Y2hpbGRyZW46WygwLCRlLmpzeHMpKFwic3BhblwiLHtjbGFzc05hbWU6di5ib2xkLGNoaWxkcmVuOltcIkZsYWcgc2lnbi1pbiBlcnJvcnMgZm9yIHJldmlldzpcIixcIlx1MDBhMFwiXX0pLCgwLCRlLmpzeCkoXCJhXCIse2hyZWY6bixyb2xlOlwiYnV0dG9uXCIsb25DbGljazpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCkseCgpfSxcImFyaWEtbGFiZWxcIjpPLGNsYXNzTmFtZTp5LnRyYWNlTGluayxjaGlsZHJlbjpPfSldfSksaCYmKDAsJGUuanN4KShcImRpdlwiLHtjaGlsZHJlbjooMCwkZS5qc3gpKHlTLHt9KX0pLHAmJigwLCRlLmpzeCkoXCJkaXZcIix7cm9sZTpcImFsZXJ0XCIsY2xhc3NOYW1lOmN0LmtqLmVycm9yLGNoaWxkcmVuOlwiU29tZXRoaW5nIHdlbnQgd3JvbmcuXCJ9KSwoMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcImRlYnVnVHJhY2VEZXNjXCIsY2hpbGRyZW46XCJJZiB5b3UgcGxhbiBvbiBnZXR0aW5nIGhlbHAgZm9yIHRoaXMgcHJvYmxlbSwgZW5hYmxlIGZsYWdnaW5nIGFuZCB0cnkgdG8gcmVwcm9kdWNlIHRoZSBlcnJvciB3aXRoaW4gMjAgbWludXRlcy4gRmxhZ2dlZCBldmVudHMgbWFrZSBkaWFnbm9zdGljcyBhdmFpbGFibGUgYW5kIGFyZSByYWlzZWQgdG8gYWRtaW4gYXR0ZW50aW9uLlwifSldfSl9O2Z1bmN0aW9uIHhTKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBPUyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBPUyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gT1MoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgX1M9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kZWJ1Z0luZm8sbj1lLm9uRGVidWdDbG9zZUNsaWNrLHI9ZS5mb2N1c09uQ29weUxpbmssaT12b2lkIDAhPT1yJiZyLGE9SXQuZGVmYXVsdC5pbnN0YW5jZSxsPWEuc2Vzc2lvbklkLHM9YS5jb3JyZWxhdGlvbklkLGM9YS5zaG93Q29weURlYnVnRGV0YWlsc0xpbmssdT0oMCxVbS5pbnN0YW5jZS51c2VEZWJ1Z0RldGFpbHNCYW5uZXJTdHlsZXMpKCksZD14UygoMCxvLnVzZVN0YXRlKSghMSksMiksZj1kWzBdLHA9ZFsxXSxnPXQuZXJyb3JDb2RlLG09dC5lcnJvck1lc3NhZ2UsaD10LnRpbWVTdGFtcCxiPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLmlzV2lkZVZpZXcseT1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMubGF5b3V0VGVtcGxhdGU7dmFyIHY9U2codS5iYW5uZXIseT09PWN0Lmh4LlZlcnRpY2FsU3BsaXQ/dS5iYW5uZXJWZXJ0aWNhbFNwbGl0OlwiXCIsYj91LndpZGU6XCJcIiksdz0oMCxvLnVzZVJlZikobnVsbCksUz0oMCxvLnVzZVJlZikobnVsbCk7cmV0dXJuKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe2lmKGkpe3ZhciBlPW51bGwhPT0odD1udWxsPT13P3ZvaWQgMDp3LmN1cnJlbnQpJiZ2b2lkIDAhPT10P3Q6bnVsbD09Uz92b2lkIDA6Uy5jdXJyZW50O251bGw9PWV8fGUuZm9jdXMoKX12YXIgdH0pLFtpXSksKDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtdGVzdGlkXCI6XCJkZWJ1Z0RldGFpbHNCYW5uZXJcIixjbGFzc05hbWU6dixjaGlsZHJlbjooMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6dS50YWJsZVJvdyxjaGlsZHJlbjpbKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOnUudGFibGVDZWxsLGNoaWxkcmVuOltjJiYoMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6dS5oZWFkZXIsY2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7aWQ6XCJkZWJ1Z0RldGFpbHNIZWFkZXJcIixjbGFzc05hbWU6dS5oZWFkaW5nVGV4dCxyb2xlOlwiaGVhZGluZ1wiLFwiYXJpYS1sZXZlbFwiOjIsY2hpbGRyZW46XCJUcm91Ymxlc2hvb3RpbmcgZGV0YWlsc1wifSksKDAsJGUuanN4KShcImRpdlwiLHtjaGlsZHJlbjpcIklmIHlvdSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvciwgc2VuZCB0aGlzIGluZm8gdG8gdGhlbS5cIn0pLCgwLCRlLmpzeCkoXCJhXCIse2hyZWY6XCIjXCIsb25DbGljazpmdW5jdGlvbihlKXt2YXIgdCxuO2UucHJldmVudERlZmF1bHQoKSx0PVwiZGVidWdEZXRhaWxzVGV4dFwiLChuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpKSYmbFMobi5pbm5lclRleHQpLHAoITApfSxyb2xlOlwiYnV0dG9uXCIsY2xhc3NOYW1lOnUuY29weUxpbmssXCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJkZWJ1Z0RldGFpbHNIZWFkZXJcIixcImFyaWEtbGFiZWxcIjpcIkNvcHkgaW5mbyB0byBjbGlwYm9hcmRcIixyZWY6dyxjaGlsZHJlbjpcIkNvcHkgaW5mbyB0byBjbGlwYm9hcmRcIn0pLGYmJigwLCRlLmpzeHMpKFwic3BhblwiLHtpZDpcImRlYnVnRGV0YWlsc0NvcHlNZXNzYWdlXCIsY2xhc3NOYW1lOnUuZGV0YWlsc05vdGlmaWNhdGlvbixcImFyaWEtbGl2ZVwiOlwiYXNzZXJ0aXZlXCIsY2hpbGRyZW46WygwLCRlLmpzeCkoU2Ise3VybHM6R2gscm9sZTpcInByZXNlbnRhdGlvblwifSksKDAsJGUuanN4KShcInNwYW5cIix7cm9sZTpcImFsZXJ0XCIsY2xhc3NOYW1lOnUuZGV0YWlsc05vdGlmaWNhdGlvbixcImFyaWEtbGFiZWxcIjpcIkNvcGllZCB0cm91Ymxlc2hvb3RpbmcgaW5mbyB0byBjbGlwYm9hcmRcIixjaGlsZHJlbjpcIkNvcGllZFwifSldfSldfSksKDAsJGUuanN4cykoXCJkaXZcIix7aWQ6XCJkZWJ1Z0RldGFpbHNUZXh0XCIsY2xhc3NOYW1lOnUub3ZlcnJpZGVMdHIsY2hpbGRyZW46W2cmJigwLCRlLmpzeHMpKFwiZGl2XCIse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6dS5ib2xkLGNoaWxkcmVuOlwiRXJyb3IgQ29kZTogXCJ9KSwoMCwkZS5qc3gpKFwic3BhblwiLHtjaGlsZHJlbjpnfSldfSksbCYmKDAsJGUuanN4cykoXCJkaXZcIix7Y2hpbGRyZW46WygwLCRlLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTp1LmJvbGQsY2hpbGRyZW46XCJSZXF1ZXN0IElkOiBcIn0pLCgwLCRlLmpzeCkoXCJzcGFuXCIse2NoaWxkcmVuOmx9KV19KSwoMCwkZS5qc3hzKShcImRpdlwiLHtjaGlsZHJlbjpbKDAsJGUuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOnUuYm9sZCxjaGlsZHJlbjpcIkNvcnJlbGF0aW9uIElkOiBcIn0pLCgwLCRlLmpzeCkoXCJzcGFuXCIse2NoaWxkcmVuOnN9KV19KSwoMCwkZS5qc3hzKShcImRpdlwiLHtjaGlsZHJlbjpbKDAsJGUuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOnUuYm9sZCxjaGlsZHJlbjpcIlRpbWVzdGFtcDogXCJ9KSwoMCwkZS5qc3gpKFwic3BhblwiLHtcImRhdGEtdGVzdGlkXCI6XCJ0aW1lU3RhbXBcIixjaGlsZHJlbjpofSldfSksbSYmKDAsJGUuanN4cykoXCJkaXZcIix7Y2hpbGRyZW46WygwLCRlLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTp1LmJvbGQsY2hpbGRyZW46XCJNZXNzYWdlOiBcIn0pLCgwLCRlLmpzeCkoXCJzcGFuXCIse2NoaWxkcmVuOm19KV19KV19KSwoMCwkZS5qc3gpKFBTLHt9KV19KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NoaWxkcmVuOigwLCRlLmpzeCkoaFMse2ltYWdlOnt1cmxzOiRoLGFsdDpcIkNsb3NlIHRyb3VibGVzaG9vdGluZyBkZXRhaWxzXCJ9LGJ1dHRvbklkOlwiZXJyb3JCYW5uZXJDbG9zZVwiLGNsYXNzTmFtZTp1LmNsb3NlQnV0dG9uLGFyaWFMYWJlbDpcIkNsb3NlIHRyb3VibGVzaG9vdGluZyBkZXRhaWxzXCIsb25DbGljazpuLHJlZjpTfSl9KV19KX0pfTtmdW5jdGlvbiBDUyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4ga1MoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4ga1MoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIGtTKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIEFTLFRTPWZ1bmN0aW9uKGUpe3ZhciB0PSgwLG8udXNlUmVmKSgpLG49Q1MoKDAsby51c2VTdGF0ZSkoITEpLDIpLHI9blswXSxpPW5bMV07KDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3JldHVybiByP3QuY3VycmVudDoodC5jdXJyZW50PWUoKSxpKCEwKSxmdW5jdGlvbigpe30pfSksW2Uscl0pfSxFUz1uZXcgTWFwO2Z1bmN0aW9uIGpTKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBJUyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9qUyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0xTKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpqUyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBMUyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gRFMoZSx0KXtpZih0LnR5cGU9PT1BUy5TZXRIaXN0b3J5SW5kZXhBY3Rpb24pcmV0dXJuIElTKElTKHt9LGUpLHt9LHtoaXN0b3J5SW5kZXg6dC5wYXlsb2FkfSk7dGhyb3cgbmV3IEVycm9yKFwiSGlzdG9yeVJlZHVjZXIgcmVjZWl2ZWQgdW5leHBlY3RlZCBhY3Rpb24gXCIuY29uY2F0KHQudHlwZSkpfWZ1bmN0aW9uIE5TKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBSUyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBSUyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gUlMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn0hZnVuY3Rpb24oZSl7ZVtlLlNldEhpc3RvcnlJbmRleEFjdGlvbj0wXT1cIlNldEhpc3RvcnlJbmRleEFjdGlvblwifShBU3x8KEFTPXt9KSk7dmFyIEJTPXtoaXN0b3J5SW5kZXg6MH0sVVM9KDAsby5jcmVhdGVDb250ZXh0KSh7aGlzdG9yeVN0YXRlOkJTLGRpc3BhdGNoU3RhdGVDaGFuZ2U6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJIaXN0b3J5Q29udGV4dCBub3QgaW5pdGlhbGl6ZWRcIil9fSksRlM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbml0aWFsU3RhdGUsbj1lLmNoaWxkcmVuLHI9TlMoKDAsby51c2VSZWR1Y2VyKShEUyx0KSwyKSxpPXJbMF0sYT1yWzFdLGw9KDAsby51c2VNZW1vKSgoZnVuY3Rpb24oKXtyZXR1cm57aGlzdG9yeVN0YXRlOmksZGlzcGF0Y2hTdGF0ZUNoYW5nZTphfX0pLFtpXSk7cmV0dXJuKDAsJGUuanN4KShVUy5Qcm92aWRlcix7dmFsdWU6bCxjaGlsZHJlbjpufSl9O3ZhciBNUyx6Uz1mdW5jdGlvbigpe3ZhciBlPU9lKCksdD0oMCxvLnVzZUNvbnRleHQpKFp0KS5kaXNwYXRjaFN0YXRlQ2hhbmdlLG49KDAsby51c2VDb250ZXh0KShVUykscj1uLmhpc3RvcnlTdGF0ZS5oaXN0b3J5SW5kZXgsaT1uLmRpc3BhdGNoU3RhdGVDaGFuZ2U7cmV0dXJuIGZ1bmN0aW9uKG4sbyl7dmFyIGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0mJmFyZ3VtZW50c1syXSxsPWFyZ3VtZW50cy5sZW5ndGg+Mz9hcmd1bWVudHNbM106dm9pZCAwLHM9LTE9PT1vfHxhP1wiYmFja1wiOlwiZm9yd2FyZFwiLGM9XCJcIjtcInN0cmluZ1wiPT10eXBlb2YgbyYmKGM9byksdCh7dHlwZTpMdC5CZWdpbk5hdmlnYXRlLHNvdXJjZTpuLGRlc3RpbmF0aW9uOmMsZGlzcGxheU9wdGlvbnM6e25hdmlnYXRpb25EaXJlY3Rpb246c319KSxvIGluc3RhbmNlb2YgTnVtYmVyP2Uobyk6Q3cobyk/ZShBdyhvKSxsKTplKG8sbCksd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlJiYoaShcImJhY2tcIj09PXM/e3R5cGU6QVMuU2V0SGlzdG9yeUluZGV4QWN0aW9uLHBheWxvYWQ6ci0xfTp7dHlwZTpBUy5TZXRIaXN0b3J5SW5kZXhBY3Rpb24scGF5bG9hZDpyKzF9KSxudWxsIT1sJiZsLnJlcGxhY2U/d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHIsXCJcIik6d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHIsXCJcIikpfX0sSFM9ZnVuY3Rpb24oKXtyZXR1cm5cImRlZmF1bHRcIiE9PXhlKCkua2V5fSxWUz1mdW5jdGlvbihlKXt3aW5kb3cubG9jYXRpb24uYXNzaWduKGUpfSxXUz1mdW5jdGlvbihlKXt3aW5kb3cubG9jYXRpb24ucmVwbGFjZShlKX0sR1M9ZnVuY3Rpb24oZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTtyZXR1cm4gdD9WUyhlKTpXUyhlKX0sJFM9ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLHQ9ZS5hY3RpdmVGbGF2b3Isbj1lLnRlbGVtZXRyeSxyPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLGk9ci5hY3RpdmVWaWV3LGE9ci5hY3RpdmVGbG93LGw9UnQobix7YWN0aXZlVmlldzppLGFjdGl2ZUZsb3c6YSxhY3RpdmVGbGF2b3I6dH0pLmxvZ1NlcnZpY2VEaWFnRXZlbnQ7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07cmV0dXJuIGwoe21ldHJpY05hbWU6cm4uUmVkaXJlY3QsbWV0cmljVmFsdWU6KDAsc3QuS2spKGUpfSksR1MoZSx0KX19OyFmdW5jdGlvbihlKXtlLk5vbmU9XCJcIixlLkFjY291bnRTZWN1cml0eUluZm9MZWFybk1vcmU9XCJBY2NvdW50U2VjdXJpdHlJbmZvX0xlYXJuTW9yZVwiLGUuQWNjb3VudFRyYW5zZmVyRXJyb3JPaz1cIkFjY291bnRUcmFuc2ZlckVycm9yX09rXCIsZS5BY2NvdW50VHJhbnNmZXJPdGNDYW5jZWxsZWQ9XCJBY2NvdW50VHJhbnNmZXJfT3RjQ2FuY2VsbGVkXCIsZS5BY2NvdW50VHJhbnNmZXJRckNhbmNlbGxlZD1cIkFjY291bnRUcmFuc2Zlcl9RckNhbmNlbGxlZFwiLGUuQWNjb3VudFRyYW5zZmVyUXJDb2RlU2Nhbm5lZD1cIkFjY291bnRUcmFuc2Zlcl9RckNvZGVTY2FubmVkXCIsZS5BY2NvdW50VHJhbnNmZXJRclNraXBwZWQ9XCJBY2NvdW50VHJhbnNmZXJfUXJTa2lwcGVkXCIsZS5BY3dBZGRFbWFpbEJhY2tDbGlja2VkPVwiQWN3X0FkZEVtYWlsX0JhY2tDbGlja2VkXCIsZS5BY3dBZGRFbWFpbENhbmNlbENsaWNrZWQ9XCJBY3dfQWRkRW1haWxfQ2FuY2VsQ2xpY2tlZFwiLGUuQWN3QWRkRW1haWxQYWdlTG9hZD1cIkFjd19BZGRFbWFpbF9QYWdlTG9hZFwiLGUuQWN3QWRkRW1haWxQcml2YWN5QW5kQ29va2llc0NsaWNrZWQ9XCJBY3dfQWRkRW1haWxfUHJpdmFjeUFuZENvb2tpZXNDbGlja2VkXCIsZS5BY3dBZGRFbWFpbFZlcmlmaWNhdGlvbkNvbXBsZXRlPVwiQWN3X0FkZEVtYWlsX1ZlcmlmaWNhdGlvbkNvbXBsZXRlXCIsZS5BY3dBZGRQaG9uZUJhY2tDbGlja2VkPVwiQWN3X0FkZFBob25lX0JhY2tDbGlja2VkXCIsZS5BY3dBZGRQaG9uZUNhbmNlbENsaWNrZWQ9XCJBY3dfQWRkUGhvbmVfQ2FuY2VsQ2xpY2tlZFwiLGUuQWN3QWRkUGhvbmVQYWdlTG9hZD1cIkFjd19BZGRQaG9uZV9QYWdlTG9hZFwiLGUuQWN3QWRkUGhvbmVQcml2YWN5QW5kQ29va2llc0NsaWNrZWQ9XCJBY3dfQWRkUGhvbmVfUHJpdmFjeUFuZENvb2tpZXNDbGlja2VkXCIsZS5BY3dBZGRQaG9uZVZlcmlmaWNhdGlvbkNvbXBsZXRlPVwiQWN3X0FkZFBob25lX1ZlcmlmaWNhdGlvbkNvbXBsZXRlXCIsZS5BY3dBZGRQaG9uZUdvVG9FbWFpbENsaWNrZWQ9XCJBY3dfQWRkUGhvbmVfR29Ub0VtYWlsQ2xpY2tlZFwiLGUuQWN3QWRkUGhvbmVCbG9ja2VkQ291bnRyeVNlbGVjdGVkPVwiQWN3X0FkZFBob25lX0Jsb2NrZWRDb3VudHJ5U2VsZWN0ZWRcIixlLkFsaWFzQWNjcnVhbENhbmNlbD1cIkFsaWFzQWNjcnVhbF9DYW5jZWxcIixlLkFsaWFzQWNjcnVhbFNraXA9XCJBbGlhc0FjY3J1YWxfU2tpcFwiLGUuQWxpYXNBY2NydWFsU3VibWl0PVwiQWxpYXNBY2NydWFsX1N1Ym1pdFwiLGUuQWxpYXNBY2NydWFsU3VnZ2VzdGlvbnM9XCJBbGlhc0FjY3J1YWxfU3VnZ2VzdGlvbnNcIixlLkFwcFN0b3JlUmVkaXJlY3RTdWJtaXQ9XCJBcHBTdG9yZVJlZGlyZWN0X1N1Ym1pdFwiLGUuQmVnaW5OYXZpZ2F0aW9uPVwiQmVnaW5OYXZpZ2F0aW9uXCIsZS5CZW5lZml0c1ZpZXdCYWNrQ2xpY2tlZD1cIkJlbmVmaXRzVmlld0JhY2tDbGlja2VkXCIsZS5CZW5lZml0c1ZpZXdOZXh0Q2xpY2tlZD1cIkJlbmVmaXRzVmlld05leHRDbGlja2VkXCIsZS5DaGFsbGVuZ2VCYWNrPVwiQ2hhbGxlbmdlQmFja1wiLGUuQ2hhbGxlbmdlRGF0YU1pc3Npbmc9XCJDaGFsbGVuZ2VEYXRhTWlzc2luZ1wiLGUuQ2hhbGxlbmdlVmFsaWRhdGU9XCJDaGFsbGVuZ2VWYWxpZGF0ZVwiLGUuRG9tYWluU2VsZWN0Q2xpY2tlZD1cIkRvbWFpblNlbGVjdF9DbGlja2VkXCIsZS5LbXNpQWNjZXB0ZWQ9XCJLbXNpX0FjY2VwdGVkXCIsZS5LbXNpRGVjbGluZWQ9XCJLbXNpX0RlY2xpbmVkXCIsZS5SZXNldFBhc3N3b3JkU2lnbkluTmFtZUNhbmNlbENsaWNrZWQ9XCJSZXNldFBhc3N3b3JkU2lnbkluTmFtZUNhbmNlbENsaWNrZWRcIixlLlJlc2V0UGFzc3dvcmRTaWduSW5OYW1lU3VibWl0Q2xpY2tlZD1cIlJlc2V0UGFzc3dvcmRTaWduSW5OYW1lU3VibWl0Q2xpY2tlZFwiLGUuUmVzZXRQd2RBYnVzZUJsb2NrQ2FuY2VsPVwiUmVzZXRQd2RfQWJ1c2VCbG9ja19DYW5jZWxcIixlLlJlc2V0UHdkQWRkQ29udGFjdEVtYWlsQ2FuY2VsPVwiUmVzZXRQd2RfQWRkQ29udGFjdEVtYWlsX0NhbmNlbFwiLGUuUmVzZXRQd2RBZGRDb250YWN0RW1haWxTdWJtaXQ9XCJSZXNldFB3ZF9BZGRDb250YWN0RW1haWxfU3VibWl0XCIsZS5SZXNldFB3ZEFkZFB3ZENhbmNlbD1cIlJlc2V0UHdkX0FkZFB3ZF9DYW5jZWxcIixlLlJlc2V0UHdkQWRkUHdkU3VibWl0PVwiUmVzZXRQd2RfQWRkUHdkX1N1Ym1pdFwiLGUuUmVzZXRQd2RDYXB0Y2hhQ2FuY2VsPVwiUmVzZXRQd2RfQ2FwdGNoYV9DYW5jZWxcIixlLlJlc2V0UHdkQ2FwdGNoYVN1Ym1pdD1cIlJlc2V0UHdkX0NhcHRjaGFfU3VibWl0XCIsZS5SZXNldFB3ZEVudGVyUmVjb3ZlcnlDb2RlQ2FuY2VsPVwiUmVzZXRQd2RfRW50ZXJSZWNvdmVyeUNvZGVfQ2FuY2VsXCIsZS5SZXNldFB3ZEVudGVyUmVjb3ZlcnlDb2RlU3VibWl0PVwiUmVzZXRQd2RfRW50ZXJSZWNvdmVyeUNvZGVfU3VibWl0XCIsZS5SZXNldFB3ZE5ld1B3ZEJhbm5lZFBhc3N3b3JkPVwiUmVzZXRQd2RfTmV3UHdkX0Jhbm5lZFBhc3N3b3JkXCIsZS5SZXNldFB3ZE5ld1B3ZENhbmNlbD1cIlJlc2V0UHdkX05ld1B3ZF9DYW5jZWxcIixlLlJlc2V0UHdkTmV3UHdkUGFzc3dvcmRzRG9udE1hdGNoPVwiUmVzZXRQd2RfTmV3UHdkX1Bhc3N3b3Jkc0RvbnRNYXRjaFwiLGUuUmVzZXRQd2ROZXdQd2RTdWJtaXQ9XCJSZXNldFB3ZF9SZXNldFlvdXJQYXNzd29yZF9TdWJtaXRcIixlLlJlc2V0UHdkUHJvb2ZQaWNrZXJBbHJlYWR5SGF2ZUNvZGU9XCJSZXNldFB3ZF9Qcm9vZlBpY2tlcl9BbHJlYWR5SGF2ZUNvZGVcIixlLlJlc2V0UHdkUHJvb2ZQaWNrZXJDYW5jZWw9XCJSZXNldFB3ZF9Qcm9vZlBpY2tlcl9DYW5jZWxcIixlLlJlc2V0UHdkUHJvb2ZQaWNrZXJMb3N0UHJvb2ZzPVwiUmVzZXRQd2RfUHJvb2ZQaWNrZXJfTG9zdFByb29mc1wiLGUuUmVzZXRQd2RQcm9vZlBpY2tlclNob3dNb3JlT3B0aW9ucz1cIlJlc2V0UHdkX1Byb29mUGlja2VyX1Nob3dNb3JlT3B0aW9uc1wiLGUuUmVzZXRQd2RQcm9vZlBpY2tlclN1Ym1pdD1cIlJlc2V0UHdkX1Byb29mUGlja2VyX1N1Ym1pdFwiLGUuUmVzZXRQd2RTZXRTaW5nbGVQd2RDYW5jZWw9XCJSZXNldFB3ZF9TZXRTaW5nbGVQd2RfQ2FuY2VsXCIsZS5SZXNldFB3ZFNldFNpbmdsZVB3ZFN1Ym1pdD1cIlJlc2V0UHdkX1NldFNpbmdsZVB3ZF9TdWJtaXRcIixlLlJlc2V0UHdkU2V0dXBBdXRoZW50aWNhdG9yU2tpcD1cIlJlc2V0UHdkX1NldHVwQXV0aGVudGljYXRvcl9Ta2lwXCIsZS5SZXNldFB3ZFNldHVwQXV0aGVudGljYXRvclN1Ym1pdD1cIlJlc2V0UHdkX1NldHVwQXV0aGVudGljYXRvcl9TdWJtaXRcIixlLlJlc2V0UHdkU2t5cGVHb29kTmV3c0NhbmNlbD1cIlJlc2V0UHdkX1NreXBlR29vZE5ld3NfQ2FuY2VsXCIsZS5SZXNldFB3ZFNreXBlR29vZE5ld3NTdWJtaXQ9XCJSZXNldFB3ZF9Ta3lwZUdvb2ROZXdzX1N1Ym1pdFwiLGUuUmVzZXRQd2RTdW1tYXJ5U2lnbkluPVwiUmVzZXRQd2RfU3VtbWFyeV9TaWduSW5cIixlLlJlc2V0UHdkVmVyaWZ5Q29kZUFub3RoZXJPcHRpb249XCJSZXNldFB3ZF9WZXJpZnlDb2RlX0Fub3RoZXJPcHRpb25cIixlLlJlc2V0UHdkVmVyaWZ5Q29kZUNhbmNlbD1cIlJlc2V0UHdkX1ZlcmlmeUNvZGVfQ2FuY2VsXCIsZS5SZXNldFB3ZFZlcmlmeUNvZGVFbmZvcmNlVGZhPVwiUmVzZXRQd2RfVmVyaWZ5Q29kZV9FbmZvcmNlVGZhXCIsZS5SZXNldFB3ZFZlcmlmeUNvZGVHb0JhY2s9XCJSZXNldFB3ZF9WZXJpZnlDb2RlX0dvQmFja1wiLGUuUmVzZXRQd2RWZXJpZnlDb2RlU3VibWl0PVwiUmVzZXRQd2RfVmVyaWZ5Q29kZV9TdWJtaXRcIixlLlJlc2V0UHdkVmVyaWZ5Q29udGFjdEVtYWlsQ2FuY2VsPVwiUmVzZXRQd2RfVmVyaWZ5Q29udGFjdEVtYWlsX0NhbmNlbFwiLGUuUmVzZXRQd2RWZXJpZnlDb250YWN0RW1haWxTdWJtaXQ9XCJSZXNldFB3ZF9WZXJpZnlDb250YWN0RW1haWxfU3VibWl0XCIsZS5SZXNldFB3ZFZlcmlmeUlkZW50aXR5U3VibWl0PVwiUmVzZXRQd2RfVmVyaWZ5SWRlbnRpdHlfU3VibWl0XCIsZS5TaWduaW5PcHRpb25zQ2xpY2tlZD1cIlNpZ25pbl9PcHRpb25zQ2xpY2tlZFwiLGUuU2lnbnVwRm9yTXlDaGlsZENsaWNrZWQ9XCJTaWdudXBfRm9yTXlDaGlsZENsaWNrZWRcIixlLlNpZ251cEZvck15c2VsZkNsaWNrZWQ9XCJTaWdudXBfRm9yTXlzZWxmQ2xpY2tlZFwiLGUuU2lnbnVwTGlua0NsaWNrZWQ9XCJTaWdudXBfTGlua0NsaWNrZWRcIixlLlNpZ251cF9DaGluYVBpcGxDb25zZW50PVwiU2lnbnVwX0NoaW5hUElQTENvbnNlbnRcIixlLlNzb0NvbnNlbnRBY2NlcHRlZD1cIlNzb0NvbnNlbnRfQWNjZXB0ZWRcIixlLlNzb0NvbnNlbnREZWNsaW5lZD1cIlNzb0NvbnNlbnRfRGVjbGluZWRcIixlLlNzb0NvbnNlbnRMZWFybk1vcmU9XCJTc29Db25zZW50X0xlYXJuTW9yZVwiLGUuVHJhbnNmZXJMb2dpbkRvbmU9XCJUcmFuc2ZlckxvZ2luX0RvbmVcIixlLlBhcmVudGFsSGFuZG92ZXJWaWV3TGVhcm5Nb3JlQ2xpY2tlZD1cIlBhcmVudGFsSGFuZG92ZXJfTGVhcm5Nb3JlXCIsZS5QYXJlbnRhbEhhbmRvdmVyVmlld1NpZ25JbkNsaWNrZWQ9XCJQYXJlbnRhbEhhbmRvdmVyX1BhcmVudFNpZ25JblwiLGUuUGluQ2hhbmdlU3VibWl0PVwiUGluQ2hhbmdlX1N1Ym1pdFwiLGUuVXNlcm5hbWVDb2xsZWN0aW9uU3dpdGNoSW5wdXRUeXBlQ2xpY2tlZD1cIlVzZXJuYW1lQ29sbGVjdGlvbl9Td2l0Y2hJbnB1dFR5cGVcIixlLlVzZXJuYW1lQ29sbGVjdGlvbklucHV0VHlwZVN1Ym1pdD1cIlVzZXJuYW1lQ29sbGVjdGlvbl9JbnB1dFR5cGVfU3VibWl0XCJ9KE1TfHwoTVM9e30pKTt2YXIgS1MscVM9XCJta3RcIixRUz1cImxjXCIsWFM9XCJ1c2VybmFtZVwiLFlTPVwid2N0eFwiLFpTPVwiY2JjeHRcIixKUz1cImNvbW1hbmRcIjshZnVuY3Rpb24oZSl7ZVtlLkRlZmF1bHQ9MF09XCJEZWZhdWx0XCIsZVtlLlNreXBlTW92ZUFsaWFzPTFdPVwiU2t5cGVNb3ZlQWxpYXNcIixlW2UuQ29tYmluZWRTaWduaW5TaWdudXA9Ml09XCJDb21iaW5lZFNpZ25pblNpZ251cFwiLGVbZS5Db21iaW5lZFNpZ25pblNpZ251cERlZmF1bHRUaXRsZT0zXT1cIkNvbWJpbmVkU2lnbmluU2lnbnVwRGVmYXVsdFRpdGxlXCIsZVtlLlJlbW90ZUNvbm5lY3RMb2dpbj00XT1cIlJlbW90ZUNvbm5lY3RMb2dpblwiLGVbZS5Db21iaW5lZFNpZ25pblNpZ251cFYyPTVdPVwiQ29tYmluZWRTaWduaW5TaWdudXBWMlwiLGVbZS5Db21iaW5lZFNpZ25pblNpZ251cFYyV2VsY29tZVRpdGxlPTZdPVwiQ29tYmluZWRTaWduaW5TaWdudXBWMldlbGNvbWVUaXRsZVwifShLU3x8KEtTPXt9KSk7dmFyIGVQPTAsdFA9MSxuUD0yLHJQPTMsb1A9NCxpUD01LGFQPTcsbFA9OCxzUD0xMCxjUD0xMix1UD0xMyxkUD0yNCxmUD0yNixwUD00MSxnUD00NCxtUD01MixoUD01NSxiUD04MCx5UD0xZTMsdlA9NSx3UD02LFNQPTksUFA9MTAseFA9MTEsT1A9MTMsX1A9MTQsQ1A9Mzcsa1A9MzgsQVA9NDAsVFA9NDIsRVA9NDcsalA9NDgsSVA9NDksTFA9NjIsRFA9MTAyLE5QPTExMSxSUD0xMTQsQlA9MTE1LFVQPTEyMSxGUD0xMjksTVA9e1NfT0s6XCIwXCIsSW52YWxpZFJlYWxtRGlzY0xvZ2luOjEwLFVzZXJuYW1lSW52YWxpZDoxZTMsUGFzc3dvcmRFbXB0eToxMDAxLEhJUEVtcHR5OjEwMDIsQWx0RW1haWxJbnZhbGlkOjEwMDUsUGhvbmVJbnZhbGlkOjEwMDYsU0FDb250YWluc05hbWU6MTAwNyxPVENFbXB0eToxMDA5LE9UQ0ludmFsaWQ6MTAxMCxOb3RFbm91Z2hQcm9vZnM6MTAxMyxQaG9uZUVtcHR5OjEwMTUsRmVkVXNlcjoxMDE2LEZlZFVzZXJDb25mbGljdDoxMDE3LEZlZFVzZXJJbnZpdGVCbG9ja2VkOjEwMTgsRW1wdHlGaWVsZHM6MTAyMCxQaG9uZUhhc1NwZWNpYWxDaGFyczoxMDIxLEF1dG9WZXJpZnlOb0NvZGVTZW50OjEwMjIsUHJvb2ZDb25maXJtYXRpb25FbXB0eToxMDIzLFByb29mQ29uZmlybWF0aW9uSW52YWxpZDoxMDI0LFRPVFBJbnZhbGlkOjEwMjUsU2Vzc2lvbk5vdEFwcHJvdmVkOjEwMjYsUGhvbmVOdW1iZXJJbnZhbGlkOjEwMjcsUGhvbmVGb3JtYXR0aW5nSW52YWxpZDoxMDI4LFBvbGxpbmdUaW1lZE91dDoxMDI5LFNlbmROb3RpZmljYXRpb25GYWlsZWQ6MTAzMCxTZXJ2ZXJfTWVzc2FnZU9ubHk6OTk5OSxQUF9FX0RCX01FTUJFUkRPRVNOT1RFWElTVDpcIkNGRkZGQzE1XCIsUFBfRV9FWENMVURFRDpcIjgwMDQxMDEwXCIsUFBfRV9NRU1CRVJfTE9DS0VEOlwiODAwNDEwMTFcIixQUF9FX0JBRF9QQVNTV09SRDpcIjgwMDQxMDEyXCIsUFBfRV9NSVNTSU5HX01FTUJFUk5BTUU6XCI4MDA0MTAzMVwiLFBQX0VfTUlTU0lOR19QQVNTV09SRDpcIjgwMDQxMDMyXCIsUFBfRV9GRURFUkFUSU9OX0lOTElORUxPR0lOX0RJU0FMTE9XRUQ6XCI4MDA0NzhBQ1wiLFBQX0VfUEVfUlVMRUZBTFNFOlwiODAwNDQ5MENcIixQUF9FX01PQklMRUNSRURTX1BIT05FTlVNQkVSX0JMQU5LOlwiODAwNDU4MDFcIixQUF9FX01PQklMRUNSRURTX1BIT05FTlVNQkVSX1RPT1NIT1JUOlwiODAwNDU4MDZcIixQUF9FX01PQklMRUNSRURTX1BIT05FTlVNQkVSX1RPT0xPTkc6XCI4MDA0NTgwN1wiLFBQX0VfTU9CSUxFQ1JFRFNfUEhPTkVOVU1CRVJfSU5WQUxJRDpcIjgwMDQ1ODAwXCIsUFBfRV9OQU1FX0JMQU5LOlwiODAwNDExMDBcIixQUF9FX0VNQUlMX0lOQ09NUExFVEU6XCI4MDA0MTEwRFwiLFBQX0VfRU1BSUxfSU5WQUxJRDpcIjgwMDQxMTBCXCIsUFBfRV9OQU1FX1RPT19TSE9SVDpcIjgwMDQxMTAxXCIsUFBfRV9OQU1FX0lOVkFMSUQ6XCI4MDA0MTEwM1wiLFBQX0VfSU5WQUxJREFSRzpcIjgwMDQ4Mzg4XCIsUFBfRV9TQV9UT09TSE9SVDpcIjgwMDQxMTIwXCIsUFBfRV9TQV9UT09MT05HOlwiODAwNDExMjFcIixQUF9FX0lOVkFMSURfUEhPTkVOVU1CRVI6XCI4MDA0MTEzRlwiLFBQX0VfU0VDUkVUUV9DT05UQUlOU19TRUNSRVRBOlwiODAwNDExNjVcIixQUF9FX1NFQ1JFVEFfQ09OVEFJTlNfU0VDUkVUUTpcIjgwMDQxMTdEXCIsUFBfRV9TQV9DT05UQUlOU19NRU1CRVJOQU1FOlwiODAwNDExNkFcIixQUF9FX1NUUk9OR1BST0NFU1NfQUxURU1BSUxTQU1FQVNNQUlMQk9YOlwiODAwNDlDMkRcIixQUF9FX0VNQUlMX1JJR0hUX1RPT19MT05HOlwiODAwNDExMENcIixQUF9FX05BTUVfVE9PX0xPTkc6XCI4MDA0MTEwMlwiLFBQX0VfQUxJQVNfQVVUSF9OT1RQRVJNSVRURUQ6XCI4MDA0Nzg4QlwiLFBQX0VfVE9UUF9JTlZBTElEOlwiODAwNDlDMzRcIixQUF9FX09MRF9TS1lQRV9QQVNTV09SRDpcIjgwMDQzNTU3XCIsUFBfRV9PVFRfREFUQV9JTlZBTElEOlwiODAwNDM0OEZcIixQUF9FX09UVF9BTFJFQURZX0NPTlNVTUVEOlwiODAwNDM0OTBcIixQUF9FX09UVF9JTlZBTElEX1BVUlBPU0U6XCI4MDA0MzQ5NlwiLFBQX0VfUFBTQV9SUFRfTk9UT0FERFJFU1M6XCI4MDA0ODEyMFwiLFBQX0VfU1RST05HUFJPQ0VTU19CQURERVZJQ0VOQU1FOlwiODAwNDlDMjJcIixQUF9FX0lOTElORUxPR0lOX0lOVkFMSURfU01TOlwiODAwNDM0RTFcIixQUF9FX0lOTElORUxPR0lOX0lOVkFMSURfQUxUOlwiODAwNDM0RTJcIixQUF9FX1BSRVZJT1VTX1BBU1NXT1JEOlwiODAwNDEwMTNcIixQUF9FX0hJUF9WQUxJREFUSU9OX1dST05HOlwiODAwNDU1MDVcIixQUF9FX0hJUF9WQUxJREFUSU9OX0VSUk9SX0ZBVEFMOlwiODAwNDU1MzdcIixQUF9FX0hJUF9WQUxJREFUSU9OX0VSUk9SX1VOQVVUSEVOVElDQVRFRDpcIjgwMDQ1NTM4XCIsUFBfRV9ISVBfVkFMSURBVElPTl9FUlJPUl9PVEhFUjpcIjgwMDQ1NTM5XCIsUFBfRV9TUV9DT05UQUlOU19QQVNTV09SRDpcIjgwMDQzNDFFXCIsUFBfRV9TQV9DT05UQUlOU19QQVNTV09SRDpcIjgwMDQzNDFDXCIsUFBfRV9TQV9DT05UQUlORURfSU5fUEFTU1dPUkQ6XCI4MDA0MzQxRFwiLFBQX0VfTElCUEhPTkVOVU1CRVJJTlRFUk9QX05VTUJFUlBBUlNFX0VYQ0VQVElPTjpcIjgwMDQzNTEwXCIsUFBfRV9TVFJPTkdQUk9DRVNTX0VNQUlMX0hBU19NT0JJTEVfRE9NQUlOOlwiODAwNDlDMzNcIixQUF9FX1NUUk9OR1BST0NFU1NfTVhBTElBU19OT1RBTExPV0VEOlwiODAwNDlDMjNcIixQUF9FX0lOVkFMSURfTUVNQkVSTkFNRTpcIjgwMDQxMDM0XCIsUFBfRV9TQV9UT09fTUFOWV9DQUNIRV9TRVNTSU9OUzpcIjgwMDRBMDBDXCIsUFBfRV9JTlRFUkZBQ0VfRElTQUJMRUQ6XCI4MDA0MzQ0OFwiLFBQX0VfQVNTT0NJQVRFX0RVUExJQ0FURV9BQ0NPVU5UOlwiODAwNDM1MzRcIixQUF9FX09BVVRIX1JFTU9URV9DT05ORUNUX1VTRVJfQ09ERV9NSVNTSU5HX09SX0lOVkFMSUQ6XCI4MDA0NzhDN1wiLFBQX0VfTE9HSU5fTk9QQV9VU0VSX1BBU1NXT1JEX1JFUVVJUkVEOlwiODAwNDc4Q0VcIixQUF9FX0lEUF9MSU5LRURJTl9CSU5ESU5HX05PVF9BTExPV0VEOlwiODAwNDc4RDVcIixQUF9FX0lEUF9HT09HTEVfQklORElOR19OT1RfQUxMT1dFRDpcIjgwMDQ3OEQ2XCIsUFBfRV9JRFBfR0lUSFVCX0JJTkRJTkdfTk9UX0FMTE9XRUQ6XCI4MDA0NzhEN1wiLFBQX0VfSURQX0JJTkRJTkdfRVhJU1RTX1NBTVNVTkc6XCI4MDA0NDUzRVwiLFBQX0VfTk9UX0VNQUlMX0lOUFVUOlwiODAwNDEwMkZcIixQUF9FX0lEUF9VTklRVUVJRF9FWElTVFNfU0FNU1VORzpcIjgwMDQ0NTNGXCIsUFBfRV9SRUFMTV9OT1RfRkVERVJBVEVEOlwiODAwNDM0MzFcIixQUF9FX1NSVkNSWVBUX0VYUElSRURfQkxPQjpcIjgwMDQ2NTAxXCIsUFBfRV9UT09NQU5ZUkVRVUVTVFM6XCI4MDA0MTAwMlwiLFBQX0VfTk9UX09WRVJfU1NMOlwiODAwNDEwMTZcIixQUF9FX1JFU0VSVkVEX1VTRVJOQU1FOlwiODAwNDc4NWVcIixQUF9FX0ZFREVSQVRJT05fV0xJRExPR0lOX0RJU0FMTE9XRUQ6XCI4MDA0Nzg2MFwiLFBQX0VfQUxJQVNfTU9CSUxFX0FVVEhfRElTQUJMRUQ6XCI4MDA0Nzg4MVwiLFBQX0VfQUxJQVNfRVZJQ1RFRDpcIjgwMDQ3ODc5XCIsUFBfRV9BTElBU19BVVRIX0RJU0FCTEVEOlwiODAwNDc4ODBcIixQUF9FX0FMSUFTX0FVVEhfQ09MTElTSU9OOlwiODAwNDc4OGNcIixQUF9FX05HQ19MT0dJTl9OT05DRV9FWFBJUkVEOlwiODAwNEEwOEFcIixQUF9FX05HQ19MT0dJTl9LRVlfTk9UX0ZPVU5EOlwiODAwNEEwODhcIixQUF9FX05HQ19LRVlfRElTQUJMRUQ6XCI4MDA0QTA5M1wifSx6UD17ZGlzYWJsZURlc2t0b3BTc29QcmVmZXJyZWRDcmVkOiEwLGRpc2FibGVBdXRvU2VuZDohMCxpc1Bvc3RSZXF1ZXN0OiEwfSxIUD0yO2Z1bmN0aW9uIFZQKGUpe3ZhciB0PSgwLHN0LmZ5KShlKTtpZih0LmNoYXJBdCgwKT5cIn5cInx8LTEhPT10LmluZGV4T2YoXCIgXCIpKXJldHVybiExO3ZhciBuPXQuaW5kZXhPZihcIkBcIik7aWYoLTE9PT1ufHwtMT09PWUuaW5kZXhPZihcIi5cIixuKSlyZXR1cm4hMTt2YXIgcj10LnNwbGl0KFwiQFwiKTtpZihyLmxlbmd0aD4yfHxyWzBdLmxlbmd0aDwxfHxyWzFdLmxlbmd0aDwyKXJldHVybiExO3JldHVybiEhdC5tYXRjaCgvXltcXHgyMS1cXHg3RV0rJC8pfWZ1bmN0aW9uIFdQKGUpe3JldHVybiEhKDAsc3QuZnkpKGUpLm1hdGNoKC9eW2EtekEtWl1bYS16QS1aMC05LixcXC1fOiddezAsMTI4fSQvKX1mdW5jdGlvbiBHUChlKXt2YXIgdD1lLnJlcGxhY2UoL1xcRCsvZyxcIlwiKTtyZXR1cm4gdC5sZW5ndGg+PTQmJnQubGVuZ3RoPD01MH12YXIgJFAsS1A9ZnVuY3Rpb24oZSx0LG4pe2lmKCFWUChlKSlyZXR1cm4gZTt2YXIgcj0oMCxzdC5meSkoZSkuc3BsaXQoXCJAXCIpWzFdLG89bj9cIkBcIjpcIlwiO3JldHVybiB0P28rci5zbGljZSgwLHIubGFzdEluZGV4T2YoXCIuXCIpKzEpOm8rcn07IWZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPVwiTm9uZVwiLGVbZS5QYXNzd29yZD0xXT1cIlBhc3N3b3JkXCIsZVtlLlJlbW90ZU5HQz0yXT1cIlJlbW90ZU5HQ1wiLGVbZS5PbmVUaW1lQ29kZT0zXT1cIk9uZVRpbWVDb2RlXCIsZVtlLkZlZGVyYXRpb249NF09XCJGZWRlcmF0aW9uXCIsZVtlLkNsb3VkRmVkZXJhdGlvbj01XT1cIkNsb3VkRmVkZXJhdGlvblwiLGVbZS5PdGhlck1pY3Jvc29mdElkcEZlZGVyYXRpb249Nl09XCJPdGhlck1pY3Jvc29mdElkcEZlZGVyYXRpb25cIixlW2UuRmlkbz03XT1cIkZpZG9cIixlW2UuR2l0SHViPThdPVwiR2l0SHViXCIsZVtlLlB1YmxpY0lkZW50aWZpZXJDb2RlPTldPVwiUHVibGljSWRlbnRpZmllckNvZGVcIixlW2UuTGlua2VkSW49MTBdPVwiTGlua2VkSW5cIixlW2UuUmVtb3RlTG9naW49MTFdPVwiUmVtb3RlTG9naW5cIixlW2UuR29vZ2xlPTEyXT1cIkdvb2dsZVwiLGVbZS5BY2Nlc3NQYXNzPTEzXT1cIkFjY2Vzc1Bhc3NcIixlW2UuRmFjZWJvb2s9MTRdPVwiRmFjZWJvb2tcIixlW2UuQ2VydGlmaWNhdGU9MTVdPVwiQ2VydGlmaWNhdGVcIixlW2UuT2ZmbGluZUFjY291bnQ9MTZdPVwiT2ZmbGluZUFjY291bnRcIixlW2UuTm9QcmVmZXJyZWRDcmVkZW50aWFsPTFlM109XCJOb1ByZWZlcnJlZENyZWRlbnRpYWxcIn0oJFB8fCgkUD17fSkpO3ZhciBxUCxRUCxYUCxZUCxaUCxKUCxleCx0eD1bJFAuT25lVGltZUNvZGUsJFAuUmVtb3RlTkdDLCRQLlB1YmxpY0lkZW50aWZpZXJDb2RlXTtmdW5jdGlvbiBueChlLHQpe2lmKCFlKXJldHVyblwiXCI7dmFyIG49KDAsc3QuZnkpKGUpLnRvTG93ZXJDYXNlKCk7aWYoIVZQKG4pJiYhV1AobikmJkdQKG4pKXt2YXIgcj1cIlwiO3JldHVybiB0JiZcIitcIj09PW4uY2hhckF0KDApJiYocj1cIitcIikscituLnJlcGxhY2UoL1xcRCsvZyxcIlwiKX1yZXR1cm4gbn0hZnVuY3Rpb24oZSl7ZS5BY2Nlc3NQYXNzPVwiQWNjZXNzUGFzc1wiLGUuQWx0ZXJuYXRlQXV0aGVudGljYXRvcj1cIlRPVFBBdXRoZW50aWNhdG9yXCIsZS5BdXRoZW50aWNhdG9yPVwiVE9UUEF1dGhlbnRpY2F0b3JWMlwiLGUuQ2VydGlmaWNhdGU9XCJDZXJ0aWZpY2F0ZVwiLGUuQ29tcGFuaW9uQXBwc05vdGlmaWNhdGlvbj1cIkNvbXBhbmlvbkFwcHNOb3RpZmljYXRpb25cIixlLkNvbnNvbGlkYXRlZFRlbGVwaG9ueT1cIkNvbnNvbGlkYXRlZFRlbGVwaG9ueVwiLGUuRW1haWw9XCJFbWFpbFwiLGUuRXh0ZXJuYWxBdXRoPVwiRXh0ZXJuYWxBdXRoXCIsZS5GaWRvS2V5PVwiRmlkb0tleVwiLGUuT25lV2F5U01TPVwiT25lV2F5U01TXCIsZS5PbmVXYXlWb2ljZU1vYmlsZU9UUD1cIk9uZVdheVZvaWNlTW9iaWxlT1RQXCIsZS5PbmVXYXlWb2ljZU9mZmljZU9UUD1cIk9uZVdheVZvaWNlT2ZmaWNlT1RQXCIsZS5PbmVXYXlWb2ljZUFsdGVybmF0ZU1vYmlsZU9UUD1cIk9uZVdheVZvaWNlQWx0ZXJuYXRlTW9iaWxlT1RQXCIsZS5QaG9uZUFwcE5vdGlmaWNhdGlvbj1cIlBob25lQXBwTm90aWZpY2F0aW9uXCIsZS5QaG9uZUFwcE9UUD1cIlBob25lQXBwT1RQXCIsZS5TTVM9XCJTbXNcIixlLlNlY3VyaXR5UXVlc3Rpb249XCJTUVNBXCIsZS5Ud29XYXlTTVM9XCJUd29XYXlTTVNcIixlLlR3b1dheVNNU0FsdGVybmF0ZU1vYmlsZT1cIlR3b1dheVNNU0FsdGVybmF0ZU1vYmlsZVwiLGUuVHdvV2F5Vm9pY2VBbHRlcm5hdGVNb2JpbGU9XCJUd29XYXlWb2ljZUFsdGVybmF0ZU1vYmlsZVwiLGUuVHdvV2F5Vm9pY2VNb2JpbGU9XCJUd29XYXlWb2ljZU1vYmlsZVwiLGUuVHdvV2F5Vm9pY2VPZmZpY2U9XCJUd29XYXlWb2ljZU9mZmljZVwiLGUuVW5rbm93bj1cIlwifShxUHx8KHFQPXt9KSksZnVuY3Rpb24oZSl7ZS5Vbmtub3duPVwiVW5rbm93blwiLGUuQ29uZmlybT1cIkNvbmZpcm1cIixlLlJlY292ZXI9XCJSZWNvdmVyXCIsZS5SZW1vdmU9XCJSZW1vdmVcIixlLlJlc2V0PVwiUmVzZXRcIixlLkZhbWlsaWFyTG9jYXRpb25IYXJkPVwiRmFtaWxpYXJMb2NhdGlvbkhhcmRcIixlLkNvbXByb21pc2VSZWNvdmVyeT1cIkNvbXByb21pc2VSZWNvdmVyeVwiLGUuVmVyaWZ5UHJvb2Y9XCJWZXJpZnlQcm9vZlwiLGUuQ29tcGxpYW5jZT1cIkNvbXBsaWFuY2VcIixlLlZlcmlmeU5ld1Byb29mPVwiVmVyaWZ5TmV3UHJvb2ZcIixlLlNpZ25VcD1cIlNpZ25VcFwiLGUuVmVyaWZ5TmV3QWxpYXM9XCJWZXJpZnlOZXdBbGlhc1wiLGUuVGllclJlc3RvcmU9XCJUaWVyUmVzdG9yZVwiLGUuVmVyaWZ5QXV0b0NzckNvbnRhY3RFbWFpbD1cIlZlcmlmeUF1dG9Dc3JDb250YWN0RW1haWxcIixlLlNreXBlUGFzc3dvcmRDb252ZXJnZW5jZT1cIlNreXBlUGFzc3dvcmRDb252ZXJnZW5jZVwiLGUuTW92ZUFsaWFzPVwiTW92ZUFsaWFzXCIsZS5FdmljdGlvbj1cIkV2aWN0aW9uXCIsZS5Vc2VybmFtZVJlY292ZXJ5PVwiVXNlcm5hbWVSZWNvdmVyeVwiLGUuTW92ZUFsaWFzUGhvbmU9XCJNb3ZlQWxpYXNQaG9uZVwiLGUuUmVuYW1lPVwiUmVuYW1lXCIsZS5WZXJpZnlBbGlhcz1cIlZlcmlmeUFsaWFzXCIsZS5SZWNsYWltRXZpY3RlZFByaW1hcnlBbGlhcz1cIlJlY2xhaW1FdmljdGVkUHJpbWFyeUFsaWFzXCIsZS5SZWNsYWltRXZpY3RlZFNlY29uZGFyeUFsaWFzPVwiUmVjbGFpbUV2aWN0ZWRTZWNvbmRhcnlBbGlhc1wifShRUHx8KFFQPXt9KSksZnVuY3Rpb24oZSl7ZS5JbnZhbGlkPVwiSW52YWxpZFwiLGUuSW52aXRlZE1hbmFnZWRSZWdpc3RyYXRpb249XCJJbnZpdGVkTWFuYWdlZFJlZ2lzdHJhdGlvblwiLGUuVmVyaWZpY2F0aW9uQ29kZT1cIlZlcmlmaWNhdGlvbkNvZGVcIixlLk9uZVRpbWVQYXNzd29yZD1cIk9uZVRpbWVQYXNzd29yZFwiLGUuQ29tcGxpYW5jZT1cIkNvbXBsaWFuY2VcIixlLk1hbmFnZVByb29mcz1cIk1hbmFnZVByb29mc1wiLGUuQ29tcHJvbWlzZVJlY292ZXJ5PVwiQ29tcHJvbWlzZVJlY292ZXJ5XCIsZS5DaGFuZ2VQYXNzd29yZD1cIkNoYW5nZVBhc3N3b3JkXCIsZS5SZWNvdmVyTG9zdFByb29mcz1cIlJlY292ZXJMb3N0UHJvb2ZzXCIsZS5EZWxlZ2F0aW9uQ29kZT1cIkRlbGVnYXRpb25Db2RlXCIsZS5UaWVyVXBncmFkZT1cIlRpZXJVcGdyYWRlXCIsZS5UaWVyUmVzdG9yZT1cIlRpZXJSZXN0b3JlXCIsZS5WZXJpZmljYXRpb25Db2RlMldheT1cIlZlcmlmaWNhdGlvbkNvZGUyV2F5XCIsZS5VbmZhbWlsaWFyTG9jYXRpb25IYXJkPVwiVW5mYW1pbGlhckxvY2F0aW9uSGFyZFwiLGUuVE9UUD1cIlRPVFBcIixlLlNob3J0TGl2ZWRUb2tlbj1cIlNob3J0TGl2ZWRUb2tlblwiLGUuVmV0b0VBPVwiVmV0b0VBXCIsZS5GaW5hbFJlY292ZXJVc2VyPVwiRmluYWxSZWNvdmVyVXNlclwiLGUuU3VibWl0UmVjb3Zlcnk9XCJTdWJtaXRSZWNvdmVyeVwiLGUuUmVjb3ZlckFjY291bnRJbnQ9XCJSZWNvdmVyQWNjb3VudEludFwiLGUuUmVjb3ZlckFjY291bnQ9XCJSZWNvdmVyQWNjb3VudFwiLGUuUmVjb3ZlclVzZXI9XCJSZWNvdmVyVXNlclwiLGUuU2t5cGVQYXNzd29yZENvbnZlcmdlbmNlPVwiU2t5cGVQYXNzd29yZENvbnZlcmdlbmNlXCIsZS5Ob3BhQWNjb3VudExvZ2luPVwiTm9wYUFjY291bnRMb2dpblwiLGUuUmVtb3RlTkdDPVwiUmVtb3RlTkdDXCIsZS5VbmZhbWlsaWFyTG9jYXRpb25FYXN5PVwiVW5mYW1pbGlhckxvY2F0aW9uRWFzeVwifShYUHx8KFhQPXt9KSksZnVuY3Rpb24oZSl7ZS5Vbmtub3duPVwiVW5rbm93blwiLGUuU01TPVwiU01TXCIsZS5FbWFpbD1cIkVtYWlsXCIsZS5Wb2ljZT1cIlZvaWNlXCIsZS5TTFQ9XCJTTFRcIixlLlB1c2hOb3RpZmljYXRpb25zPVwiUHVzaE5vdGlmaWNhdGlvbnNcIn0oWVB8fChZUD17fSkpLGZ1bmN0aW9uKGUpe2UuTm9uZT1cIk5vbmVcIixlLkFsaWFzPVwiQWxpYXNcIixlLkVBU0k9XCJFQVNJXCIsZS5Qcm9vZj1cIlByb29mXCJ9KFpQfHwoWlA9e30pKSxmdW5jdGlvbihlKXtlW2UuRW1haWw9MV09XCJFbWFpbFwiLGVbZS5BbHRFbWFpbD0yXT1cIkFsdEVtYWlsXCIsZVtlLlNNUz0zXT1cIlNNU1wiLGVbZS5EZXZpY2VJZD00XT1cIkRldmljZUlkXCIsZVtlLkNTUz01XT1cIkNTU1wiLGVbZS5TUVNBPTZdPVwiU1FTQVwiLGVbZS5DZXJ0aWZpY2F0ZT03XT1cIkNlcnRpZmljYXRlXCIsZVtlLkhJUD04XT1cIkhJUFwiLGVbZS5CaXJ0aGRheT05XT1cIkJpcnRoZGF5XCIsZVtlLlRPVFBBdXRoZW50aWNhdG9yPTEwXT1cIlRPVFBBdXRoZW50aWNhdG9yXCIsZVtlLlJlY292ZXJ5Q29kZT0xMV09XCJSZWNvdmVyeUNvZGVcIixlW2UuU3Ryb25nVGlja2V0PTEzXT1cIlN0cm9uZ1RpY2tldFwiLGVbZS5UT1RQQXV0aGVudGljYXRvclYyPTE0XT1cIlRPVFBBdXRoZW50aWNhdG9yVjJcIixlW2UuVHdvV2F5Vm9pY2U9MTVdPVwiVHdvV2F5Vm9pY2VcIixlW2UuVHdvV2F5U01TPTE2XT1cIlR3b1dheVNNU1wiLGVbZS5GaWRvS2V5PTE3XT1cIkZpZG9LZXlcIixlW2UuQWNjZXNzUGFzcz0xOF09XCJBY2Nlc3NQYXNzXCIsZVtlLlRyYW5zZmVyVG9rZW49MTldPVwiVHJhbnNmZXJUb2tlblwiLGVbZS5WZXJpZmlhYmxlQ3JlZGVudGlhbHNIYWNrYXRob249MjBdPVwiVmVyaWZpYWJsZUNyZWRlbnRpYWxzSGFja2F0aG9uXCIsZVtlLkNvbXBhbmlvbkFwcD0yMV09XCJDb21wYW5pb25BcHBcIixlW2UuVm9pY2U9LTNdPVwiVm9pY2VcIn0oSlB8fChKUD17fSkpLGZ1bmN0aW9uKGUpe2UuSGFyZHdhcmVUb2tlbkJhc2VkVE9UUD1cIkhhcmR3YXJlVG9rZW5CYXNlZFRPVFBcIixlLlNvZnR3YXJlVG9rZW5CYXNlZFRPVFA9XCJTb2Z0d2FyZVRva2VuQmFzZWRUT1RQXCIsZS5NaWNyb3NvZnRBdXRoZW50aWNhdG9yQmFzZWRUT1RQPVwiTWljcm9zb2Z0QXV0aGVudGljYXRvckJhc2VkVE9UUFwiLGUuT3V0bG9va0Jhc2VkVE9UUD1cIk91dGxvb2tCYXNlZFRPVFBcIn0oZXh8fChleD17fSkpO3ZhciByeD17YmFkVXNlcm5hbWU6XCJUaGF0IE1pY3Jvc29mdCBhY2NvdW50IGRvZXNuJ3QgZXhpc3QuIEVudGVyIGEgZGlmZmVyZW50IGFjY291bnQgb3IgPHNpZ251cExpbms+Z2V0IGEgbmV3IG9uZTwvc2lnbnVwTGluaz4uXCIsaW52YWxpZE51bWJlcjpcIlRoYXQgcGhvbmUgbnVtYmVyIGRvZXNuJ3QgbG9vayByaWdodC4gUGxlYXNlIGNoZWNrIHRoZSBjb3VudHJ5IGNvZGUgYW5kIHBob25lIG51bWJlci5cIix1c2VybmFtZU5vdEV4aXN0UGhvbmVEaXNhbWJpZzpcIlRoaXMgcGhvbmUgbnVtYmVyIGRvZXMgbm90IGV4aXN0IGFzIGEgdXNlcm5hbWUuIFBsZWFzZSBjaGVjayBpZiB5b3VyIG51bWJlciBpcyBjb3JyZWN0LlwiLHVzZXJuYW1lTm90RXhpc3RTaWdudXA6XCJUaGF0IE1pY3Jvc29mdCBhY2NvdW50IGRvZXNuJ3QgZXhpc3QuIFBsZWFzZSBlbnRlciBhIGRpZmZlcmVudCBhY2NvdW50LlwiLGVtcHR5T3JJbnZhbGlkRW1haWw6XCJFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MsIHBob25lIG51bWJlciwgb3IgU2t5cGUgbmFtZS5cIixmZWRlcmF0aW9uTm90QWxsb3dlZDpcIllvdSBjYW5ub3QgdXNlIHRoaXMgYWNjb3VudCBmb3IgdGhpcyBwdXJwb3NlIGJlY2F1c2UgaXQgYmVsb25ncyB0byBhbiBvcmdhbml6YXRpb24uIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgYWNjb3VudCBvciBzaWduIHVwIGZvciBhIG5ldyBvbmUuXCIsbm9QYVVzZXJOZWVkc1Bhc3N3b3JkOlwiU2lnbmluZyBpbiB0byB0aGlzIGRldmljZSByZXF1aXJlcyBhIHBhc3N3b3JkIG9uIHlvdXIgYWNjb3VudC4gVmlzaXQgezB9IHRvIGFkZCBhIHBhc3N3b3JkIHRvIHlvdXIgYWNjb3VudC4gQWZ0ZXIgYWRkaW5nIGEgcGFzc3dvcmQsIGNvbWUgYmFjayB0byBzaWduIGluIHRvIHRoaXMgZGV2aWNlLlwiLGRpc2FibGVkQWxpYXM6XCJUaGlzIHVzZXJuYW1lIGhhcyBiZWVuIHR1cm5lZC1vZmYgZm9yIHNpZ24gaW4uIFRyeSBhIGRpZmZlcmVudCBvbmUgb3IgPHJlY292ZXJVc2VybmFtZT5maW5kIHRoZSBhY2NvdW50IHRoaXMgdXNlcm5hbWUgaXMgYXNzb2NpYXRlZCB3aXRoPC9yZWNvdmVyVXNlcm5hbWU+LlwiLGdlbmVyaWNHY3RGYWlsdXJlOlwiVGhlcmUgd2FzIGFuIGlzc3VlIGxvb2tpbmcgdXAgeW91ciBhY2NvdW50LiBUYXAgTmV4dCB0byB0cnkgYWdhaW4uXCJ9O2Z1bmN0aW9uIG94KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBpeChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGF4PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP294KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aXgoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOm94KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7fSxyeCksbHg9bmV3IExtLnIoe2djdFN0cmluZ3M6YXh9KTtmdW5jdGlvbiBzeChlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIGN4KGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe3N4KGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe3N4KGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiB1eChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gZHgoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gZHgoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIGR4KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gZngoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHB4KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2Z4KE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7Z3goZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmZ4KE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGd4KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgbXgsaHgsYng9bmV3IE1hcDshZnVuY3Rpb24oZSl7ZVtlLlNob3dFcnJvcj0xXT1cIlNob3dFcnJvclwiLGVbZS5Td2l0Y2hWaWV3PTJdPVwiU3dpdGNoVmlld1wiLGVbZS5SZWRpcmVjdD0zXT1cIlJlZGlyZWN0XCJ9KG14fHwobXg9e30pKSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0xXT1cIlVua25vd25cIixlW2UuQ29uc3VtZXI9Ml09XCJDb25zdW1lclwiLGVbZS5NYW5hZ2VkPTNdPVwiTWFuYWdlZFwiLGVbZS5GZWRlcmF0ZWQ9NF09XCJGZWRlcmF0ZWRcIixlW2UuQ2xvdWRGZWRlcmF0ZWQ9NV09XCJDbG91ZEZlZGVyYXRlZFwifShoeHx8KGh4PXt9KSk7dmFyIHl4LHZ4PWZ1bmN0aW9uKGUpe3JldHVybiBieC5nZXQoZSl8fG51bGx9LHd4PWZ1bmN0aW9uKGUsdCl7dmFyIG49SXQuZGVmYXVsdC5pbnN0YW5jZSxyPW4uY29udGV4dCxvPW4uc2hvd0Nvb2tpZUJhbm5lcixpPW4udW5hdXRoZW50aWNhdGVkU2Vzc2lvbklkLGE9bi5yZW1vdGVDb25uZWN0RW5hYmxlZCxsPW4uY2hlY2tQcm9vZkZvckFsaWFzZXMscz1uLmlzTm9QYXNzd29yZE9uZVRpbWVDb2RlRGlzYWJsZWQsYz1uLmlzUGhvbmVOdW1iZXJTaWdudXBEaXNhbGxvd2VkLHU9ZS5hbGxvd2VkSWRlbnRpdGllcyxkPWUuY291bnRyeSxmPWUuZmxvd1Rva2VuLHA9ZS5nY3RGZWRlcmF0aW9uRmxhZ3MsZz1lLmlzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZCxtPWUuaXNGZWRlcmF0aW9uRGlzYWJsZWQsaD1lLmlzRmlkb1N1cHBvcnRlZCxiPWUuaXNSZW1vdGVOR0NTdXBwb3J0ZWQseT1lLm90Y2xvZ2luZGlzYWxsb3dlZCx2PW54KGUudW5zYWZlVXNlcm5hbWUsITApLHc9e2NoZWNrUGhvbmVzOkdQKHYpLGNvdW50cnk6ZCxmZWRlcmF0aW9uRmxhZ3M6cCxmbG93VG9rZW46Zixmb3JjZW90Y2xvZ2luOiEobnVsbD09dHx8IXQuZm9yY2VPdGNMb2dpbiksaXNDb29raWVCYW5uZXJTaG93bjpvLGlzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZDpnLGlzRmVkZXJhdGlvbkRpc2FibGVkOm0saXNGaWRvU3VwcG9ydGVkOmgsaXNPdGhlcklkcFN1cHBvcnRlZDohKG51bGwhPXQmJnQuY2hlY2tDdXJyZW50SWRwT25seSkmJnU9PT1IUCxpc1JlbW90ZUNvbm5lY3RTdXBwb3J0ZWQ6YSxpc1JlbW90ZU5HQ1N1cHBvcnRlZDpiLGlzU2lnbnVwOiEobnVsbD09dHx8IXQuaXNTaWdudXApLG9yaWdpbmFsUmVxdWVzdDpyLG90Y2xvZ2luZGlzYWxsb3dlZDp5LHVhaWQ6aSx1c2VybmFtZTp2fTtyZXR1cm4gbCYmKHcuY2hlY2tQcm9vZkZvckFsaWFzZXM9ITApLHMmJih3Lm5vUGFPdGNEaXNhbGxvd2VkPSEwKSxjJiYody5pc1Bob25lTnVtYmVyU2lnbnVwRGlzYWxsb3dlZD0hMCksd30sU3g9ZnVuY3Rpb24oZSx0KXtyZXR1cm57YWN0aW9uOm14LlN3aXRjaFZpZXcsdmlld0lkOmUsdmlld1BhcmFtczp0fX0sUHg9ZnVuY3Rpb24oZSx0LG4pe3JldHVybnthY3Rpb246bXguUmVkaXJlY3QscmVkaXJlY3RVcmw6ZSxyZWRpcmVjdFBvc3RQYXJhbXM6dCxpc0lkcFJlZGlyZWN0Om59fSx4eD1mdW5jdGlvbihlLHQsbil7cmV0dXJue2FjdGlvbjpteC5TaG93RXJyb3IsZXJyb3I6ZSxpc0Jsb2NraW5nRXJyb3I6dCxieXBhc3NDYWNoZTpufX0sT3g9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSRQLlBhc3N3b3JkLG89ZS5DcmVkZW50aWFscztyZXR1cm4gbyYmby5QcmVmQ3JlZGVudGlhbCYmKHI9by5QcmVmQ3JlZGVudGlhbCxuPT09clA/WyRQLlB1YmxpY0lkZW50aWZpZXJDb2RlLCRQLk5vUHJlZmVycmVkQ3JlZGVudGlhbF0uaW5jbHVkZXMocil8fChyPSRQLk9uZVRpbWVDb2RlKTpyIT09JFAuRmlkb3x8dHx8KHI9by5SZW1vdGVOZ2NQYXJhbXMmJm8uUmVtb3RlTmdjUGFyYW1zLlNlc3Npb25JZGVudGlmaWVyPyRQLlJlbW90ZU5HQzokUC5QYXNzd29yZCkpLHJ9LF94PWZ1bmN0aW9uKGUpe3JldHVybiFlLklzU2lnbnVwRGlzYWxsb3dlZH0sQ3g9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bjtvPSgwLHN0LlBrKShuLFtcInVzZXJuYW1lXCIsXCJsb2dpbl9oaW50XCJdKTt2YXIgaT1yO3JldHVybiB0JiYodC5JZkV4aXN0c1Jlc3VsdD09PWN0LnVFLk5vdEV4aXN0fHx0LklzVW5tYW5hZ2VkJiZ0LklmRXhpc3RzUmVzdWx0PT09Y3QudUUuRXhpc3RzKSYmX3godCkmJihPYmplY3Qua2V5cyhpKS5sZW5ndGg/aS51c2VybmFtZT1lOm89KDAsc3QuTmkpKG8se3VzZXJuYW1lOmVuY29kZVVSSUNvbXBvbmVudChlKSxsb2dpbl9oaW50OmVuY29kZVVSSUNvbXBvbmVudChlKX0pKSxQeChvLGksITEpfSxreD1mdW5jdGlvbihlLHQsbil7dmFyIHI9bngoZSwhMCksbz12eChyKTtyZXR1cm4gQ3gocixvLHQsbil9LEF4PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYT1bXSxsPW51bGw9PT0oaT1lLkNyZWRlbnRpYWxzKXx8dm9pZCAwPT09aT92b2lkIDA6aS5PdGNMb2dpbkVsaWdpYmxlUHJvb2ZzO2lmKGwpe3ZhciBzPWUuQ3JlZGVudGlhbHMmJmUuQ3JlZGVudGlhbHMuSGFzUGhvbmUmJmUuQ3JlZGVudGlhbHMuQ29iYXNpQXBwO2wuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoZS5pc0RlZmF1bHQ9PT1uKXt2YXIgcj17Y3JlZGVudGlhbFR5cGU6JFAuT25lVGltZUNvZGUscHJvb2Y6ZX07aWYoci5wcm9vZilzd2l0Y2goci5wcm9vZi5pc0VuY3J5cHRlZD0hMCxlLnR5cGUpe2Nhc2UgSlAuU01TOmNhc2UgSlAuVm9pY2U6ZS5pc1ZvaWNlT25seXx8KHIucHJvb2Yub3RjU2VudCYmbnVsbCE9byYmby5pc1Bvc3RSZXF1ZXN0JiZ0LnBvc3RQcm9vZlR5cGU9PT1KUC5Wb2ljZSYmKHIucHJvb2Yub3RjU2VudD0hMSksc3x8KHIuc2hvd25Pbmx5T25QaWNrZXI9ITApLHIucHJvb2YudHlwZT1KUC5TTVMsYS5wdXNoKHIpKSxlLnZvaWNlRW5hYmxlZCYmKCFyLnByb29mLm90Y1NlbnR8fG51bGwhPW8mJm8uaXNQb3N0UmVxdWVzdCYmdC5wb3N0UHJvb2ZUeXBlPT09SlAuVm9pY2V8fChyLnByb29mLm90Y1NlbnQ9ITEpLHIucHJvb2YudHlwZT1KUC5Wb2ljZSxhLnB1c2gocikpO2JyZWFrO2Nhc2UgSlAuRW1haWw6YS5wdXNoKHIpfX19KSl9aWYobiYmMD09PWEubGVuZ3RoJiZPeChlLHIpPT09JFAuT25lVGltZUNvZGUpe3ZhciBjPWUuQ3JlZGVudGlhbHMmJmUuQ3JlZGVudGlhbHMuSGFzUGFzc3dvcmQsdT17Y3JlZGVudGlhbFR5cGU6JFAuT25lVGltZUNvZGUscHJvb2Y6e2Rpc3BsYXk6ZS5EaXNwbGF5LGRhdGE6bngoZS5EaXNwbGF5fHxcIlwiKSxvdGNTZW50OiEwLGlzRW5jcnlwdGVkOiExLGlzRGVmYXVsdDohMCxpc05vcGE6IWMsdHlwZTpWUChlLlVzZXJuYW1lfHxcIlwiKT9KUC5FbWFpbDpKUC5TTVN9fTthLnB1c2godSl9cmV0dXJuIGF9LFR4PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGk9ZS5DcmVkZW50aWFsc3x8e30sYT1pLlNhc1BhcmFtcyxsPWkuTGlua2VkSW5QYXJhbXMscz1pLkdpdEh1YlBhcmFtcyxjPWkuR29vZ2xlUGFyYW1zLHU9aS5GYWNlYm9va1BhcmFtcyxkPWkuQ2VydEF1dGhQYXJhbXMsZj1lLkVzdHNQcm9wZXJ0aWVzfHx7fSxwPVtdO3A9cC5jb25jYXQoaS5IYXNQYXNzd29yZCYmZi5Eb21haW5UeXBlIT09aHguRmVkZXJhdGVkP3tjcmVkZW50aWFsVHlwZTokUC5QYXNzd29yZH06W10saS5GZWRlcmF0aW9uUmVkaXJlY3RVcmwmJmYuRG9tYWluVHlwZT09PWh4LkZlZGVyYXRlZD97Y3JlZGVudGlhbFR5cGU6JFAuRmVkZXJhdGlvbn06W10saS5GZWRlcmF0aW9uUmVkaXJlY3RVcmwmJmYuRG9tYWluVHlwZT09PWh4LkNsb3VkRmVkZXJhdGVkP3tjcmVkZW50aWFsVHlwZTokUC5DbG91ZEZlZGVyYXRpb259OltdLGkuSGFzUmVtb3RlTkdDP3tjcmVkZW50aWFsVHlwZTokUC5SZW1vdGVOR0N9OltdLGkuSGFzRmlkbyYmbj97Y3JlZGVudGlhbFR5cGU6JFAuRmlkb306W10saS5IYXNQaG9uZSYmYT97Y3JlZGVudGlhbFR5cGU6JFAuUHVibGljSWRlbnRpZmllckNvZGV9OltdLGkuSGFzTGlua2VkSW5GZWQmJmw/e2NyZWRlbnRpYWxUeXBlOiRQLkxpbmtlZEluLHJlZGlyZWN0VXJsOmwuTGlua2VkSW5SZWRpcmVjdFVybH06W10saS5IYXNHaXRIdWJGZWQmJnM/e2NyZWRlbnRpYWxUeXBlOiRQLkdpdEh1YixyZWRpcmVjdFVybDpzLkdpdGh1YlJlZGlyZWN0VXJsfTpbXSxpLkhhc0dvb2dsZUZlZCYmYz97Y3JlZGVudGlhbFR5cGU6JFAuR29vZ2xlLHJlZGlyZWN0VXJsOmMuR29vZ2xlUmVkaXJlY3RVcmx9OltdLGkuSGFzRmFjZWJvb2tGZWQmJnU/e2NyZWRlbnRpYWxUeXBlOiRQLkZhY2Vib29rLHJlZGlyZWN0VXJsOnUuRmFjZWJvb2tSZWRpcmVjdFVybH06W10saS5IYXNBY2Nlc3NQYXNzP3tjcmVkZW50aWFsVHlwZTokUC5BY2Nlc3NQYXNzfTpbXSxpLkhhc0NlcnRBdXRoP3tjcmVkZW50aWFsVHlwZTokUC5DZXJ0aWZpY2F0ZSxyZWRpcmVjdFVybDpudWxsPT1kP3ZvaWQgMDpkLkNlcnRBdXRoVXJsLHJlZGlyZWN0UG9zdFBhcmFtczoobz1lLkZsb3dUb2tlbix7Y3R4Okl0LmRlZmF1bHQuaW5zdGFuY2UuY29udGV4dCxmbG93VG9rZW46b30pfTpbXSk7dmFyIGc9QXgoZSx0LCEwLG4scik7cmV0dXJuIGcubGVuZ3RoPjAmJihwPXAuY29uY2F0KGcpKSxwfSxFeD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1bXSxpPUF4KGUsdCwhMSxuLHIpO3JldHVybiBpLmxlbmd0aCYmKG89by5jb25jYXQoaSksaS5maW5kKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGwhPT0odD1lLnByb29mKSYmdm9pZCAwIT09dCYmdC5pc05vcGEpfSkpJiYobz1vLmNvbmNhdCh7Y3JlZGVudGlhbFR5cGU6JFAuUGFzc3dvcmQsaXNEZWZhdWx0OiExfSkpKSxvfSxqeD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpLGEsbCxzLGMsdSxkLGYscCxnPXt9LG09T3godCxuKSxoPXQuRXN0c1Byb3BlcnRpZXN8fHt9O2lmKCEobnVsbCE9PShvPXQuQ3JlZGVudGlhbHMpJiZ2b2lkIDAhPT1vJiZvLkZlZGVyYXRpb25SZWRpcmVjdFVybHx8bnVsbCE9PShpPXQuQ3JlZGVudGlhbHMpJiZ2b2lkIDAhPT1pJiZpLkxpbmtlZEluUGFyYW1zfHxudWxsIT09KGE9dC5DcmVkZW50aWFscykmJnZvaWQgMCE9PWEmJmEuR2l0SHViUGFyYW1zfHxudWxsIT09KGw9dC5DcmVkZW50aWFscykmJnZvaWQgMCE9PWwmJmwuR29vZ2xlUGFyYW1zfHxudWxsIT09KHM9dC5DcmVkZW50aWFscykmJnZvaWQgMCE9PXMmJnMuRmFjZWJvb2tQYXJhbXMpKXJldHVybiBnO3N3aXRjaChtKXtjYXNlICRQLlJlbW90ZU5HQzpjYXNlICRQLkZlZGVyYXRpb246Y2FzZSAkUC5BY2Nlc3NQYXNzOmNhc2UgJFAuTm9QcmVmZXJyZWRDcmVkZW50aWFsOmlmKG51bGw9PT0oYz10LkNyZWRlbnRpYWxzKXx8dm9pZCAwPT09Y3x8IWMuRmVkZXJhdGlvblJlZGlyZWN0VXJsKWJyZWFrO2gmJmguU2FtbFJlcXVlc3QmJmguUmVsYXlTdGF0ZT8oZy5pZHBSZWRpcmVjdFVybD10LkNyZWRlbnRpYWxzLkZlZGVyYXRpb25SZWRpcmVjdFVybCxnLmlkcFJlZGlyZWN0UG9zdFBhcmFtcz17U0FNTFJlcXVlc3Q6aC5TYW1sUmVxdWVzdCxSZWxheVN0YXRlOmguUmVsYXlTdGF0ZSx1c2VybmFtZTplfSk6Zy5pZHBSZWRpcmVjdFVybD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbz1uZXcgVVJMU2VhcmNoUGFyYW1zKGUpLGk9bmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKSxhPW5ldyBVUkwodCksbD1hLnNlYXJjaFBhcmFtcztyZXR1cm4gby5mb3JFYWNoKChmdW5jdGlvbihlLHQpe2wuc2V0KHQsZSl9KSksT2JqZWN0LmVudHJpZXMoKHI9e30sZ3gocixZUyxcIkxvZ2luT3B0aW9ucz0zJlwiLmNvbmNhdChvLmdldChZUyl8fGwuZ2V0KFlTKXx8XCJcIikpLGd4KHIsWlMsaS5nZXQoWlMpfHxcIlwiKSxneChyLFhTLG4pLGd4KHIscVMsaS5nZXQocVMpfHxcIlwiKSxneChyLFFTLGkuZ2V0KFFTKXx8XCJcIikscikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PXV4KGUsMiksbj10WzBdLHI9dFsxXTtsLnNldChuLHIpfSkpLGEuc2VhcmNoPWwudG9TdHJpbmcoKSxhLmhyZWZ9KHIsdC5DcmVkZW50aWFscy5GZWRlcmF0aW9uUmVkaXJlY3RVcmx8fFwiXCIsZSk7YnJlYWs7Y2FzZSAkUC5DbG91ZEZlZGVyYXRpb246Zy5pZHBSZWRpcmVjdFVybD10LkNyZWRlbnRpYWxzLkZlZGVyYXRpb25SZWRpcmVjdFVybDticmVhaztjYXNlICRQLkxpbmtlZEluOmcuaWRwUmVkaXJlY3RVcmw9bnVsbD09PSh1PXQuQ3JlZGVudGlhbHMuTGlua2VkSW5QYXJhbXMpfHx2b2lkIDA9PT11P3ZvaWQgMDp1LkxpbmtlZEluUmVkaXJlY3RVcmwsZy5pZHBSZWRpcmVjdFByb3ZpZGVyPWN0Lmt2LkxpbmtlZEluO2JyZWFrO2Nhc2UgJFAuR2l0SHViOmcuaWRwUmVkaXJlY3RVcmw9bnVsbD09PShkPXQuQ3JlZGVudGlhbHMuR2l0SHViUGFyYW1zKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5HaXRodWJSZWRpcmVjdFVybCxnLmlkcFJlZGlyZWN0UHJvdmlkZXI9Y3Qua3YuR2l0SHViO2JyZWFrO2Nhc2UgJFAuR29vZ2xlOmcuaWRwUmVkaXJlY3RVcmw9bnVsbD09PShmPXQuQ3JlZGVudGlhbHMuR29vZ2xlUGFyYW1zKXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5Hb29nbGVSZWRpcmVjdFVybCxnLmlkcFJlZGlyZWN0UHJvdmlkZXI9Y3Qua3YuR29vZ2xlO2JyZWFrO2Nhc2UgJFAuRmFjZWJvb2s6Zy5pZHBSZWRpcmVjdFVybD1udWxsPT09KHA9dC5DcmVkZW50aWFscy5GYWNlYm9va1BhcmFtcyl8fHZvaWQgMD09PXA/dm9pZCAwOnAuRmFjZWJvb2tSZWRpcmVjdFVybCxnLmlkcFJlZGlyZWN0UHJvdmlkZXI9Y3Qua3YuRmFjZWJvb2t9cmV0dXJuIGd9LEl4PWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYSxsLHMsYz10LmxvZ2luU3RhdGVGb3JQb3N0QmFjayx1PU94KGUsbixjKSxkPWUuQ3JlZGVudGlhbHN8fHt9LGY9ZC5SZW1vdGVMb2dpblBvbGxpbmdQYXJhbXMscD1kLlJlbW90ZU5nY1BhcmFtcyxnPWQuRmlkb1BhcmFtcyxtPShudWxsPT1wP3ZvaWQgMDpwLkRlZmF1bHRUeXBlKXx8bnVsbCxoPSEobnVsbD09cHx8IXAuU2hvd0FuaW1hdGVkR2lmV2hpbGVQb2xsaW5nKSxiPSEobnVsbD09cHx8IXAuU3R5bGVDcmVkU3dpdGNoTGlua0FzQnV0dG9uKSx5PWp4KGUuVXNlcm5hbWV8fFwiXCIsZSxuLFwiXCIpLHY9IShudWxsIT1vJiZvLmRpc2FibGVBdXRvU2VuZHx8cnx8dSE9PSRQLlJlbW90ZU5HQ3x8IXB8fCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocCxcIkVudHJvcHlcIikpLHc9KChudWxsPT1wP3ZvaWQgMDpwLkRldmljZXMpfHxbXSkubWFwKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm57bmFtZTpudWxsIT09KHQ9ZS5OYW1lKSYmdm9pZCAwIT09dD90OlwiXCIsYXBwbGljYXRpb246ZS5BcHBsaWNhdGlvbn19KSksUz17b25lVGltZUNvZGU6bnVsbCE9PShpPW51bGw9PWY/dm9pZCAwOmYuT25lVGltZUNvZGUpJiZ2b2lkIDAhPT1pP2k6XCJcIixkZXZpY2VJZGVudGlmaWVyOm51bGwhPT0oYT1udWxsPT1mP3ZvaWQgMDpmLkRldmljZUlkZW50aWZpZXIpJiZ2b2lkIDAhPT1hP2E6XCJcIn0sUD17cmVxdWVzdFNlbnQ6dixzZXNzaW9uSWRlbnRpZmllcjpudWxsIT09KGw9bnVsbD09cD92b2lkIDA6cC5TZXNzaW9uSWRlbnRpZmllcikmJnZvaWQgMCE9PWw/bDpcIlwiLGVudHJvcHk6bnVsbCE9PShzPW51bGw9PXA/dm9pZCAwOnAuRW50cm9weSkmJnZvaWQgMCE9PXM/czpcIlwiLGRlZmF1bHRUeXBlOm0sc2hvd0FuaW1hdGVkR2lmV2hpbGVQb2xsaW5nOmgsc3R5bGVDcmVkU3dpdGNoTGlua0FzQnV0dG9uOmIsZGV2aWNlczp3fSx4PVR4KGUsdCxuLG8pLE89e2xvY2F0aW9uOmUuTG9jYXRpb258fFwiXCIscmVtb3RlTG9naW5Qb2xsaW5nUGFyYW1zOlMscmVtb3RlTmdjUGFyYW1zOlAsYXZhaWxhYmxlQ3JlZGVudGlhbHM6eCxwcmVmZXJyZWRDcmVkZW50aWFsOnUsZXZpY3RlZENyZWRlbnRpYWxzOkV4KGUsdCxuLG8pLHVzZUV2aWN0ZWRDcmVkZW50aWFsczohMSxmZWRSZWRpcmVjdFBhcmFtczp5fTtpZihlLkRpc3BsYXkmJihPLmRpc3BsYXlOYW1lPWUuRGlzcGxheSksdT09PSRQLk9uZVRpbWVDb2RlKXt2YXIgXyxDPXguZmluZCgoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGUuY3JlZGVudGlhbFR5cGU9PT0kUC5PbmVUaW1lQ29kZSYmKG51bGw9PT0odD1lLnByb29mKXx8dm9pZCAwPT09dD92b2lkIDA6dC5vdGNTZW50KX0pKTshQyYmbnVsbCE9PShfPWUuQ3JlZGVudGlhbHMpJiZ2b2lkIDAhPT1fJiZfLk9UQ05vdEF1dG9TZW50JiYoQz14LmZpbmQoKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBlLmNyZWRlbnRpYWxUeXBlPT09JFAuT25lVGltZUNvZGUmJihudWxsPT09KHQ9ZS5wcm9vZil8fHZvaWQgMD09PXQ/dm9pZCAwOnQudHlwZSk9PT1KUC5TTVN9KSkpLEMmJihPLm90Y0NyZWRlbnRpYWw9Qyl9cmV0dXJuIGcmJihPLmZpZG9QYXJhbXM9e0FsbG93TGlzdDpnLkFsbG93TGlzdCxTaG93SW50ZXJzdGl0aWFsOmcuU2hvd0ludGVyc3RpdGlhbH0pLE99LEx4PWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEsbCxzLGMpe3ZhciB1PW4uY2hhbmdlUGFzc3dvcmRVcmwsZD12b2lkIDA9PT11P1wiXCI6dSxmPW4ucmVzZXRQYXNzd29yZFVybCxwPXZvaWQgMD09PWY/XCJcIjpmLGc9bi51c2VSZXNldFBhc3N3b3JkVXJsRm9yUGFzc3dvcmRSZXF1aXJlZEVycm9yLG09dm9pZCAwIT09ZyYmZyxoPXt9LGI9dC5FcnJvckhSLHk9IShudWxsIT1sJiZsLmNoZWNrQ3VycmVudElkcE9ubHkpJiZzPT09SFAsdj1JeCh0LG4sbyxpLGwpLHc9angocix0LG8sYSk7di51c2VybmFtZT1yO3ZhciBTPWx4Lmluc3RhbmNlLmdjdFN0cmluZ3M7aWYoYj09PU1QLlBQX0VfSU5WQUxJRF9QSE9ORU5VTUJFUnx8Yj09PU1QLlBQX0VfTElCUEhPTkVOVU1CRVJJTlRFUk9QX05VTUJFUlBBUlNFX0VYQ0VQVElPTiloPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1seC5pbnN0YW5jZS5nY3RTdHJpbmdzO2lmKG51bGwhPW4mJm4uaXNQaG9uZU51bWJlckZ1bGx5UXVhbGlmaWVkKXt2YXIgbz10LmltcHJvdmVQaG9uZURpc2FtYmlndWF0aW9uP3IudXNlcm5hbWVOb3RFeGlzdFBob25lRGlzYW1iaWc6ci5pbnZhbGlkTnVtYmVyO3JldHVybiB4eChvLCEwKX1yZXR1cm4gU3goVHQuUGhvbmVEaXNhbWJpZ3VhdGlvbix7cGhvbmVEaXNhbWJpZ0Vycm9yOmV9KX0oYixuLGwpO2Vsc2UgaWYoYj09PU1QLlBQX0VfTkFNRV9JTlZBTElEfHxiPT09TVAuUFBfRV9JTlZBTElEQVJHKWg9eHgoUy5lbXB0eU9ySW52YWxpZEVtYWlsKTtlbHNlIGlmKGI9PT1NUC5QUF9FX0ZFREVSQVRJT05fSU5MSU5FTE9HSU5fRElTQUxMT1dFRCloPXh4KFMuZmVkZXJhdGlvbk5vdEFsbG93ZWQsITApO2Vsc2UgaWYoYj09PU1QLlBQX0VfTE9HSU5fTk9QQV9VU0VSX1BBU1NXT1JEX1JFUVVJUkVEKXt2YXIgUD1TLm5vUGFVc2VyTmVlZHNQYXNzd29yZDtoPXh4KG0/KDAsc3QuWjcpKFAsKDAsc3QuYXUpKHApKTooMCxzdC5aNykoUCwoMCxzdC5hdSkoZCkpKX1lbHNlIGlmKHQuUmVxdWlyZXNQaG9uZURpc2FtYmlndWF0aW9uKWg9U3goVHQuUGhvbmVEaXNhbWJpZ3VhdGlvbik7ZWxzZXtpZih0LkFsaWFzRGlzYWJsZWRGb3JMb2dpbilyZXR1cm4geHgoUy5kaXNhYmxlZEFsaWFzLCEwKTtpZih0LklmRXhpc3RzUmVzdWx0PT09Y3QudUUuTm90RXhpc3QpaD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbyxpPXQuc2hvd1NpZ251cCxhPXQuZG9JZkV4aXN0cyxsPXQuc2lnbnVwVXJsLHM9dC5zaWdudXBVcmxQb3N0UGFyYW1zLGM9X3goZSksdT1seC5pbnN0YW5jZS5nY3RTdHJpbmdzO3JldHVybiBpJiZjJiZhP2t4KG4sbCxzKToobz1udWxsIT1yJiZyLmlzUGhvbmVOdW1iZXJGdWxseVF1YWxpZmllZD90LmltcHJvdmVQaG9uZURpc2FtYmlndWF0aW9uP3UudXNlcm5hbWVOb3RFeGlzdFBob25lRGlzYW1iaWc6dS5pbnZhbGlkTnVtYmVyOmk/dS5iYWRVc2VybmFtZTp1LnVzZXJuYW1lTm90RXhpc3RTaWdudXAseHgobykpfSh0LG4scixsKTtlbHNlIGlmKHQuSWZFeGlzdHNSZXN1bHQ9PT1jdC51RS5FeGlzdHNCb3RoSURQcyloPVN4KFR0LklkcERpc2FtYmlndWF0aW9uLHB4KHtkZXNrdG9wU3NvRW5hYmxlZDpmYWxzZX0sdykpO2Vsc2UgaWYodC5JZkV4aXN0c1Jlc3VsdD09PWN0LnVFLkV4aXN0c0luT3RoZXJNaWNyb3NvZnRJRFAmJmUubGVuZ3RoPjApaD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbz1lbmNvZGVVUklDb21wb25lbnQodCkucmVwbGFjZSgvJy9nLFwiJTI3XCIpO3I9KDAsc3QuTmkpKGUse3VzZXJuYW1lOm8sbG9naW5faGludDpvfSk7dmFyIGk9bj9weChweCh7fSxuKSx7fSx7dXNlcm5hbWU6dH0pOnt9O3JldHVybiBQeChyLGksITApfShlLHIsYyk7ZWxzZSBpZigheXx8dC5JZkV4aXN0c1Jlc3VsdCE9PWN0LnVFLkVycm9yJiZ0LklmRXhpc3RzUmVzdWx0IT09Y3QudUUuVGhyb3R0bGVkJiZ0LlRocm90dGxlU3RhdHVzIT09Y3QuejkuTXNhVGhyb3R0bGVkKWlmKHQuU2hvd1JlbW90ZUNvbm5lY3QpaD1TeChUdC5SZW1vdGVMb2dpblBvbGxpbmcpO2Vsc2V7aD1mdW5jdGlvbihlLHQsbixyLG8saSxhKXt2YXIgbD10LnNpZ251cFVybCxzPXZvaWQgMD09PWw/XCJcIjpsLGM9dC5zaWdudXBVcmxQb3N0UGFyYW1zLHU9dm9pZCAwPT09Yz97fTpjLGQ9T3goZSxyKSxmPXtpZHBSZWRpcmVjdFVybDpvLmlkcFJlZGlyZWN0VXJsLGlkcFJlZGlyZWN0UG9zdFBhcmFtczpvLmlkcFJlZGlyZWN0UG9zdFBhcmFtcyxpZHBSZWRpcmVjdFByb3ZpZGVyOm8uaWRwUmVkaXJlY3RQcm92aWRlcn07c3dpdGNoKGQpe2Nhc2UgJFAuT25lVGltZUNvZGU6dmFyIHA7cmV0dXJuIG51bGwhPWEmJmEuZGlzYWJsZUF1dG9TZW5kfHxudWxsIT09KHA9ZS5DcmVkZW50aWFscykmJnZvaWQgMCE9PXAmJnAuT1RDTm90QXV0b1NlbnQ/U3goaT9UdC5Qcm9vZkNvbmZpcm1hdGlvbjpUdC5Db25maXJtU2VuZCk6U3goVHQuT25lVGltZUNvZGUpO2Nhc2UgJFAuUmVtb3RlTkdDOnZhciBnLG0saD0obnVsbD09PShnPWUuQ3JlZGVudGlhbHMpfHx2b2lkIDA9PT1nfHxudWxsPT09KG09Zy5SZW1vdGVOZ2NQYXJhbXMpfHx2b2lkIDA9PT1tP3ZvaWQgMDptLkRlZmF1bHRUeXBlKT09PWN0LlBBLlB1c2hOb3RpZmljYXRpb247cmV0dXJuIFN4KG51bGwhPWEmJmEuZGlzYWJsZUF1dG9TZW5kJiZoP1R0LkNvbmZpcm1TZW5kOlR0LlB1c2hOb3RpZmljYXRpb25zLGYpO2Nhc2UgJFAuRmlkbzp2YXIgYix5O3JldHVybiBudWxsIT09KGI9ZS5DcmVkZW50aWFscykmJnZvaWQgMCE9PWImJm51bGwhPT0oeT1iLkZpZG9QYXJhbXMpJiZ2b2lkIDAhPT15JiZ5LlNob3dJbnRlcnN0aXRpYWw/U3goVHQuTG9naW5QYXNza2V5SW50ZXJzdGl0aWFsKTpTeChUdC5GaWRvKTtjYXNlICRQLkZlZGVyYXRpb246Y2FzZSAkUC5DbG91ZEZlZGVyYXRpb246cmV0dXJuIFN4KFR0LklkcFJlZGlyZWN0LGYpO2Nhc2UgJFAuTGlua2VkSW46Y2FzZSAkUC5HaXRIdWI6Y2FzZSAkUC5Hb29nbGU6Y2FzZSAkUC5GYWNlYm9vazpyZXR1cm4gU3goVHgoZSx0LHIsYSkubGVuZ3RoPjF8fEV4KGUsdCxyLGEpLmxlbmd0aD4wP1R0LklkcFJlZGlyZWN0U3BlZWRidW1wOlR0LklkcFJlZGlyZWN0LGYpO2Nhc2UgJFAuTm9QcmVmZXJyZWRDcmVkZW50aWFsOnJldHVybiBTeChUdC5DcmVkZW50aWFsUGlja2VyLGYpO2Nhc2UgJFAuT3RoZXJNaWNyb3NvZnRJZHBGZWRlcmF0aW9uOnJldHVybiBDeChuLGUscyx1KTtjYXNlICRQLlBhc3N3b3JkOmRlZmF1bHQ6cmV0dXJuIFN4KFR0LlBhc3N3b3JkKX19KHQsbixyLG8sdywhKCF2Lm90Y0NyZWRlbnRpYWx8fCF2Lm90Y0NyZWRlbnRpYWwucHJvb2YuY2xlYXJEaWdpdHMpLGwpfWVsc2UgaD1TeChUdC5JZHBEaXNhbWJpZ3VhdGlvbixweCh7aGFzSWRwRGlzYW1iaWdFcnJvcjohMCxkZXNrdG9wU3NvRW5hYmxlZDpmYWxzZX0sdykpfWlmKGguZmxvd1Rva2VuPXQuRmxvd1Rva2VufHxudWxsLCFoLmJ5cGFzc0NhY2hlKXt2YXIgeD10O2RlbGV0ZSB4LkZsb3dUb2tlbixieC5zZXQocix4KX1yZXR1cm4gaC5zaGFyZWREYXRhPXYsaH0sRHg9ZnVuY3Rpb24oKXt2YXIgZT1jeChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0KXt2YXIgbixyLG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbj10LmdldENyZWRlbnRpYWxUeXBlVXJsLHI9d3godCksbz17Ym9keTpKU09OLnN0cmluZ2lmeShyKX0sZS5hYnJ1cHQoXCJyZXR1cm5cIiwoMCxiUy5NVykobixvKSk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksTng9ZnVuY3Rpb24oKXt2YXIgZT1jeChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4scil7dmFyIG8saSxhLGwscyxjLHUsZCxmO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG89dC5hbGxvd2VkSWRlbnRpdGllcyxpPXQuZmVkUXMsYT10LmlzRmlkb1N1cHBvcnRlZCxsPXQub3RoZXJJZHBSZWRpcmVjdFVybCxzPXQudW5zYWZlVXNlcm5hbWUsYz1ueChzLCEwKSx1PXZ4KGMpLGQ9ISF1LGY9dT9Qcm9taXNlLnJlc29sdmUodSk6RHgodCksZS5hYnJ1cHQoXCJyZXR1cm5cIixmLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBMeChsLGUsbixjLGEsZCxpLHIsbyl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiB0PXt9LG49ZS5yZXNwb25zZUJvZHkscj1seC5pbnN0YW5jZS5nY3RTdHJpbmdzLCh0PXh4KHIuZ2VuZXJpY0djdEZhaWx1cmUpKS5mbG93VG9rZW49KG51bGw9PW4/dm9pZCAwOm4uRmxvd1Rva2VuKXx8bnVsbCx0O3ZhciB0LG4scn0pKSk7Y2FzZSA2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLFJ4PW4oNjQwMSk7ZnVuY3Rpb24gQngoZSl7cmV0dXJuIEJ4PVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LEJ4KGUpfXZhciBVeD1cIlRodSwgMzAtT2N0LTE5ODAgMTY6MDA6MDAgR01UXCIsRng9IShudWxsPT09KHl4PXdpbmRvdy5TZXJ2ZXJEYXRhKXx8dm9pZCAwPT09eXh8fCF5eC5mVXNlU2FtZVNpdGUpLE14PWZ1bmN0aW9uKGUpe3JldHVybiBlJiZGeD9cIjtTYW1lU2l0ZT1Ob25lXCI6XCJcIn0seng9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXR8fGRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lLG89ci5zcGxpdChcIi5cIiksaT1vLmxlbmd0aCxhPVwiXCIuY29uY2F0KG9baS0yXSxcIi5cIikuY29uY2F0KG9baS0xXSksbD1ufHxcIi9cIixzPVwiaHR0cHM6XCI9PT1kb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCxjPXM/XCI7c2VjdXJlXCI6XCJcIix1PU14KHMpO2RvY3VtZW50LmNvb2tpZT0oMCxzdC5aNykoXCJ7MH09IDtkb21haW49LnsxfTtwYXRoPXsyfTtleHBpcmVzPXszfXs0fXs1fVwiLGUsYSxsLFV4LGMsdSksZG9jdW1lbnQuY29va2llPSgwLHN0Llo3KShcInswfT0gO2RvbWFpbj0uezF9O3BhdGg9ezJ9O2V4cGlyZXM9ezN9ezR9ezV9XCIsZSxyLGwsVXgsYyx1KX0sSHg9ZnVuY3Rpb24oZSx0LG4scixvLGksYSxsLHMpe3ZhciBjPWk/XCIuXCI6XCJcIix1PWRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lLnNwbGl0KFwiLlwiKTtvJiZ1LnNwbGljZSgwLE1hdGgubWF4KDAsdS5sZW5ndGgtMikpO3ZhciBkLGY9Yyt1LmpvaW4oXCIuXCIpOyFmdW5jdGlvbihlLHQsbixyLG8saSxhLGwpe2lmKFwiXCI9PT10KXp4KGUsbyk7ZWxzZXt2YXIgcyxjPVwib2JqZWN0XCI9PT1CeCh0KT8oMCxSeC5NUCkodCxcIiZcIixcIj1cIik6dCx1PXI/XCI7ZXhwaXJlcz1cIi5jb25jYXQocik6XCJcIixkPW8/XCI7ZG9tYWluPVwiLmNvbmNhdChvKTpcIlwiLGY9aXx8XCIvXCIscD1uP1wiO3NlY3VyZVwiOlwiXCI7cz1hJiZcIm5vbmVcIiE9PWEudG9Mb3dlckNhc2UoKT9cIjtTYW1lU2l0ZT1cIi5jb25jYXQoYSk6TXgoISFuKTt2YXIgZz0oMCxzdC5aNykoXCJ7MH07cGF0aD17MX17Mn17M317NH1cIixkLGYsdSxwLHMpO2lmKGwpe2Zvcih2YXIgbT00ZTMtZy5sZW5ndGgtZS5sZW5ndGgtMSxoPU1hdGguY2VpbChjLmxlbmd0aC9tKSxiPSgwLHN0LnZNKShkb2N1bWVudC5jb29raWUsXCI7XCIsXCI9XCIsITEsc3QuZnkpLHk9MDt5PGg7eSs9MSl7dmFyIHY9MD09PXk/XCJcIjp5LnRvU3RyaW5nKCksdz1jLnN1YnN0cmluZyh5Km0sKHkrMSkqbSksUz0oMCxzdC5aNykoXCJ7MH17MX09ezJ9ezN9XCIsZSx2LHcsZyk7ZG9jdW1lbnQuY29va2llPVN9Zm9yKDs7eSs9MSl7dmFyIFA9ZSt5LnRvU3RyaW5nKCk7aWYoIWJbUF0pYnJlYWs7engoUCxvLGkpfX1lbHNle3ZhciB4PSgwLHN0Llo3KShcInswfT17MX17Mn1cIixlLGMsZyk7ZG9jdW1lbnQuY29va2llPXh9fX0oZSx0LG4scj8oZD1uZXcgRGF0ZSxkLnNldERhdGUoZC5nZXREYXRlKCkrMzkwKSxkLnRvVVRDU3RyaW5nKCkpOnZvaWQgMCxmLGEsbCxzKX07ZnVuY3Rpb24gVngoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBXeChlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtWeChpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtWeChpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX19dmFyIEd4PWZ1bmN0aW9uKCl7dmFyIGU9V3gocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG4uZSg0ODkpLnRoZW4obi5iaW5kKG4sOTM3MzYpKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LHI9dC5DWEgsZS5hYnJ1cHQoXCJyZXR1cm5cIixyKTtjYXNlIDU6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLCR4PWZ1bmN0aW9uKCl7dmFyIGU9V3gocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCxuKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixHeCgpO2Nhc2UgMjoocj1lLnNlbnQpLmVuY3J5cHRVc2VyRGF0YUFzeW5jKHQsKGZ1bmN0aW9uKGUpe3IucHJvcGVydHlCYWdTZXRBc3luYyhyLlByb3BlcnR5QmFnSXRlbU5hbWVzLkVuY3J5cHRlZFBhc3N3b3JkLGUsbil9KSk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxLeD1mdW5jdGlvbigpe3ZhciBlPVd4KHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQsbixyLG8saSl7dmFyIGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsR3goKTtjYXNlIDI6YT1lLnNlbnQsIXR8fG58fHI/aSghMSk6YS5wdWJsaWNQcm9wZXJ0eUJhZ0dldEFzeW5jKGEuUHJvcGVydHlCYWdJdGVtTmFtZXMuV2FzRGlzYW1iaWd1YXRpb25QYWdlU2hvd24sKGZ1bmN0aW9uKGUpe2koIW8mJiEhZSl9KSk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbixyLG8saSl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxxeD1mdW5jdGlvbigpe3ZhciBlPVd4KHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciBuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLEd4KCk7Y2FzZSAyOm49ZS5zZW50LHQ/KG4uc2hvd0JhY2tCdXR0b24oITApLG4uaGFuZGxlQmFja0J1dHRvbih0KSk6bi5zaG93QmFja0J1dHRvbighMSk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksUXg9ZnVuY3Rpb24oKXt2YXIgZT1XeChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLEd4KCk7Y2FzZSAyOmUuc2VudC5zZXRCYWNrTmF2aWdhdGlvbkNoZWNrcG9pbnQoKTtjYXNlIDQ6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLFh4PWZ1bmN0aW9uKCl7dmFyIGU9V3gocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsR3goKTtjYXNlIDI6ZS5zZW50LnNob3dHcmFwaGljQW5pbWF0aW9uKHQpO2Nhc2UgNDpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLFl4PWZ1bmN0aW9uKCl7dmFyIGU9V3gocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixHeCgpO2Nhc2UgMjoodD1lLnNlbnQpLnZvbGF0aWxlUHJvcGVydHlCYWdTZXRBc3luYyhcIklkZW50aXR5XCIsdC5Qcm9wZXJ0eUJhZ0l0ZW1OYW1lcy5XYXNNc2FDb25zZW50RGlzcGxheWVkLFwidHJ1ZVwiKTtjYXNlIDQ6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLFp4PWZ1bmN0aW9uKCl7dmFyIGU9V3gocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCxuKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixHeCgpO2Nhc2UgMjpyPWUuc2VudCxuJiZyLmdldENvbnRleHQoKGZ1bmN0aW9uKGUpe24oXCJzdHJpbmdcIiE9dHlwZW9mIGUuY2FwYWJpbGl0aWVzJiYxPT09ZS5jYXBhYmlsaXRpZXNbdF0pfSkpO2Nhc2UgNDpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksSng9ZnVuY3Rpb24oKXt2YXIgZT1XeChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4scixvLGksYSxsKXt2YXIgcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixHeCgpO2Nhc2UgMjpzPWUuc2VudCx0P2woITAsITApOm4/IXJ8fG98fGl8fGE/Wngocy5DYXBhYmlsaXRpZXMuQ2hyb21lbGVzc1VJLChmdW5jdGlvbihlKXtsKCEhZSwhIWUpfSkpOnMucHVibGljUHJvcGVydHlCYWdHZXRBc3luYyhzLlByb3BlcnR5QmFnSXRlbU5hbWVzLldhc0Rpc2FtYmlndWF0aW9uUGFnZVNob3duLChmdW5jdGlvbihlKXtsKCEhZSwhMSl9KSk6bCghMCwhMSk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbixyLG8saSxhLGwpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksZU89ZnVuY3Rpb24oKXt2YXIgZT1XeChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLEd4KCk7Y2FzZSAyOnI9ZS5zZW50LHQ/KHIubG9nRXZlbnQoXCJJZGVudGl0eS5PZmZsaW5lQWNjb3VudC5DbGlja2VkXCIpLG4/ci5sb2FkSWRlbnRpdHlQcm92aWRlcihyLlNpZ25JbklkZW50aXR5UHJvdmlkZXJzLkxvY2FsKTpyLmZpbmlzaChyLkZpbmlzaFN0YXRlcy5BYm9ydCkpOnIubG9hZElkZW50aXR5UHJvdmlkZXIoci5TaWduSW5JZGVudGl0eVByb3ZpZGVycy5Mb2NhbCk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx0Tz1mdW5jdGlvbigpe3ZhciBlPVd4KHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQsbil7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsR3goKTtjYXNlIDI6ZS5zZW50LmxvZ0V2ZW50KHQsbik7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiBuTyhlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfXZhciByTz1mdW5jdGlvbigpe3ZhciBlLHQ9KGU9cmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCxuLHIpe3ZhciBvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsR3goKTtjYXNlIDI6bz1lLnNlbnQsdD9vLmZpbmlzaChvLkZpbmlzaFN0YXRlcy5FeGl0Q3hoU3VjY2Vzcyk6bj8oaT1yP1wiTVNBLkFzc29jaWF0ZVVwc2VsbC5CYWNrQ2xpY2tlZFwiOlwiTVNBLkNvbm5lY3RVcHNlbGwuQmFja0NsaWNrZWRcIixvLmxvZ0V2ZW50KGkpLG8uc2V0QXV0aEVycm9yQW5kQ29tcGxldGUoXCI4MDA0ODg0MlwiLFwiODAwNDM0RjVcIikpOm8uZmluaXNoKG8uRmluaXNoU3RhdGVzLkNhbmNlbCk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSxmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe25PKGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe25PKGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIG9PKGUsdCxuLHIsbyxpLGEpe3RyeXt2YXIgbD1lW2ldKGEpLHM9bC52YWx1ZX1jYXRjaChjKXtyZXR1cm4gdm9pZCBuKGMpfWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gaU8oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGEoZSl7b08oaSxyLG8sYSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7b08oaSxyLG8sYSxsLFwidGhyb3dcIixlKX1hKHZvaWQgMCl9KSl9fXZhciBhTz1mdW5jdGlvbigpe3ZhciBlPWlPKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQsbil7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsR3goKTtjYXNlIDI6cj1lLnNlbnQsdD8oci5sb2dFdmVudChcIk1TQS5Ub2tlbkJyb2tlci5CYWNrQ2xpY2tlZFwiKSxyLnNldEF1dGhFcnJvckFuZENvbXBsZXRlKFwiODAwNDg4NDJcIixcIjgwMDQzNEY1XCIpKTpuJiZyLmZpbmlzaChyLkZpbmlzaFN0YXRlcy5DYW5jZWwpO2Nhc2UgNDpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZnVuY3Rpb24gbE8oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHNPKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHNPKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBzTyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGNPKGUsdCl7cmV0dXJuIGUrKHQ/XCIgXHUyMDBmKFx1MjAwZStcIi5jb25jYXQodCxcIilcIik6XCJcIil9dmFyIHVPLGRPPW5ldyBMbS5yKHthbGxvd1Bob25lOiEwLGFsbG93U2t5cGU6ITAsYWxsb3dlZElkZW50aXRpZXM6MCxhcHBCcmFuZGVkU2lnbkluSGVhZGVyOlwiXCIsYnJlYWtCcmFuZGluZ1NpZ25pblN0cmluZzohMSxjYW5hcnlWYWxpZGF0aW9uVXJsOlwiXCIsY2hhbmdlUGFzc3dvcmRVcmw6XCJcIixjb3VudHJ5TGlzdDpbXSxjcmVkZW50aWFsVHlwZVJlc3VsdDp7fSxkZWZhdWx0Q291bnRyeTpcIlwiLGRlZmF1bHRMb2dpbk9wdGlvbnM6MCxkZWZhdWx0U2lnbkluSGVhZGVyOlwiXCIsZGlzYW1iaWdSZW5hbWVVcmw6XCJcIixkb0lmRXhpc3RzOiExLGVuYWJsZUFyaWFMaXZlVXBkYXRlczohMSxleHRlcm5hbENhbmFyeTpcIlwiLGZhY2Vib29rRmVkVXJsOlwiXCIsZmVkUGFydG5lck5hbWU6XCJcIixmZWRRczpcIlwiLGZlZFN0YXRlOjAsZmVkVXJsOlwiXCIsZmlkb0hlbHBVcmw6XCJcIixmaWRvQ2hhbGxlbmdlOlwiXCIsZmlkb1VzZUFsbG93ZWRJZGVudGl0aWVzOiExLGZsb3dUb2tlbkNvb2tpZU5hbWU6XCJcIixmb3JnZXRVcmw6XCJcIixmb3Jnb3RVc2VybmFtZVVybDpcIlwiLGZvdW5kTXNhczpcIlwiLGdjdEZlZGVyYXRpb25GbGFnczowLGdldENyZWRlbnRpYWxUeXBlVXJsOlwiXCIsZ2l0aHViRmVkVXJsOlwiXCIsZ29vZ2xlRmVkVXJsOlwiXCIsaGFzV2l6YXJkQmVoYXZpb3I6ITEsaGlkZUxvZ2luRGVzY3JpcHRpb246ITEsaGlkZU9mZmxpbmVBY2NvdW50TmV3VGl0bGVTdHJpbmc6ITEsaGlkZU9mZmxpbmVBY2NvdW50V2l0aE5vU2tpcFN0cmluZzohMSxpZHBSZWRpcmVjdFRpbWVvdXRNczoyZTMsaW1wcm92ZVBob25lRGlzYW1iaWd1YXRpb246ITEsaXB2NkV4cGVyaW1lbnRVcmw6XCJcIixpc0V4dGVybmFsRmVkZXJhdGlvbkRpc2FsbG93ZWQ6ITEsaXNGZWRlcmF0aW9uRGlzYWJsZWQ6ITEsaXNGaWRvU3VwcG9ydGVkSGludDohMSxpc09vYmU6ITEsaXNPdGNMb2dpbkRpc2FibGVkOiExLGlzT3ZlclRoZVNob3VsZGVyOiExLGlzUGFzc2tleVN1cHBvcnRlZDohMSxpc1JlbW90ZUNvbm5lY3RTaWdudXA6ITEsaXNSZW1vdGVOR0NTdXBwb3J0ZWQ6ITEsaXNTY29vYmU6ITEsaXNUb2tlbkJyb2tlcjohMSxsaW5rZWRJbkZlZFVybDpcIlwiLGxvY2tVc2VybmFtZTohMSxsb2dpbkRlc2NyaXB0aW9uOlwiXCIsbG9naW5Nb2RlOjAsbG9naW5TdHJpbmdzVmFyaWFudDowLGxvZ291dFVybDpcIlwiLGxvZ1NraXBUb09mZmxpbmVBY2NvdW50QWN0aW9uOiExLGxvc3RBdXRoZW50aWNhdG9yVXJsOlwiXCIsbXNhU2VydmVyTG90dGllSWQ6MCxub0Nvb2tpZXNVcmw6XCJcIixub0xvc3NBdmVyc2lvbjohMSxvZmZsaW5lQWNjb3VudFZpc2libGU6ITEsb29iZVByb3BlcnRpZXM6e29vYmVEaXNwbGF5Q29uc2VudFdpdGhvdXRPbmVEcml2ZTohMSxvb2JlRGlzcGxheVNlcnZpY2VzQ29uc2VudDohMSxvb2JlRGlzcGxheVVuaWZpZWRDb25zZW50OiExLG9vYmVTZXJ2aWNlc0luZm9ybWF0aW9uTGluazpcIlwifSxvdGhlcklkcFBvc3RQYXJhbXM6e30scGFzc3dvcmRWaWV3SGVhZGVyOlwiXCIscG9zdGVkRm9yY2VTaWduSW46ITEscG9zdGVkTG9naW5TdGF0ZTowLHBvc3RlZFVzZXJuYW1lOlwiXCIscG9zdFByb29mVHlwZTowLHByZWZlckFzc29jaWF0ZTohMSxwcmVmaWxsVXNlcm5hbWU6XCJcIixwcm9tb3RlZEZlZENyZWRUeXBlOjAscHJvdG9jb2xSZWZyZXNoVXJsOlwiXCIscmFuZG9tQmxvYjpcIlwiLHJhd1F1ZXJ5U3RyaW5nOlwiXCIscmVtb3RlQ29ubmVjdEFwcE5hbWU6XCJcIixyZW1vdGVDb25uZWN0TG9jYXRpb246XCJcIixyZW1vdGVDb25uZWN0VXNlckNvZGU6XCJcIixyZXNldFBhc3N3b3JkUHJlZmlsbFBhcmFtOlwibW5cIixyZXNldFBhc3N3b3JkVXJsOlwiXCIscmlza3lTaWduSW46ITEsc2VydmVyRXJyb3JUZXh0OlwiXCIsc2VydmVyVmFsaWRhdGlvbkVycm9yczpbXSxzaG93Rmlkb0lubGluZTohMSxzaG93Rm9yZ290VXNlcm5hbWVMaW5rOiExLHNob3dMZWdhbE1lc3NhZ2luZ0lubGluZTohMSxzaG93T2ZmbGluZUFjY291bnQ6ITEsc2hvd09mZmxpbmVBY2NvdW50TGVhcm5Nb3JlOiExLHNob3dPbmx5R2l0aHViT25DcmVkUGlja2VyOiExLHNob3dSZW1vdGVDb25uZWN0TG9jYXRpb25QYWdlOiExLHNob3dTaWdudXA6ITAsc2hvd1N3aXRjaFVzZXI6ITEsc2lnbnVwVXJsOlwiXCIsc2lnbnVwVXJsUG9zdFBhcmFtczp7fSxzdGF5U2lnbkluVXJsOlwiXCIsc3dpdGNoRGlzYW1iaWc6ITEsdXBncmFkZVJlZGlyZWN0V2l0aFVzZXJuYW1lVXJsOlwiXCIsdXNlRm9yZ2V0VXNlcklmcmFtZTohMSx1c2VJbmxpbmVQaG9uZU51bWJlcjohMCx1c2VSZXNldFBhc3N3b3JkVXJsRm9yUGFzc3dvcmRSZXF1aXJlZEVycm9yOiExLHVzZVdlYnZpZXdGaWRvQ3VzdG9tUHJvdG9jb2w6ITEsd3JpdGVQYXNzd29yZFRvUHJvcGVydHlCYWc6ITEsenRkVXBuSGludDpcIlwifSksZk89ZE87ZnVuY3Rpb24gcE8oZSl7dmFyIHQsbixyLG8saT17fTtpZihudWxsIT1lJiZlLmlMb2dpbk1vZGUmJihpLmxvZ2luTW9kZT1lLmlMb2dpbk1vZGUpLG51bGwhPWUmJmUub0FwcENvYnJhbmRpbmcpe3ZhciBhPWUub0FwcENvYnJhbmRpbmc7bnVsbCE9YSYmYS5zaWduaW5EZXNjcmlwdGlvbiYmKGkubG9naW5EZXNjcmlwdGlvbj1hLnNpZ25pbkRlc2NyaXB0aW9uKSxudWxsIT1hJiZhLnNpZ25pblBhc3N3b3JkVGl0bGUmJihpLnBhc3N3b3JkVmlld0hlYWRlcj1hLnNpZ25pblBhc3N3b3JkVGl0bGUpLG51bGwhPWEmJmEuc2lnbmluVGl0bGUmJihpLmFwcEJyYW5kZWRTaWduSW5IZWFkZXI9YS5zaWduaW5UaXRsZSl9aWYobnVsbCE9ZSYmZS5pUHJvbW90ZWRGZWRDcmVkVHlwZSYmKGkucHJvbW90ZWRGZWRDcmVkVHlwZT1lLmlQcm9tb3RlZEZlZENyZWRUeXBlKSxudWxsIT1lJiZlLnVybExpbmtlZEluRmVkJiYoaS5saW5rZWRJbkZlZFVybD1lLnVybExpbmtlZEluRmVkKSxudWxsIT1lJiZlLnVybEdpdEh1YkZlZCYmKGkuZ2l0aHViRmVkVXJsPWUudXJsR2l0SHViRmVkKSxudWxsIT1lJiZlLnVybEdvb2dsZUZlZCYmKGkuZ29vZ2xlRmVkVXJsPWUudXJsR29vZ2xlRmVkKSxudWxsIT1lJiZlLnVybEZhY2Vib29rRmVkJiYoaS5mYWNlYm9va0ZlZFVybD1lLnVybEZhY2Vib29rRmVkKSx2b2lkIDA9PT0obnVsbD09ZT92b2lkIDA6ZS5mQWxsb3dQaG9uZVNpZ25JbikmJnZvaWQgMD09PShudWxsPT1lP3ZvaWQgMDplLmZBbGxvd1Bob25lSW5wdXQpfHwoaS5hbGxvd1Bob25lPSEhKG51bGwhPWUmJmUuZkFsbG93UGhvbmVTaWduSW58fG51bGwhPWUmJmUuZkFsbG93UGhvbmVJbnB1dCkpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZBbGxvd1NreXBlTmFtZUxvZ2luKSYmKGkuYWxsb3dTa3lwZT1udWxsPT1lP3ZvaWQgMDplLmZBbGxvd1NreXBlTmFtZUxvZ2luKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mU2hvd1NpZ25JbldpdGhGaWRvT25Vc2VybmFtZVZpZXcpJiYoaS5zaG93Rmlkb0lubGluZT1lLmZTaG93U2lnbkluV2l0aEZpZG9PblVzZXJuYW1lVmlldyksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZlNob3dGb3Jnb3RVc2VybmFtZUxpbmspJiYoaS5zaG93Rm9yZ290VXNlcm5hbWVMaW5rPWUuZlNob3dGb3Jnb3RVc2VybmFtZUxpbmspLG51bGwhPWUmJmUudXJsRm9yZ290VXNlcm5hbWUmJihpLmZvcmdvdFVzZXJuYW1lVXJsPWUudXJsRm9yZ290VXNlcm5hbWUpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZPZmZsaW5lQWNjb3VudFZpc2libGUpJiYoaS5zaG93T2ZmbGluZUFjY291bnQ9ZS5mT2ZmbGluZUFjY291bnRWaXNpYmxlKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mU2hvd1NpZ25JbldpdGhHaXRIdWJPbmx5T25DcmVkUGlja2VyKSYmKGkuc2hvd09ubHlHaXRodWJPbkNyZWRQaWNrZXI9ZS5mU2hvd1NpZ25JbldpdGhHaXRIdWJPbmx5T25DcmVkUGlja2VyKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSXNGaWRvU3VwcG9ydGVkKSYmKGkuaXNGaWRvU3VwcG9ydGVkSGludD1lLmZJc0ZpZG9TdXBwb3J0ZWQpLG51bGwhPWUmJmUudXJsTm9Db29raWVzJiYoaS5ub0Nvb2tpZXNVcmw9ZS51cmxOb0Nvb2tpZXMpLG51bGwhPWUmJmUuaUZlZFN0YXRlJiYoaS5mZWRTdGF0ZT1lLmlGZWRTdGF0ZSksbnVsbCE9ZSYmZS5pRGVmYXVsdExvZ2luT3B0aW9ucyYmKGkuZGVmYXVsdExvZ2luT3B0aW9ucz1lLmlEZWZhdWx0TG9naW5PcHRpb25zKSxudWxsIT1lJiZlLnVybEZlZCYmKGkuZmVkVXJsPWUudXJsRmVkKSxudWxsIT1lJiZlLnNGZWRRUyYmKGkuZmVkUXM9ZS5zRmVkUVMpLG51bGwhPWUmJmUuaUxvZ2luU3RyaW5nc1ZhcmlhbnRJZCYmKGkubG9naW5TdHJpbmdzVmFyaWFudD1lLmlMb2dpblN0cmluZ3NWYXJpYW50SWQpLG51bGwhPWUmJmUuc1JlbW90ZUNvbm5lY3RBcHBOYW1lJiYoaS5yZW1vdGVDb25uZWN0QXBwTmFtZT1lLnNSZW1vdGVDb25uZWN0QXBwTmFtZSksbnVsbCE9ZSYmZS51cmxJUHY2RXhwZXJpbWVudCYmKGkuaXB2NkV4cGVyaW1lbnRVcmw9ZS51cmxJUHY2RXhwZXJpbWVudCksbnVsbCE9ZSYmZS5zRmVkUGFydG5lck5hbWUmJihpLmZlZFBhcnRuZXJOYW1lPWUuc0ZlZFBhcnRuZXJOYW1lKSxudWxsIT1lJiZlLnVybFN0YXlTaWduSW4mJihpLnN0YXlTaWduSW5Vcmw9ZS51cmxTdGF5U2lnbkluKSxudWxsIT1lJiZlLnN0clNpZ25JbkhlYWRlciYmKGkuZGVmYXVsdFNpZ25JbkhlYWRlcj1lLnN0clNpZ25JbkhlYWRlciksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZkJyZWFrQnJhbmRpbmdTaWduaW5TdHJpbmcpJiYoaS5icmVha0JyYW5kaW5nU2lnbmluU3RyaW5nPWUuZkJyZWFrQnJhbmRpbmdTaWduaW5TdHJpbmcpLG51bGwhPWUmJmUuaUdjdEZlZGVyYXRpb25GbGFncyYmKGkuZ2N0RmVkZXJhdGlvbkZsYWdzPWUuaUdjdEZlZGVyYXRpb25GbGFncyksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZklzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZCkmJihpLmlzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZD0hIWUuZklzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZCksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZklzRmVkRGlzYWJsZWQpJiYoaS5pc0ZlZGVyYXRpb25EaXNhYmxlZD1lLmZJc0ZlZERpc2FibGVkKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSXNSZW1vdGVOR0NTdXBwb3J0ZWQpJiYoaS5pc1JlbW90ZU5HQ1N1cHBvcnRlZD1lLmZJc1JlbW90ZU5HQ1N1cHBvcnRlZCksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZklzT3RjTG9naW5EaXNhYmxlZCkmJihpLmlzT3RjTG9naW5EaXNhYmxlZD1lLmZJc090Y0xvZ2luRGlzYWJsZWQpLG51bGwhPWUmJmUudXJsR2V0Q3JlZGVudGlhbFR5cGUmJihpLmdldENyZWRlbnRpYWxUeXBlVXJsPWUudXJsR2V0Q3JlZGVudGlhbFR5cGUpLG51bGwhPWUmJmUuc1NNU0N0cnlQaG9uZURhdGEmJihpLmNvdW50cnlMaXN0PSh0PWUuc1NNU0N0cnlQaG9uZURhdGEsbj0hMCxyPVtdLG89KDAsc3Qudk0pKHQsXCIhISFcIixcIn5cIiwhMCksT2JqZWN0LmVudHJpZXMobykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9bE8oZSwyKSxvPXRbMF0saT10WzFdLGE9bnx8XCJKUFwiIT09bz9pWzFdOlwiXCIsbD17aXNvOm8sZGlzcGxheVZhbHVlOmNPKGlbMF0sYSksY29kZTphfTtyLnB1c2gobCl9KSkscikpLG51bGwhPWUmJmUuc1ByZWZTTVNDb3VudHJ5JiYoaS5kZWZhdWx0Q291bnRyeT1lLnNQcmVmU01TQ291bnRyeSksbnVsbCE9ZSYmZS5zUHJvb2ZUeXBlJiYoaS5wb3N0UHJvb2ZUeXBlPXBhcnNlSW50KGUuc1Byb29mVHlwZSwxMCkpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZVc2VJbmxpbmVQaG9uZU51bWJlcikmJihpLnVzZUlubGluZVBob25lTnVtYmVyPWUuZlVzZUlubGluZVBob25lTnVtYmVyKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mQ0JTaG93U2lnblVwKSYmKGkuc2hvd1NpZ251cD1lLmZDQlNob3dTaWduVXApLG51bGwhPWUmJmUudXJsU2lnblVwJiYoaS5zaWdudXBVcmw9ZS51cmxTaWduVXApLG51bGwhPWUmJmUuc1JhbmRvbUJsb2ImJihpLnJhbmRvbUJsb2I9ZS5zUmFuZG9tQmxvYiksbnVsbCE9ZSYmZS5zRm91bmRNU0FzJiYoaS5mb3VuZE1zYXM9ZS5zRm91bmRNU0FzKSxudWxsIT1lJiZlLnNSYXdRdWVyeVN0cmluZyYmKGkucmF3UXVlcnlTdHJpbmc9ZS5zUmF3UXVlcnlTdHJpbmcpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZQT1NUX0ZvcmNlU2lnbmluKSYmKGkucG9zdGVkRm9yY2VTaWduSW49ZS5mUE9TVF9Gb3JjZVNpZ25pbiksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZlVzZVdpemFyZEJlaGF2aW9yKSYmKGkuaGFzV2l6YXJkQmVoYXZpb3I9ZS5mVXNlV2l6YXJkQmVoYXZpb3IpLG51bGwhPWUmJmUub1NpZ25VcFBvc3RQYXJhbXMmJihpLnNpZ251cFVybFBvc3RQYXJhbXM9ZS5vU2lnblVwUG9zdFBhcmFtcyksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZkRvSWZFeGlzdHMpJiYoaS5kb0lmRXhpc3RzPWUuZkRvSWZFeGlzdHMpLG51bGwhPWUmJmUudXJsUmVzZXRQYXNzd29yZCYmKGkucmVzZXRQYXNzd29yZFVybD1lLnVybFJlc2V0UGFzc3dvcmQpLG51bGwhPWUmJmUudXJsRmlkb0hlbHAmJihpLmZpZG9IZWxwVXJsPWUudXJsRmlkb0hlbHApLG51bGwhPWUmJmUuc0V4dGVybmFsQ2FuYXJ5JiYoaS5leHRlcm5hbENhbmFyeT1lLnNFeHRlcm5hbENhbmFyeSksbnVsbCE9ZSYmZS51cmxDYW5hcnlWYWxpZGF0aW9uJiYoaS5jYW5hcnlWYWxpZGF0aW9uVXJsPWUudXJsQ2FuYXJ5VmFsaWRhdGlvbiksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZklzUmVtb3RlQ29ubmVjdFNpZ251cCkmJihpLmlzUmVtb3RlQ29ubmVjdFNpZ251cD1lLmZJc1JlbW90ZUNvbm5lY3RTaWdudXApLG51bGwhPWUmJmUudXJsRGlzYW1iaWdSZW5hbWUmJihpLmRpc2FtYmlnUmVuYW1lVXJsPWUudXJsRGlzYW1iaWdSZW5hbWUpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZTaG93U3dpdGNoVXNlcikmJihpLnNob3dTd2l0Y2hVc2VyPWUuZlNob3dTd2l0Y2hVc2VyKSxpLm90aGVySWRwUG9zdFBhcmFtcz1lLm9VcmxPdGhlcklkcFBvc3RQYXJhbXMsdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZlN3aXRjaERpc2FtYmlnKSYmKGkuc3dpdGNoRGlzYW1iaWc9ZS5mU3dpdGNoRGlzYW1iaWcpLG51bGwhPWUmJmUuaUFsbG93ZWRJZGVudGl0aWVzJiYoaS5hbGxvd2VkSWRlbnRpdGllcz1lLmlBbGxvd2VkSWRlbnRpdGllcyksbnVsbCE9ZSYmZS5zRmlkb0NoYWxsZW5nZSYmKGkuZmlkb0NoYWxsZW5nZT1lLnNGaWRvQ2hhbGxlbmdlKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mRmlkb1VzZUFsbG93ZWRJZGVudGl0aWVzKSYmKGkuZmlkb1VzZUFsbG93ZWRJZGVudGl0aWVzPWUuZkZpZG9Vc2VBbGxvd2VkSWRlbnRpdGllcyksbnVsbCE9ZSYmZS51cmxMb3N0QXV0aGVudGljYXRvciYmKGkubG9zdEF1dGhlbnRpY2F0b3JVcmw9ZS51cmxMb3N0QXV0aGVudGljYXRvciksbnVsbCE9ZSYmZS5zUmVzZXRQYXNzd29yZFByZWZpbGxQYXJhbSYmKGkucmVzZXRQYXNzd29yZFByZWZpbGxQYXJhbT1lLnNSZXNldFBhc3N3b3JkUHJlZmlsbFBhcmFtKSxudWxsIT1lJiZlLnVybExvZ2luJiYoaS5wcm90b2NvbFJlZnJlc2hVcmw9ZS51cmxMb2dpbiksbnVsbCE9ZSYmZS51cmxVcGdyYWRlUmVkaXJlY3RXaXRoVXNlcm5hbmUmJihpLnVwZ3JhZGVSZWRpcmVjdFdpdGhVc2VybmFtZVVybD1lLnVybFVwZ3JhZGVSZWRpcmVjdFdpdGhVc2VybmFuZSksbnVsbCE9ZSYmZS5zUmVtb3RlQ29ubmVjdFVzZXJDb2RlJiYoaS5yZW1vdGVDb25uZWN0VXNlckNvZGU9ZS5zUmVtb3RlQ29ubmVjdFVzZXJDb2RlKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSW1wcm92ZVBob25lRGlzYW1iaWcpJiYoaS5pbXByb3ZlUGhvbmVEaXNhbWJpZ3VhdGlvbj1lLmZJbXByb3ZlUGhvbmVEaXNhbWJpZyksbnVsbCE9ZSYmZS5zRlRDb29raWVOYW1lJiYoaS5mbG93VG9rZW5Db29raWVOYW1lPWUuc0ZUQ29va2llTmFtZSksbnVsbCE9ZSYmZS51cmxGb3JnZXQmJihpLmZvcmdldFVybD1lLnVybEZvcmdldCksbnVsbCE9ZSYmZS51cmxMb2dvdXQmJihpLmxvZ291dFVybD1lLnVybExvZ291dCksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZlVzZUZvcmdldFVzZXJJZnJhbWUpJiYoaS51c2VGb3JnZXRVc2VySWZyYW1lPWUuZlVzZUZvcmdldFVzZXJJZnJhbWUpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZJc1Jpc2t5U2lnbkluRGV0ZWN0ZWQpJiYoaS5yaXNreVNpZ25Jbj1lLmZJc1Jpc2t5U2lnbkluRGV0ZWN0ZWQpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZMb2NrVXNlcm5hbWUpJiYoaS5sb2NrVXNlcm5hbWU9ZS5mTG9ja1VzZXJuYW1lKSxudWxsIT1lJiZlLnNQT1NUX1BhZ2luYXRlZExvZ2luU3RhdGUmJihpLnBvc3RlZExvZ2luU3RhdGU9cGFyc2VJbnQoZS5zUE9TVF9QYWdpbmF0ZWRMb2dpblN0YXRlLDEwKXx8ZVApLG51bGwhPWUmJmUuc0VyclR4dCYmKGkuc2VydmVyRXJyb3JUZXh0PWUuc0VyclR4dCksbnVsbCE9ZSYmZS5hcnJWYWxFcnJzJiYoaS5zZXJ2ZXJWYWxpZGF0aW9uRXJyb3JzPWUuYXJyVmFsRXJycyksbnVsbCE9ZSYmZS5zUE9TVF9Vc2VybmFtZSYmKGkucG9zdGVkVXNlcm5hbWU9ZS5zUE9TVF9Vc2VybmFtZSksbnVsbCE9ZSYmZS5zUHJlZmlsbFVzZXJuYW1lJiYoaS5wcmVmaWxsVXNlcm5hbWU9ZS5zUHJlZmlsbFVzZXJuYW1lKSxudWxsIT1lJiZlLnNadGRVcG5IaW50JiYoaS56dGRVcG5IaW50PWUuc1p0ZFVwbkhpbnQpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZTaG93UmVtb3RlQ29ubmVjdExvY2F0aW9uUGFnZSkmJihpLnNob3dSZW1vdGVDb25uZWN0TG9jYXRpb25QYWdlPWUuZlNob3dSZW1vdGVDb25uZWN0TG9jYXRpb25QYWdlKSxudWxsIT1lJiZlLm9HZXRDcmVkVHlwZVJlc3VsdCl7dmFyIGw9KDAsc3QuVWMpKGUuc1BPU1RfVXNlcm5hbWV8fGUuc1NpZ25JblVzZXJuYW1lfHxlLnNQcmVmaWxsVXNlcm5hbWV8fGUuc1p0ZFVwbkhpbnR8fFwiXCIpLHM9RGkoISFlLmZJc0ZpZG9TdXBwb3J0ZWQsISFlLmZVc2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sKTtpLmNyZWRlbnRpYWxUeXBlUmVzdWx0PUx4KChudWxsPT1lP3ZvaWQgMDplLnVybEdvVG9BQURFcnJvcil8fFwiXCIsZS5vR2V0Q3JlZFR5cGVSZXN1bHQse3Nob3dTaWdudXA6bnVsbD09ZT92b2lkIDA6ZS5mQ0JTaG93U2lnblVwfSxueChsKSxzLCExLFwiXCIselAsbnVsbD09ZT92b2lkIDA6ZS5pQWxsb3dlZElkZW50aXRpZXMsbnVsbD09ZT92b2lkIDA6ZS5vVXJsT3RoZXJJZHBQb3N0UGFyYW1zKX12b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSGlkZUxvZ2luRGVzYykmJihpLmhpZGVMb2dpbkRlc2NyaXB0aW9uPWUuZkhpZGVMb2dpbkRlc2MpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZVc2VSZXNldFB3ZFVybEZvclB3ZFJlcXVpcmVkRXJyKSYmKGkudXNlUmVzZXRQYXNzd29yZFVybEZvclBhc3N3b3JkUmVxdWlyZWRFcnJvcj1lLmZVc2VSZXNldFB3ZFVybEZvclB3ZFJlcXVpcmVkRXJyKSxudWxsIT1lJiZlLnVybENoYW5nZVBhc3N3b3JkJiYoaS5jaGFuZ2VQYXNzd29yZFVybD1lLnVybENoYW5nZVBhc3N3b3JkKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mV3JpdGVQYXNzd29yZFRvUHJvcGVydHlCYWcpJiYoaS53cml0ZVBhc3N3b3JkVG9Qcm9wZXJ0eUJhZz1lLmZXcml0ZVBhc3N3b3JkVG9Qcm9wZXJ0eUJhZyksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZklzU2Nvb2JlKSYmKGkuaXNTY29vYmU9ZS5mSXNTY29vYmUpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZJc1Rva2VuQnJva2VyKSYmKGkuaXNUb2tlbkJyb2tlcj1lLmZJc1Rva2VuQnJva2VyKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSXNQYXNza2V5U3VwcG9ydEVuYWJsZWQpJiYoaS5pc1Bhc3NrZXlTdXBwb3J0ZWQ9ZS5mSXNQYXNza2V5U3VwcG9ydEVuYWJsZWQpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZTaG93T2ZmbGluZUFjY291bnRMZWFybk1vcmUpJiYoaS5zaG93T2ZmbGluZUFjY291bnRMZWFybk1vcmU9ZS5mU2hvd09mZmxpbmVBY2NvdW50TGVhcm5Nb3JlKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mU2hvd0xlZ2FsTWVzc2FnaW5nSW5saW5lKSYmKGkuc2hvd0xlZ2FsTWVzc2FnaW5nSW5saW5lPWUuZlNob3dMZWdhbE1lc3NhZ2luZ0lubGluZSksbnVsbCE9ZSYmZS5pTXNhU2VydmVyTG90dGllSWQmJihpLm1zYVNlcnZlckxvdHRpZUlkPWUuaU1zYVNlcnZlckxvdHRpZUlkKSwodm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZk9vYmVDb25zZW50V2l0aG91dE9uZURyaXZlKXx8dm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZk9vYmVEaXNwbGF5U2VydmljZXNDb25zZW50KXx8dm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZk9vYmVEaXNwbGF5VW5pZmllZENvbnNlbnQpfHxudWxsIT1lJiZlLnVybE9vYmVTZXJ2aWNlc0luZm9ybWF0aW9uTGluaykmJihpLm9vYmVQcm9wZXJ0aWVzPXtvb2JlRGlzcGxheUNvbnNlbnRXaXRob3V0T25lRHJpdmU6ISFlLmZPb2JlQ29uc2VudFdpdGhvdXRPbmVEcml2ZSxvb2JlRGlzcGxheVNlcnZpY2VzQ29uc2VudDohIWUuZk9vYmVEaXNwbGF5U2VydmljZXNDb25zZW50LG9vYmVEaXNwbGF5VW5pZmllZENvbnNlbnQ6ISFlLmZPb2JlRGlzcGxheVVuaWZpZWRDb25zZW50LG9vYmVTZXJ2aWNlc0luZm9ybWF0aW9uTGluazplLnVybE9vYmVTZXJ2aWNlc0luZm9ybWF0aW9uTGlua30pLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZPZmZsaW5lQWNjb3VudFZpc2libGUpJiYoaS5vZmZsaW5lQWNjb3VudFZpc2libGU9ZS5mT2ZmbGluZUFjY291bnRWaXNpYmxlKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSXNPT0JFKSYmKGkuaXNPb2JlPWUuZklzT09CRSksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZklzT3ZlclRoZVNob3VsZGVyKSYmKGkuaXNPdmVyVGhlU2hvdWxkZXI9bnVsbD09ZT92b2lkIDA6ZS5mSXNPdmVyVGhlU2hvdWxkZXIpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLnNSZW1vdGVDb25uZWN0TG9jYXRpb24pJiYoaS5yZW1vdGVDb25uZWN0TG9jYXRpb249ZS5zUmVtb3RlQ29ubmVjdExvY2F0aW9uKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mTm9Mb3NzQXZlcnNpb24pJiYoaS5ub0xvc3NBdmVyc2lvbj1lLmZOb0xvc3NBdmVyc2lvbiksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZlByZWZlckFzc29jaWF0ZSkmJihpLnByZWZlckFzc29jaWF0ZT1lLmZQcmVmZXJBc3NvY2lhdGUpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZIaWRlT2ZmbGluZUFjY291bnRXaXRoTm9Ta2lwU3RyaW5nKSYmKGkuaGlkZU9mZmxpbmVBY2NvdW50V2l0aE5vU2tpcFN0cmluZz0hIWUuZkhpZGVPZmZsaW5lQWNjb3VudFdpdGhOb1NraXBTdHJpbmcpLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZMb2dTa2lwVG9PZmZsaW5lQWNjb3VudEFjdGlvbikmJihpLmxvZ1NraXBUb09mZmxpbmVBY2NvdW50QWN0aW9uPWUuZkxvZ1NraXBUb09mZmxpbmVBY2NvdW50QWN0aW9uKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSGlkZU9mZmxpbmVBY2NvdW50TmV3VGl0bGVTdHJpbmcpJiYoaS5oaWRlT2ZmbGluZUFjY291bnROZXdUaXRsZVN0cmluZz0hIWUuZkhpZGVPZmZsaW5lQWNjb3VudE5ld1RpdGxlU3RyaW5nKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mVXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbCkmJihpLnVzZVdlYnZpZXdGaWRvQ3VzdG9tUHJvdG9jb2w9ISFlLmZVc2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sKSxudWxsIT1lJiZlLmZFbmFibGVBcmlhTGl2ZVVwZGF0ZXMmJihpLmVuYWJsZUFyaWFMaXZlVXBkYXRlcz1lLmZFbmFibGVBcmlhTGl2ZVVwZGF0ZXMpLGRPLmluaXRpYWxpemUoaSl9ZnVuY3Rpb24gZ08oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG1PKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG1PKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBtTyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGhPKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBiTyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9oTyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3lPKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpoTyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB5TyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gdk8oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHdPKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3ZPKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7U08oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnZPKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFNPKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX0hZnVuY3Rpb24oZSl7ZVtlLlNldENoYWxsZW5nZURhdGE9MF09XCJTZXRDaGFsbGVuZ2VEYXRhXCIsZVtlLlNldERlc2t0b3BTc29Eb21haW49MV09XCJTZXREZXNrdG9wU3NvRG9tYWluXCIsZVtlLlNldEhhc0lkcERpc2FtYmlnRXJyb3I9Ml09XCJTZXRIYXNJZHBEaXNhbWJpZ0Vycm9yXCIsZVtlLlNldElkcFJlZGlyZWN0RGF0YT0zXT1cIlNldElkcFJlZGlyZWN0RGF0YVwiLGVbZS5TZXRJbml0aWFsVmlld0lkPTRdPVwiU2V0SW5pdGlhbFZpZXdJZFwiLGVbZS5TZXRMb2NhdGlvbj01XT1cIlNldExvY2F0aW9uXCIsZVtlLlNldFJlbW90ZUxvZ2luUG9sbGluZ1BhcmFtcz02XT1cIlNldFJlbW90ZUxvZ2luUG9sbGluZ1BhcmFtc1wiLGVbZS5TZXRSZW1vdGVOZ2NQYXJhbXM9N109XCJTZXRSZW1vdGVOZ2NQYXJhbXNcIixlW2UuU2V0Rmlkb0FsbG93TGlzdD04XT1cIlNldEZpZG9BbGxvd0xpc3RcIixlW2UuU2V0U2VydmVyRXJyb3JTaG93bj05XT1cIlNldFNlcnZlckVycm9yU2hvd25cIixlW2UuU2V0U2hvd0NyZWRWaWV3QnJhbmRpbmdEZXNjPTEwXT1cIlNldFNob3dDcmVkVmlld0JyYW5kaW5nRGVzY1wiLGVbZS5VcGRhdGVDcmVkZW50aWFscz0xMV09XCJVcGRhdGVDcmVkZW50aWFsc1wifSh1T3x8KHVPPXt9KSk7dmFyIFBPLHhPLE9PPXthdmFpbGFibGVDcmVkZW50aWFsczpbXSxldmljdGVkQ3JlZGVudGlhbHM6W10scHJlZmVycmVkQ3JlZGVudGlhbDokUC5QYXNzd29yZCxwcm9vZkNvbmZpcm1hdGlvbjpcIlwiLHNlc3Npb25zOltdLHVzZUV2aWN0ZWRDcmVkZW50aWFsczohMX0sX089e3Nob3dBbmltYXRlZEdpZldoaWxlUG9sbGluZzohMSxkZWZhdWx0VHlwZTpudWxsLGVudHJvcHk6XCJcIixzZXNzaW9uSWRlbnRpZmllcjpcIlwiLHJlcXVlc3RTZW50OiExLHN0eWxlQ3JlZFN3aXRjaExpbmtBc0J1dHRvbjohMSxkZXZpY2VzOltdfSxDTz17ZGFFeHBpcmVzOlwiXCIsZGFTdGFydFRpbWU6XCJcIixkYVRva2VuOlwiXCIsc3RzSW5saW5lRmxvd1Rva2VuOlwiXCIsc2lnbmluTmFtZTpcIlwifSxrTz17Y3JlZGVudGlhbHM6d08oe30sT08pLGRlc2t0b3BTc29FbmFibGVkOiExLGRlc2t0b3BTc29FeGVjdXRlZDohMSxmaWRvQWxsb3dMaXN0OltdLGhhc0lkcERpc2FtYmlnRXJyb3I6ITEsaWRwUmVkaXJlY3RQb3N0UGFyYW1zOnt9LGlkcFJlZGlyZWN0UHJvdmlkZXI6Y3Qua3YuVW5rbm93bixpZHBSZWRpcmVjdFVybDpcIlwiLGluaXRpYWxWaWV3SWQ6VHQuTm9uZSxsb2NhdGlvbjpcIlwiLG90aGVySWRwUmVkaXJlY3RVcmw6XCJcIixyZW1vdGVMb2dpblBvbGxpbmdQYXJhbXM6e2RldmljZUlkZW50aWZpZXI6XCJcIixvbmVUaW1lQ29kZTpcIlwifSxyZW1vdGVOZ2NQYXJhbXM6d08oe30sX08pLHNob3dDcmVkVmlld0JyYW5kaW5nRGVzYzohMSxzZXJ2ZXJFcnJvclNob3duOiExLHVuc2FmZURlc2t0b3BTc29Eb21haW5Ub1VzZTpcIlwiLGFzc29jaWF0ZUFjY291bnRQYXJhbXM6d08oe30sQ08pfSxBTz0oMCxvLmNyZWF0ZUNvbnRleHQpKHt2aWV3U3RhdGU6a08sZGlzcGF0Y2hTdGF0ZUNoYW5nZTpmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcihcIkxvZ2luIENvbnRleHQgbm90IGluaXRpYWxpemVkXCIpfX0pLFRPPWZ1bmN0aW9uKCl7cmV0dXJuKDAsby51c2VDb250ZXh0KShBTyl9LEVPPShQTz1BTyx4Tz1mdW5jdGlvbihlLHQpe3ZhciBuPXQudHlwZTtzd2l0Y2gobil7Y2FzZSB1Ty5TZXREZXNrdG9wU3NvRG9tYWluOnJldHVybiBiTyhiTyh7fSxlKSx7fSx7dW5zYWZlRGVza3RvcFNzb0RvbWFpblRvVXNlOnQucGF5bG9hZH0pO2Nhc2UgdU8uU2V0SGFzSWRwRGlzYW1iaWdFcnJvcjpyZXR1cm4gYk8oYk8oe30sZSkse30se2hhc0lkcERpc2FtYmlnRXJyb3I6dC5wYXlsb2FkfSk7Y2FzZSB1Ty5TZXRJZHBSZWRpcmVjdERhdGE6dmFyIHI9dC5wYXlsb2FkLG89ci51cmwsaT12b2lkIDA9PT1vP2UuaWRwUmVkaXJlY3RVcmw6byxhPXIucG9zdFBhcmFtcyxsPXZvaWQgMD09PWE/ZS5pZHBSZWRpcmVjdFBvc3RQYXJhbXM6YSxzPXIucHJvdmlkZXIsYz12b2lkIDA9PT1zP2UuaWRwUmVkaXJlY3RQcm92aWRlcjpzO3JldHVybiBiTyhiTyh7fSxlKSx7fSx7aWRwUmVkaXJlY3RQb3N0UGFyYW1zOmwsaWRwUmVkaXJlY3RQcm92aWRlcjpjLGlkcFJlZGlyZWN0VXJsOml9KTtjYXNlIHVPLlNldEluaXRpYWxWaWV3SWQ6cmV0dXJuIGJPKGJPKHt9LGUpLHt9LHtpbml0aWFsVmlld0lkOnQucGF5bG9hZH0pO2Nhc2UgdU8uU2V0TG9jYXRpb246cmV0dXJuIGJPKGJPKHt9LGUpLHt9LHtsb2NhdGlvbjp0LnBheWxvYWR9KTtjYXNlIHVPLlNldFJlbW90ZUxvZ2luUG9sbGluZ1BhcmFtczpyZXR1cm4gYk8oYk8oe30sZSkse30se3JlbW90ZUxvZ2luUG9sbGluZ1BhcmFtczpiTyhiTyh7fSxlLnJlbW90ZUxvZ2luUG9sbGluZ1BhcmFtcyksdC5wYXlsb2FkKX0pO2Nhc2UgdU8uU2V0UmVtb3RlTmdjUGFyYW1zOnJldHVybiBiTyhiTyh7fSxlKSx7fSx7cmVtb3RlTmdjUGFyYW1zOmJPKGJPKHt9LGUucmVtb3RlTmdjUGFyYW1zKSx0LnBheWxvYWQpfSk7Y2FzZSB1Ty5TZXRGaWRvQWxsb3dMaXN0OnJldHVybiBiTyhiTyh7fSxlKSx7fSx7Zmlkb0FsbG93TGlzdDp0LnBheWxvYWR9KTtjYXNlIHVPLlNldFNlcnZlckVycm9yU2hvd246cmV0dXJuIGJPKGJPKHt9LGUpLHt9LHtzZXJ2ZXJFcnJvclNob3duOnQucGF5bG9hZH0pO2Nhc2UgdU8uU2V0U2hvd0NyZWRWaWV3QnJhbmRpbmdEZXNjOnJldHVybiBiTyhiTyh7fSxlKSx7fSx7c2hvd0NyZWRWaWV3QnJhbmRpbmdEZXNjOnQucGF5bG9hZH0pO2Nhc2UgdU8uVXBkYXRlQ3JlZGVudGlhbHM6cmV0dXJuIGJPKGJPKHt9LGUpLHt9LHtjcmVkZW50aWFsczpiTyhiTyh7fSxlLmNyZWRlbnRpYWxzKSx0LnBheWxvYWQpfSk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJMb2dpblJlZHVjZXIgcmVjZWl2ZWQgdW5leHBlY3RlZCBhY3Rpb24gXCIuY29uY2F0KG4pKX19LGZ1bmN0aW9uKGUpe3ZhciB0PWUuaW5pdGlhbFN0YXRlLG49ZS5jaGlsZHJlbixyPWdPKCgwLG8udXNlUmVkdWNlcikoeE8sdCksMiksaT1yWzBdLGE9clsxXSxsPSgwLG8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJue3ZpZXdTdGF0ZTppLGRpc3BhdGNoU3RhdGVDaGFuZ2U6YX19KSxbaV0pO3JldHVybigwLCRlLmpzeCkoUE8uUHJvdmlkZXIse3ZhbHVlOmwsY2hpbGRyZW46bn0pfSk7ZnVuY3Rpb24gak8oZSl7dmFyIHQsbixyLG8saSxhLGw9d08oe30sa08pO2lmKG51bGwhPWUmJmUudXJsR29Ub0FBREVycm9yJiYobC5vdGhlcklkcFJlZGlyZWN0VXJsPWUudXJsR29Ub0FBREVycm9yKSxudWxsIT1lJiZlLmRlc2t0b3BTc29Db25maWcpe3ZhciBzLGMsdT0obnVsbD09PShzPWUuZGVza3RvcFNzb0NvbmZpZyl8fHZvaWQgMD09PXM/dm9pZCAwOnMuaGludGVkRG9tYWluTmFtZSl8fFwiXCI7bC51bnNhZmVEZXNrdG9wU3NvRG9tYWluVG9Vc2U9bnVsbCE9PShjPWUuZGVza3RvcFNzb0NvbmZpZykmJnZvaWQgMCE9PWMmJmMuc3RhcnREZXNrdG9wU3NvT25QYWdlTG9hZD91OlwiXCJ9dmFyIGQ9ZnVuY3Rpb24oZSl7aWYoZS5vR2V0Q3JlZFR5cGVSZXN1bHQpe3ZhciB0PUl4KGUub0dldENyZWRUeXBlUmVzdWx0LHtwb3N0UHJvb2ZUeXBlOmUuc1Byb29mVHlwZT9wYXJzZUludChlLnNQcm9vZlR5cGUsMTApOjAsc2hvd1NpZ251cDplLmZDQlNob3dTaWduVXAsc2lnbnVwVXJsOmUudXJsU2lnblVwLGltcHJvdmVQaG9uZURpc2FtYmlndWF0aW9uOmUuZkltcHJvdmVQaG9uZURpc2FtYmlnLGxvZ2luU3RhdGVGb3JQb3N0QmFjazplLnNQT1NUX1BhZ2luYXRlZExvZ2luU3RhdGU/cGFyc2VJbnQoZS5zUE9TVF9QYWdpbmF0ZWRMb2dpblN0YXRlLDEwKTplUH0sRGkoISFlLmZJc0ZpZG9TdXBwb3J0ZWQsISFlLmZVc2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sKSwhMSx6UCksbj10LmF2YWlsYWJsZUNyZWRlbnRpYWxzLHI9dC5ldmljdGVkQ3JlZGVudGlhbHMsbz10LnByZWZlcnJlZENyZWRlbnRpYWwsaT10LnVzZUV2aWN0ZWRDcmVkZW50aWFscyxhPXQub3RjQ3JlZGVudGlhbCxsPXQucmVtb3RlTmdjUGFyYW1zLHM9dC5mZWRSZWRpcmVjdFBhcmFtcyxjPXQuZmlkb1BhcmFtcyx1PXQubG9jYXRpb24sZD10LnJlbW90ZUxvZ2luUG9sbGluZ1BhcmFtcztyZXR1cm57Y3JlZGVudGlhbHM6d08od08oe30sT08pLHt9LHthdmFpbGFibGVDcmVkZW50aWFsczpuLGV2aWN0ZWRDcmVkZW50aWFsczpyLHByZWZlcnJlZENyZWRlbnRpYWw6byx1c2VFdmljdGVkQ3JlZGVudGlhbHM6aSxvdGNDcmVkZW50aWFsOmF9KSxyZW1vdGVOZ2NQYXJhbXM6bCxmZWRSZWRpcmVjdFBhcmFtczpzLGZpZG9QYXJhbXM6Yyxsb2NhdGlvbjp1LHJlbW90ZUxvZ2luUG9sbGluZ1BhcmFtczpkfX1yZXR1cm57Y3JlZGVudGlhbHM6d08oe30sT08pLGxvY2F0aW9uOlwiXCIscmVtb3RlTmdjUGFyYW1zOndPKHt9LF9PKX19KGUpLGY9ZC5jcmVkZW50aWFscyxwPWQuZmVkUmVkaXJlY3RQYXJhbXMsZz1kLmZpZG9QYXJhbXMsbT1kLmxvY2F0aW9uLGg9ZC5yZW1vdGVMb2dpblBvbGxpbmdQYXJhbXMsYj1kLnJlbW90ZU5nY1BhcmFtcztpZihsLmNyZWRlbnRpYWxzPWYsbC5maWRvQWxsb3dMaXN0PW51bGwhPT0odD1udWxsIT09KG49bnVsbD09Zz92b2lkIDA6Zy5BbGxvd0xpc3QpJiZ2b2lkIDAhPT1uP246bnVsbD09ZT92b2lkIDA6ZS5hcnJGaWRvQWxsb3dMaXN0KSYmdm9pZCAwIT09dD90OmwuZmlkb0FsbG93TGlzdCxsLmlkcFJlZGlyZWN0UG9zdFBhcmFtcz1udWxsIT09KHI9bnVsbD09cD92b2lkIDA6cC5pZHBSZWRpcmVjdFBvc3RQYXJhbXMpJiZ2b2lkIDAhPT1yP3I6bC5pZHBSZWRpcmVjdFBvc3RQYXJhbXMsbC5pZHBSZWRpcmVjdFByb3ZpZGVyPW51bGwhPT0obz1udWxsPT1wP3ZvaWQgMDpwLmlkcFJlZGlyZWN0UHJvdmlkZXIpJiZ2b2lkIDAhPT1vP286bC5pZHBSZWRpcmVjdFByb3ZpZGVyLGwuaWRwUmVkaXJlY3RVcmw9bnVsbCE9PShpPW51bGw9PXA/dm9pZCAwOnAuaWRwUmVkaXJlY3RVcmwpJiZ2b2lkIDAhPT1pP2k6bC5pZHBSZWRpcmVjdFVybCxsLmxvY2F0aW9uPW0sbC5yZW1vdGVMb2dpblBvbGxpbmdQYXJhbXM9bnVsbCE9aD9oOmwucmVtb3RlTG9naW5Qb2xsaW5nUGFyYW1zLGwucmVtb3RlTmdjUGFyYW1zPWIsbC5hc3NvY2lhdGVBY2NvdW50UGFyYW1zPWZ1bmN0aW9uKGUpe3ZhciB0PXdPKHt9LENPKTtyZXR1cm4gbnVsbCE9ZSYmZS5zREFFeHBpcmVzJiYodC5kYUV4cGlyZXM9ZS5zREFFeHBpcmVzKSxudWxsIT1lJiZlLnNEQVN0YXJ0VGltZSYmKHQuZGFTdGFydFRpbWU9ZS5zREFTdGFydFRpbWUpLG51bGwhPWUmJmUuc0RBVG9rZW4mJih0LmRhVG9rZW49ZS5zREFUb2tlbiksbnVsbCE9ZSYmZS5zU1RTSW5saW5lRmxvd1Rva2VuJiYodC5zdHNJbmxpbmVGbG93VG9rZW49ZS5zU1RTSW5saW5lRmxvd1Rva2VuKSxudWxsIT1lJiZlLnNTaWduaW5OYW1lJiYodC5zaWduaW5OYW1lPWUuc1NpZ25pbk5hbWUpLHR9KGUpLG51bGwhPWUmJmUuYXJyU2Vzc2lvbnMpe3ZhciB5PWUuYXJyU2Vzc2lvbnM7bC5jcmVkZW50aWFscy5zZXNzaW9ucz15Lm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIG51bGwhPWUmJmUuZGlzcGxheU5hbWUmJih0LmRpc3BsYXlOYW1lPSgwLEJ0LlUpKGUuZGlzcGxheU5hbWUpKSxudWxsIT1lJiZlLmZ1bGxOYW1lJiYodC5mdWxsTmFtZT0oMCxCdC5VKShlLmZ1bGxOYW1lKSksbnVsbCE9ZSYmZS5pZCYmKHQuaWQ9ZS5pZCksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuaXNTYW1zdW5nU3NvKSYmKHQuaXNTYW1zdW5nU3NvPWUuaXNTYW1zdW5nU3NvKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5pc1NpZ25lZEluKSYmKHQuaXNTaWduZWRJbj1lLmlzU2lnbmVkSW4pLG51bGwhPWUmJmUubmFtZSYmKHQubmFtZT0oMCxCdC5VKShlLm5hbWUpKSx0fSkpfXJldHVybiB2b2lkIDAhPT0obnVsbD09ZXx8bnVsbD09PShhPWUub0FwcENvYnJhbmRpbmcpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnNob3dEZXNjT25DcmVkVmlld3MpJiYobC5zaG93Q3JlZFZpZXdCcmFuZGluZ0Rlc2M9ZS5vQXBwQ29icmFuZGluZy5zaG93RGVzY09uQ3JlZFZpZXdzKSxudWxsIT1lJiZlLnNQcm9vZkNvbmZpcm0mJihsLmNyZWRlbnRpYWxzLnByb29mQ29uZmlybWF0aW9uPWUuc1Byb29mQ29uZmlybSksbH1mdW5jdGlvbiBJTyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gTE8oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/SU8oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtETyhlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6SU8oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gRE8oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBOTyxSTz1mdW5jdGlvbihlKXt2YXIgdD1lLnRpdGxlLG49ZS50aXRsZUlkLHI9ZS5yb2xlLG89dm9pZCAwPT09cj9cImhlYWRpbmdcIjpyLGk9ZS5hcmlhTGV2ZWwsYT12b2lkIDA9PT1pPzE6aSxsPWUuc3VidGl0bGUscz1lLnNob3dTdWJ0aXRsZSxjPWUuaW5saW5lSWNvbix1PSgwLFVtLmluc3RhbmNlLnVzZVRpdGxlU3R5bGVzKSgpLGQ9ITEhPT1zJiZsO3JldHVybigwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTp1LnRpdGxlLGNoaWxkcmVuOltjJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTp1LmlubGluZUljb24sY2hpbGRyZW46KDAsJGUuanN4KShTYixMTyh7fSxjKSl9KSwoMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6YyYmdS5pbmxpbmVUaXRsZSxjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtyb2xlOm8sXCJhcmlhLWxldmVsXCI6YSxpZDpuLGNoaWxkcmVuOnR9KSxkJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTp1LnN1YnRpdGxlLGNoaWxkcmVuOmx9KV19KV19KX07ZnVuY3Rpb24gQk8oZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFVPKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIFVPKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBVTyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIEZPKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBNTyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9GTyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3pPKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpGTyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiB6TyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gSE8oZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgVk89ZnVuY3Rpb24oKXt2YXIgZT1mTy5pbnN0YW5jZSx0PWUubG9naW5Nb2RlLG49ZS5wb3N0ZWRGb3JjZVNpZ25JbjtyZXR1cm4gdD09PXdQfHx0PT09Q1B8fHQ9PT1BUHx8bn0sV089ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVwiXCIsbz1uLnN3aXRjaEFjY291bnRzUGFnZVRpdGxlLGk9bi5zaWduSW5QYWdlVGl0bGUsYT1uLnNpZ25JblRvQXBwVG9rZW5pemVkLGw9KDAsc3QuWjcpKGEsdCk7c3dpdGNoKGUpe2Nhc2UgeFA6Y2FzZSBMUDpjYXNlIElQOmNhc2UgUFA6Y2FzZSBPUDpjYXNlIF9QOmNhc2UgQlA6cj1vO2JyZWFrO2RlZmF1bHQ6cj1pfXJldHVybiB0JiYocj1sKSxyfSxHTz1mdW5jdGlvbihlLHQsbil7dmFyIHI9dDtyZXR1cm4gbiYmIVtLUy5Ta3lwZU1vdmVBbGlhcyxLUy5SZW1vdGVDb25uZWN0TG9naW5dLmluY2x1ZGVzKGUpJiYocj1uKSxyfSwkTz1mdW5jdGlvbihlLHQsbil7dmFyIHI9bi50b0NvbnRpbnVlVG9BcHAsbz1uLmNvbnRpbnVlVG9BcHAsaT10P3I6bztyZXR1cm4gZT8oMCxzdC5aNykoaSxlKTpcIlwifSxLTz1mdW5jdGlvbihlKXt2YXIgdD1bXSxuPWZPLmluc3RhbmNlLHI9bi5wcm9tb3RlZEZlZENyZWRUeXBlLG89bi5saW5rZWRJbkZlZFVybCxpPW4uZ2l0aHViRmVkVXJsLGE9bi5nb29nbGVGZWRVcmwsbD1uLmZhY2Vib29rRmVkVXJsLHM9bi5zaG93T2ZmbGluZUFjY291bnQsYz1uLnNob3dPbmx5R2l0aHViT25DcmVkUGlja2VyO3JldHVybiB0PXQuY29uY2F0KGU/W3tjcmVkZW50aWFsVHlwZTokUC5GaWRvfV06W10sbyYmciE9PSRQLkxpbmtlZEluP1t7Y3JlZGVudGlhbFR5cGU6JFAuTGlua2VkSW4scmVkaXJlY3RVcmw6b31dOltdLGkmJnIhPT0kUC5HaXRIdWI/W3tjcmVkZW50aWFsVHlwZTokUC5HaXRIdWIscmVkaXJlY3RVcmw6aSxzaG93bk9ubHlPblBpY2tlcjpjfV06W10sYT9be2NyZWRlbnRpYWxUeXBlOiRQLkdvb2dsZSxyZWRpcmVjdFVybDphfV06W10sbD9be2NyZWRlbnRpYWxUeXBlOiRQLkZhY2Vib29rLHJlZGlyZWN0VXJsOmx9XTpbXSxzP1t7Y3JlZGVudGlhbFR5cGU6JFAuT2ZmbGluZUFjY291bnR9XTpbXSl9LHFPPWZ1bmN0aW9uKCl7dmFyIGUsdD0oZT1yZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByLG8saSxhLGwscyxjLHUsZCxmLHAsZyxtLGgsYix5LHYsdyxTLFAseCxPLF8sQyxrLEE9YXJndW1lbnRzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocj1BLmxlbmd0aD4yJiZ2b2lkIDAhPT1BWzJdJiZBWzJdLG89Zk8uaW5zdGFuY2UsaT1vLnNob3dGaWRvSW5saW5lLGE9by5zaG93Rm9yZ290VXNlcm5hbWVMaW5rLGw9by5zaG93T2ZmbGluZUFjY291bnQscz1vLmlzRmlkb1N1cHBvcnRlZEhpbnQsYz1vLnVzZVdlYnZpZXdGaWRvQ3VzdG9tUHJvdG9jb2wsdT1uPT09Y3Qub0YuV2luMTFPb2JlRmFicmljLGQ9RGkocyxjKSx1JiZ0TyhcIklkZW50aXR5LkZpZG8uU3VwcG9ydGVkXCIsZCksZj1LTyhkKSxwPWkmJmQmJihmLmxlbmd0aD49Mnx8YXx8bCksZz10LmxvZ2luQ3JlZFBpY2tlck9wdGlvbkZpZG8sbT10LmxvZ2luQ3JlZFBpY2tlck9wdGlvbkZpZG9Lbm93blVzZXIsaD10LmxvZ2luQ3JlZFBpY2tlck9wdGlvbkZpZG9Ob0hlbGxvLGI9dC5sb2dpbkNyZWRQaWNrZXJPcHRpb25GaWRvTm9IZWxsb0tub3duVXNlcix5PXQuZmlkb0hlbHBXaXRoU2VjdXJpdHlLZXksdj10LmZpZG9IZWxwV2l0aFdpbmRvd3NIZWxsb0FuZFNlY3VyaXR5S2V5LHc9dC5maWRvSGVscERlc2NXaXRoV2luZG93c0hlbGxvQW5kU2VjdXJpdHlLZXksUz10LmZpZG9IZWxwRGVzY1dpdGhTZWN1cml0eUtleSxQPXI/YjpoLHg9cj9tOmcsTz1cIlwiLF89XCJcIixDPVwiXCIsIXApe2UubmV4dD0xOTticmVha31yZXR1cm4gZS5uZXh0PTE2LE5pKGMpO2Nhc2UgMTY6az1lLnNlbnQsdSYmdE8oXCJJZGVudGl0eS5GaWRvLlBsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZVwiLGspLGs/KE89eCxfPXYsQz13KTooTz1QLF89eSxDPVMpO2Nhc2UgMTk6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsW08sXyxDXSk7Y2FzZSAyMDpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSksZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtITyhpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtITyhpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlLG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksUU89ZnVuY3Rpb24oZSx0LG4pe3JldHVybigwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsJGUuanN4KShTYixNTyhNTyh7fSxlKSx7fSx7Y2xhc3NOYW1lOm59KSksKDAsJGUuanN4KShSTyx7dGl0bGU6dCx0aXRsZUlkOlwiZGlhbG9nSGVhZGVyXCJ9KV19KX0sWE89ZnVuY3Rpb24oZSx0LG4pe3JldHVybigwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6bixjaGlsZHJlbjplfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6bixjaGlsZHJlbjp0fSldfSl9LFlPPWZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1CTyhlLDIpLHI9blswXSxvPW5bMV0saT1cInVuc2FmZV9cIj09PXIuc3Vic3RyaW5nKDAsNyk/ci5zdWJzdHJpbmcoNyk6cjt0W2ldPW99KSksdH0sWk89KHpPKE5PPXt9LHRQLFR0LlVzZXJuYW1lKSx6TyhOTyxuUCxUdC5QYXNzd29yZCksek8oTk8sclAsVHQuT25lVGltZUNvZGUpLHpPKE5PLG9QLFR0LlB1c2hOb3RpZmljYXRpb25zKSx6TyhOTyxpUCxUdC5QaG9uZURpc2FtYmlndWF0aW9uKSx6TyhOTyxhUCxUdC5JZHBEaXNhbWJpZ3VhdGlvbiksek8oTk8sbFAsVHQuSWRwUmVkaXJlY3QpLHpPKE5PLHNQLFR0LlZpZXdBZ3JlZW1lbnQpLHpPKE5PLGNQLFR0LkFjY291bnRQaWNrZXIpLHpPKE5PLHVQLFR0LkNvbmZpcm1TZW5kKSx6TyhOTyxkUCxUdC5DcmVkZW50aWFsUGlja2VyKSx6TyhOTyxmUCxUdC5FcnJvciksek8oTk8scFAsVHQuSWRwUmVkaXJlY3RTcGVlZGJ1bXApLHpPKE5PLGdQLFR0LlByb29mQ29uZmlybWF0aW9uKSx6TyhOTyxoUCxUdC5GZXRjaFNlc3Npb25zUHJvZ3Jlc3MpLHpPKE5PLGJQLFR0LkJlbmVmaXRzKSxOTyk7dmFyIEpPPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSx0KXt2YXIgbj1mTy5pbnN0YW5jZS5mZWRQYXJ0bmVyTmFtZTtzd2l0Y2godCl7Y2FzZSBNUC5QUF9FX01JU1NJTkdfUEFTU1dPUkQ6cmV0dXJuIGUubWlzc2luZ1Bhc3N3b3JkRXJyb3I7Y2FzZSBNUC5QUF9FX05PVF9FTUFJTF9JTlBVVDpyZXR1cm4gXCJQbGVhc2UgdHlwZSB5b3VyIGVtYWlsIGFkZHJlc3MgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6IHlvdXJuYW1lQGV4YW1wbGUuY29tLlwiO2Nhc2UgTVAuUFBfRV9SRVNFUlZFRF9VU0VSTkFNRTpyZXR1cm4gXCJUaGUgZW1haWwgYWRkcmVzcyBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3QuIFBsZWFzZSB0cnkgYWdhaW4uXCI7Y2FzZSBNUC5QUF9FX1JFQUxNX05PVF9GRURFUkFURUQ6cmV0dXJuIFwiVGhlIGVtYWlsIGFkZHJlc3MgeW91IGVudGVyZWQgaXMgbm90IGEgc3VwcG9ydGVkIFBhcnRuZXIgSUQuIFBsZWFzZSBlbnRlciBhIGRpZmZlcmVudCBlbWFpbCBhZGRyZXNzIG9yIGNob29zZSBhbm90aGVyIHNpZ24taW4gb3B0aW9uLlwiO2Nhc2UgTVAuUFBfRV9GRURFUkFUSU9OX1dMSURMT0dJTl9ESVNBTExPV0VEOmNhc2UgTVAuUFBfRV9BTElBU19BVVRIX05PVFBFUk1JVFRFRDpyZXR1cm4oMCxzdC5aNykoXCJUaGUgZW1haWwgYWRkcmVzcyBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3QuIFBsZWFzZSB0cnkgYWdhaW4sIG9yIDxmZWRlcmF0ZWRMaW5rPlNpZ24gaW4gYXQgezB9PC9mZWRlcmF0ZWRMaW5rPlwiLG4pO2Nhc2UgTVAuUFBfRV9BTElBU19BVVRIX0NPTExJU0lPTjpyZXR1cm4gXCJUaGUgcGFzc3dvcmQgaXMgaW5jb3JyZWN0LCBvciB0aGUgZW1haWwgYWRkcmVzcyBjYW5ub3QgYmUgdXNlZCBmb3Igc2lnbiBpbi4gUGxlYXNlIHRyeSBhZ2Fpbiwgb3Igc2lnbiBpbiB3aXRoIGEgZGlmZmVyZW50IGVtYWlsIGFkZHJlc3MuXCI7Y2FzZSBNUC5QUF9FX09UVF9EQVRBX0lOVkFMSUQ6Y2FzZSBNUC5QUF9FX09UVF9BTFJFQURZX0NPTlNVTUVEOmNhc2UgTVAuUFBfRV9QUFNBX1JQVF9OT1RPQUREUkVTUzpyZXR1cm4gZS5pbmNvcnJlY3RPbmVUaW1lQ29kZUVycm9yO2Nhc2UgTVAuUFBfRV9PVFRfSU5WQUxJRF9QVVJQT1NFOnJldHVybiBcIlRoaXMgdmVyaWZpY2F0aW9uIGNvZGUgd2FzIHJlcXVlc3RlZCBmb3IgYSBkaWZmZXJlbnQgcHVycG9zZS4gUGxlYXNlIGdldCBhbm90aGVyIGNvZGUgdG8gdmVyaWZ5IHlvdXIgYWNjb3VudC5cIjtjYXNlIE1QLlBQX0VfU1JWQ1JZUFRfRVhQSVJFRF9CTE9COnJldHVybiBcIllvdXIgc2Vzc2lvbiBoYXMgdGltZWQgb3V0LiBQbGVhc2UgdHJ5IGFnYWluLlwiO2Nhc2UgTVAuUFBfRV9GRURFUkFUSU9OX0lOTElORUxPR0lOX0RJU0FMTE9XRUQ6cmV0dXJuIGUuZmVkTm90QWxsb3dlZEVycm9yO2Nhc2UgTVAuUFBfRV9OR0NfTE9HSU5fTk9OQ0VfRVhQSVJFRDpjYXNlIE1QLlBQX0VfTkdDX0xPR0lOX0tFWV9OT1RfRk9VTkQ6Y2FzZSBNUC5QUF9FX05HQ19LRVlfRElTQUJMRUQ6cmV0dXJuIFwiV2UgY291bGRuJ3QgdXNlIHlvdXIgZGV2aWNlIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LiBFbnRlciB5b3VyIHBhc3N3b3JkIHRvIHNpZ24gaW4uXCI7Y2FzZSBNUC5QUF9FX1RPT01BTllSRVFVRVNUUzpyZXR1cm4gXCJUaGUgTWljcm9zb2Z0IGFjY291bnQgbG9naW4gc2VydmVyIGhhcyBkZXRlY3RlZCB0b28gbWFueSByZXBlYXRlZCBhdXRoZW50aWNhdGlvbiBhdHRlbXB0cy4gUGxlYXNlIHdhaXQgYSBtb21lbnQgYW5kIHRyeSBhZ2Fpbi5cIjtjYXNlIE1QLlBQX0VfTk9UX09WRVJfU1NMOnJldHVybiBcIlRoZSBzaXRlIHlvdSBhcmUgdHJ5aW5nIHRvIGFjY2VzcyBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gdXNlIEhUVFBTLiBQbGVhc2UgZW5zdXJlIHlvdXIgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0IGFuZCB0cnkgYWdhaW4uXCI7Y2FzZSBNUC5QUF9FX0lEUF9VTklRVUVJRF9FWElTVFNfU0FNU1VORzpyZXR1cm4gXCJUaGlzIFNhbXN1bmcgYWNjb3VudCBpcyBhbHJlYWR5IGNvbm5lY3RlZCB0byBhIGRpZmZlcmVudCBNaWNyb3NvZnQgYWNjb3VudC4gWW91IGNhbiBvbmx5IGNvbm5lY3Qgb25lIE1pY3Jvc29mdCBhY2NvdW50IHRvIG9uZSBTYW1zdW5nIGFjY291bnQuXCI7Y2FzZSBNUC5QUF9FX0lEUF9CSU5ESU5HX0VYSVNUU19TQU1TVU5HOnJldHVybiBcIlRoaXMgTWljcm9zb2Z0IGFjY291bnQgaXMgYWxyZWFkeSBjb25uZWN0ZWQgdG8gYSBTYW1zdW5nIGFjY291bnQuIFlvdSBjYW4gb25seSBjb25uZWN0IG9uZSBNaWNyb3NvZnQgYWNjb3VudCB0byBvbmUgU2Ftc3VuZyBhY2NvdW50LiBUbyByZW1vdmUgdGhlIGN1cnJlbnQgU2Ftc3VuZyBhY2NvdW50LCBnbyB0byB5b3VyIDxtYW5hZ2VDcmVkc1VybD5NaWNyb3NvZnQgYWNjb3VudCBzZXR0aW5nczwvbWFuYWdlQ3JlZHNVcmw+LlwiO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShlLHQpO3JldHVybiBudWxsIT09bj9uOihuPWZ1bmN0aW9uKGUsdCl7dmFyIG49Zk8uaW5zdGFuY2Uscj1uLmZlZFVybCxvPW4uZmVkUGFydG5lck5hbWU7cmV0dXJuIE1QLlBQX0VfRkVERVJBVElPTl9XTElETE9HSU5fRElTQUxMT1dFRD09PXQ/ZS5mZWROb3RBbGxvd2VkRXJyb3I6cj8oMCxzdC5aNykoXCJUaGUgZW1haWwgYWRkcmVzcyBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3QuIFBsZWFzZSB0cnkgYWdhaW4sIG9yIDxmZWRlcmF0ZWRMaW5rPlNpZ24gaW4gYXQgezB9PC9mZWRlcmF0ZWRMaW5rPlwiLG8pOk1QLlBQX0VfREJfTUVNQkVSRE9FU05PVEVYSVNUPT09dD9cIlRoYXQgTWljcm9zb2Z0IGFjY291bnQgZG9lc24ndCBleGlzdC4gRW50ZXIgYSBkaWZmZXJlbnQgYWNjb3VudCBvciA8c2lnbnVwTGluaz5nZXQgYSBuZXcgb25lPC9zaWdudXBMaW5rPi5cIjpNUC5QUF9FX0JBRF9QQVNTV09SRD09PXQ/ZS53cm9uZ1Bhc3N3b3JkRXJyb3I6TVAuUFBfRV9PTERfU0tZUEVfUEFTU1dPUkQ9PT10P2Uub2xkU2t5cGVQYXNzd29yZEVycm9yOm51bGx9KGUsdCksbnVsbCE9PW4/bjpcIlRoZSBhY2NvdW50IG9yIHBhc3N3b3JkIGlzIGluY29ycmVjdC4gUGxlYXNlIHRyeSBhZ2Fpbi5cIil9LGVfPWZ1bmN0aW9uKGUsdCl7dmFyIG49Zk8uaW5zdGFuY2Uscj1uLmNyZWRlbnRpYWxUeXBlUmVzdWx0LG89bi5zZXJ2ZXJFcnJvclRleHQsaT1uLnNlcnZlclZhbGlkYXRpb25FcnJvcnM7aWYobylyZXR1cm4gdD9KTyhlLHQpOm87aWYoaSYmaS5sZW5ndGg+MClyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1mTy5pbnN0YW5jZS5sb2NrVXNlcm5hbWU7c3dpdGNoKHQpe2Nhc2UgTVAuRW1wdHlGaWVsZHMudG9TdHJpbmcoKTpjYXNlIE1QLlVzZXJuYW1lSW52YWxpZC50b1N0cmluZygpOmNhc2UgTVAuUFBfRV9NSVNTSU5HX01FTUJFUk5BTUU6Y2FzZSBNUC5QUF9FX05BTUVfSU5WQUxJRDpjYXNlIE1QLlBQX0VfRU1BSUxfUklHSFRfVE9PX0xPTkc6Y2FzZSBNUC5QUF9FX05BTUVfVE9PX0xPTkc6Y2FzZSBNUC5QUF9FX0lOVkFMSURfUEhPTkVOVU1CRVI6Y2FzZSBNUC5QUF9FX0xJQlBIT05FTlVNQkVSSU5URVJPUF9OVU1CRVJQQVJTRV9FWENFUFRJT046cmV0dXJuIGUuaW52YWxpZE1lbWJlck5hbWU7Y2FzZSBNUC5QUF9FX0VYQ0xVREVEOmNhc2UgTVAuUFBfRV9CQURfUEFTU1dPUkQ6Y2FzZSBNUC5QUF9FX1BSRVZJT1VTX1BBU1NXT1JEOmNhc2UgTVAuUFBfRV9JTlZBTElEX01FTUJFUk5BTUU6Y2FzZSBNUC5QUF9FX0RCX01FTUJFUkRPRVNOT1RFWElTVDpjYXNlIE1QLlBQX0VfUEVfUlVMRUZBTFNFOnJldHVybiBuP2Uud3JvbmdQYXNzd29yZExvY2tlZFVzZXJFcnJvcjplLndyb25nUGFzc3dvcmRFcnJvcjtjYXNlIE1QLlBQX0VfT0xEX1NLWVBFX1BBU1NXT1JEOnJldHVybiBlLm9sZFNreXBlUGFzc3dvcmRFcnJvcjtjYXNlIE1QLlBQX0VfQUxJQVNfQVVUSF9OT1RQRVJNSVRURUQ6cmV0dXJuIGUuYWxpYXNEaXNhYmxlZEVycm9yO2Nhc2UgTVAuUFBfRV9GRURFUkFUSU9OX0lOTElORUxPR0lOX0RJU0FMTE9XRUQ6cmV0dXJuIGUuZmVkTm90QWxsb3dlZEVycm9yO2Nhc2UgTVAuUGFzc3dvcmRFbXB0eS50b1N0cmluZygpOmNhc2UgTVAuUFBfRV9NSVNTSU5HX1BBU1NXT1JEOnJldHVybiBlLm1pc3NpbmdQYXNzd29yZEVycm9yO2Nhc2UgTVAuUFBfRV9JRFBfTElOS0VESU5fQklORElOR19OT1RfQUxMT1dFRDpyZXR1cm4gZS5saW5rZWRJbkZlZFVzZXJOb3RGb3VuZEVycm9yO2Nhc2UgTVAuUFBfRV9JRFBfR09PR0xFX0JJTkRJTkdfTk9UX0FMTE9XRUQ6cmV0dXJuIGUuZ29vZ2xlRmVkVXNlck5vdEZvdW5kRXJyb3I7Y2FzZSBNUC5QUF9FX0lEUF9HSVRIVUJfQklORElOR19OT1RfQUxMT1dFRDpyZXR1cm4gZS5naXRodWJGZWRVc2VyTm90Rm91bmRFcnJvcjtjYXNlIE1QLlBQX0VfT1RUX0RBVEFfSU5WQUxJRDpjYXNlIE1QLlBQX0VfT1RUX0FMUkVBRFlfQ09OU1VNRUQ6Y2FzZSBNUC5QUF9FX09UVF9JTlZBTElEX1BVUlBPU0U6Y2FzZSBNUC5QUF9FX1BQU0FfUlBUX05PVE9BRERSRVNTOnJldHVybiBlLmluY29ycmVjdE9uZVRpbWVDb2RlRXJyb3I7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUsaVswXSk7aWYocil7dmFyIGE9cjtpZihhLmFjdGlvbj09PW14LlNob3dFcnJvcilyZXR1cm4gYS5lcnJvcnx8bnVsbH1yZXR1cm4gbnVsbH07dmFyIHRfPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvPWZPLmluc3RhbmNlLGk9by5sb2dpbk1vZGUsYT1vLnBvc3RlZExvZ2luU3RhdGUsbD1vLnBvc3RlZFVzZXJuYW1lLHM9by5jcmVkZW50aWFsVHlwZVJlc3VsdCxjPVR0Lk5vbmUsdT0hMSxkPXt9O2lmKGEhPT1lUCYmYSE9PWhQKWM9Wk9bYV18fFR0Lk5vbmU7ZWxzZSBpZihzJiYwIT09T2JqZWN0LmtleXMocykubGVuZ3RoKXt2YXIgZj1zO3N3aXRjaChmLmFjdGlvbil7Y2FzZSBteC5TaG93RXJyb3I6Yz1pPT09VVA/VHQuRmV0Y2hTZXNzaW9uc1Byb2dyZXNzOmV8fGM7YnJlYWs7Y2FzZSBteC5Td2l0Y2hWaWV3OmM9aT09PVVQP1R0LkZldGNoU2Vzc2lvbnNQcm9ncmVzczpmLnZpZXdJZD9mLnZpZXdJZDpjO2JyZWFrO2Nhc2UgbXguUmVkaXJlY3Q6aSE9PVVQJiYodT0hMCxkPXtyZWRpcmVjdFVybDpmLnJlZGlyZWN0VXJsLHJlZGlyZWN0UG9zdFBhcmFtczpmLnJlZGlyZWN0UG9zdFBhcmFtcyxpc0lkcFJlZGlyZWN0OmYuaXNJZHBSZWRpcmVjdH0pfX1lbHNlIGwmJm51bGwhPT0odD1mTy5pbnN0YW5jZSxuPXQuc2VydmVyRXJyb3JUZXh0LHI9dC5zZXJ2ZXJWYWxpZGF0aW9uRXJyb3JzLG58fHImJnIubGVuZ3RoPjApJiYoYz1UdC5Vc2VybmFtZSk7cmV0dXJue2luaXRpYWxWaWV3SWQ6Yyxkb0xvZ2luRmxvd1JlZGlyZWN0OnUsbG9naW5GbG93UmVkaXJlY3RQYXJhbXM6ZH19LG5fPWZ1bmN0aW9uKGUpe3ZhciB0PWZPLmluc3RhbmNlLG49dC5sb2NrVXNlcm5hbWUscj10LnNob3dTd2l0Y2hVc2VyLG89SXQuZGVmYXVsdC5pbnN0YW5jZS5zd2l0Y2hVc2VyVXJsO3JldHVybiByJiYobiYmISFvfHxlKX0scl89ZnVuY3Rpb24oZSl7cmV0dXJuIWZPLmluc3RhbmNlLmxvY2tVc2VybmFtZSYmIVZQKGUpJiYhV1AoZSkmJkdQKGUpfSxvXz1mdW5jdGlvbihlLHQsbil7dmFyIHI9R3cuaW5zdGFuY2Usbz1yLmlzR2FtaW5nRmxvdyxpPXIuaXNTaW1wbGlmaWVkQ2hpbGRBY2NvdW50Q3JlYXRpb24sYT1lO3JldHVybiBhPSgwLHN0Lk5pKShhLHtzY2FjOmk/XCIxXCI6XCIwXCIsZ2Y6bz9cIjFcIjpcIjBcIix1ZnQ6bi50b1N0cmluZygpLHB1c2VybmFtZTp0LHNjYWNzaTpcIjFcIn0pfTtmdW5jdGlvbiBpXyhlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIGFfKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe2lfKGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe2lfKGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfX1mdW5jdGlvbiBsXyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gc18oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/bF8oT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtjXyhlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6bF8oT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gY18oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHVfKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBkXyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBkXyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gZF8oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgZl89ZnVuY3Rpb24oKXt2YXIgZT0oMCxvLnVzZUNvbnRleHQpKFp0KS5kaXNwYXRjaFN0YXRlQ2hhbmdlLHQ9SXQuZGVmYXVsdC5pbnN0YW5jZS5pc0Nsb3VkQnVpbGQsbj0oMCxvLnVzZUNvbnRleHQpKFplKS5hdXRoU3RhdGUuZmxvd1Rva2VuVmFsdWUscj1FaCgpLmRpc3BhdGNoU3RhdGVDaGFuZ2UsaT1mTy5pbnN0YW5jZS5mbG93VG9rZW5Db29raWVOYW1lO3JldHVybiBmdW5jdGlvbihvLGEsbCxzKXtsJiZpJiZuJiZIeChpLG4sIXQsITEsITEsITEsdm9pZCAwLHZvaWQgMCwhMCksYSYmT2JqZWN0LmtleXMoYSkubGVuZ3RoP3Ioe3R5cGU6U2guU3VibWl0UG9zdFJlZGlyZWN0LHBheWxvYWQ6e3VybDpvLHBvc3RQYXJhbXM6WU8oYXx8e30pLHN1Ym1pdEZvcm06ITB9fSk6R1MobyksZSh7dHlwZTpMdC5TZXRTaG93UHJvZ3Jlc3NJbmRpY2F0b3IscGF5bG9hZDohc30pfX0scF89ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLHQ9ZS5hY3RpdmVGbGF2b3Isbj1lLnRlbGVtZXRyeSxyPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLGk9ci5hY3RpdmVWaWV3LGE9ci5hY3RpdmVGbG93LGw9Zk8uaW5zdGFuY2Uscz1sLnNpZ251cFVybCxjPWwuc2lnbnVwVXJsUG9zdFBhcmFtcyx1PVJ0KG4se2FjdGl2ZVZpZXc6aSxhY3RpdmVGbG93OmEsYWN0aXZlRmxhdm9yOnR9KS5sb2dVc2VyQWN0aW9uLGQ9Zl8oKTtyZXR1cm4gZnVuY3Rpb24oZSl7dSh7YWN0aW9uTmFtZTpNUy5TaWdudXBMaW5rQ2xpY2tlZH0pO3ZhciB0PWt4KGUscyxjKTtkKHQucmVkaXJlY3RVcmx8fFwiXCIsdC5yZWRpcmVjdFBvc3RQYXJhbXMsdC5pc0lkcFJlZGlyZWN0KX19LGdfPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj1VbS5pbnN0YW5jZS51c2VDb21tb25TdHlsZXMscj1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcixpPWZPLmluc3RhbmNlLGE9aS5maWRvSGVscFVybCxsPWkuaXNQYXNza2V5U3VwcG9ydGVkLHM9bigpLGM9KDAsby51c2VTdGF0ZSkoW1wiXCJdKSx1PXVfKGMsMiksZD11WzBdLGY9dVsxXTsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7cU8oZSxyLHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBmKGUpfSkpfSksW2UsdCxyXSk7dmFyIHAsZz1cIlwiLG09XCJcIixoPVwiXCIsYj1cIlwiLHk9e3VybHM6WWgsZGF0YVRlc3RJZDpcImZpZG8taW1nXCJ9LHY9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsJGUuanN4KShcImFcIix7aWQ6XCJmaWRvSGVscExpbmtcIixcImRhdGF0ZXN0LWlkXCI6XCJmaWRvSGVscExpbmtcIixocmVmOmEsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9yZWZlcnJlclwiLGNoaWxkcmVuOmV9KX07aWYobClnPWUuZmlkb1Bhc3NrZXlMaW5rVGV4dCxtPWUuZmlkb1Bhc3NrZXlIZWxwVGV4dCxoPWUuZmlkb1Bhc3NLZXlEaWFsb2dIZWFkZXJUZXh0LGI9ZS5maWRvUGFzc2tleURpYWxvZ1RleHQseS51cmxzPVpoLHA9dihbZS5maWRvUGFzc2tleURpYWxvZ0Rlc2NyaXB0aW9uXSk7ZWxzZXt2YXIgdz1bZFswXSxkWzFdLGRbMl1dO2c9d1swXSxtPXdbMV0sYj13WzJdLGg9ZyxwPSgwLCRlLmpzeCkoYncse3RleHQ6ZS5maWRvSGVscERpYWxvZ0Rlc2MyLGVtYmVkZGVkQmluZGluZ3M6e2ZpZG9IZWxwTGluazp2fX0pfXZhciBTPVFPKHksaCxzLndpbkZpZG9JbWFnZSksUD1YTyhiLHAsU2cocy5yb3cscy50ZXh0Qm9keSxzLndpbkZpZG9EZXNjcmlwdGlvbikpO3JldHVybntmaWRvTGlua1RleHQ6ZyxmaWRvSGVscFRleHQ6bSxmaWRvRGlhbG9nSGVhZGVyOlMsZmlkb0RpYWxvZ0Rlc2NyaXB0aW9uOlAsZmlkb0ltYWdlOnl9fSxtXz1mdW5jdGlvbigpe3ZhciBlPWZPLmluc3RhbmNlLHQ9ZS5hbGxvd2VkSWRlbnRpdGllcyxuPWUuZmlkb0NoYWxsZW5nZSxyPWUuZmlkb1VzZUFsbG93ZWRJZGVudGl0aWVzLGk9SXQuZGVmYXVsdC5pbnN0YW5jZSxhPWkuY29udGV4dCxsPWkubG9naW5Vcmwscz1pLnBvc3RVcmwsYz1pLm1zYVBvc3RVcmwsdT1pLmFhZFBvc3RVcmwsZD1pLnJlc3VtZVVybCxmPWkuZmlkb0xvZ2luVXJsLHA9aS5jb3JyZWxhdGlvbklkLGc9KDAsby51c2VDb250ZXh0KShaZSkuYXV0aFN0YXRlLmZsb3dUb2tlblZhbHVlLG09VE8oKS52aWV3U3RhdGUuZmlkb0FsbG93TGlzdCxoPUVoKCkuZGlzcGF0Y2hTdGF0ZUNoYW5nZSxiPXI/bjpnLHk9e2FsbG93ZWRJZGVudGl0aWVzOkpTT04uc3RyaW5naWZ5KHQpLGNhbmFyeTpiLHNlcnZlckNoYWxsZW5nZTpiLHBvc3RCYWNrVXJsOnMscG9zdEJhY2tVcmxBYWQ6dSxwb3N0QmFja1VybE1zYTpjLGNhbmNlbFVybDpsLHJlc3VtZVVybDpkfHxsLGNvcnJlbGF0aW9uSWQ6cCxjcmVkZW50aWFsc0pzb246bSxjdHg6YX07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PXNfKHNfKHt9LHkpLG51bGwhPWU/ZTp7fSk7aCh7dHlwZTpTaC5TdWJtaXRQb3N0UmVkaXJlY3QscGF5bG9hZDp7dXJsOmYscG9zdFBhcmFtczp0LHN1Ym1pdEZvcm06ITB9fSl9fSxoXz1mdW5jdGlvbigpe3ZhciBlPUl0LmRlZmF1bHQuaW5zdGFuY2UsdD1lLmFsbG93Q2FuY2VsLG49ZS5iYWNrVXJsLHI9ZS5zaG93QnV0dG9ucyxvPUhTKCk7cmV0dXJuIHImJihvfHx0fHwhIW4pfSxiXz1mdW5jdGlvbigpe3ZhciBlPSgwLG8udXNlQ29udGV4dCkoWnQpLmRpc3BhdGNoU3RhdGVDaGFuZ2UsdD1JdC5kZWZhdWx0Lmluc3RhbmNlLG49dC5hY3RpdmVGbGF2b3Iscj10LmFsbG93Q2FuY2VsLGk9dC5iYWNrVXJsLGE9dC5jYW5jZWxVcmwsbD10LnNpZ25JblVzZXJuYW1lLHM9Zk8uaW5zdGFuY2UsYz1zLmlzU2Nvb2JlLHU9cy5pc1Rva2VuQnJva2VyLGQ9cy5wcmVmZXJBc3NvY2lhdGUsZj1mXygpLHA9YTtyZXR1cm4gZnVuY3Rpb24oKXtyJiZhPyhsJiYocD0oMCxzdC5OaSkocCx7dXNlcm5hbWU6bH0pKSxmKHApKTppPyhlKHt0eXBlOkx0LlNldFNob3dQcm9ncmVzc0luZGljYXRvcixwYXlsb2FkOiEwfSksR1MoaSwhMCkpOm49PT1jdC5vRi5XaW4xMU9vYmVGYWJyaWM/ck8oYyx1LGQpOm49PT1jdC5vRi5YYm94JiZhTyh1LHIpfX0seV89ZnVuY3Rpb24oKXt2YXIgZSx0LG4scj0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZS51c2VyLmRpc3BsYXlVc2VybmFtZSxpPWZPLmluc3RhbmNlLGE9aS5yZXNldFBhc3N3b3JkVXJsLGw9aS5yZXNldFBhc3N3b3JkUHJlZmlsbFBhcmFtO3JldHVybiBlPWEsdD1sLChuPXIudW5zYWZlVW5lc2NhcGVkU3RyaW5nKT8oMCxzdC5OaSkoZSx6Tyh7fSx0LGVuY29kZVVSSUNvbXBvbmVudCgoMCxzdC5meSkobikpKSk6ZX0sdl89ZnVuY3Rpb24oZSl7dmFyIHQ9VE8oKSxuPXQudmlld1N0YXRlLnNob3dDcmVkVmlld0JyYW5kaW5nRGVzYyxyPXQuZGlzcGF0Y2hTdGF0ZUNoYW5nZSxpPWZPLmluc3RhbmNlLGE9aS5sb2dpbkRlc2NyaXB0aW9uLGw9aS5sb2dpblN0cmluZ3NWYXJpYW50LHM9dV8oKDAsby51c2VTdGF0ZSkobiksMSlbMF0sYz1mdW5jdGlvbihlLHQsbil7dmFyIHI9bi5sb2dpbkVudGVyUGFzc3dvcmREZXNjcmlwdGlvbixvPW4ubG9naW5NaW5lY3JhZnRSZW1vdGVDb25uZWN0VXNlck5hbWVQYWdlRGVzYyxpPWZPLmluc3RhbmNlLnJlbW90ZUNvbm5lY3RBcHBOYW1lLGE9XCJcIjtzd2l0Y2goZSl7Y2FzZSBLUy5Ta3lwZU1vdmVBbGlhczphPXI7YnJlYWs7Y2FzZSBLUy5SZW1vdGVDb25uZWN0TG9naW46YT0oMCxzdC5aNykobyxpKX1yZXR1cm4gdCYmIVtLUy5Ta3lwZU1vdmVBbGlhcyxLUy5SZW1vdGVDb25uZWN0TG9naW5dLmluY2x1ZGVzKGUpJiYoYT10KSxhfShsLGEsZSk7cmV0dXJuIG4mJnIoe3R5cGU6dU8uU2V0U2hvd0NyZWRWaWV3QnJhbmRpbmdEZXNjLHBheWxvYWQ6ITF9KSx7cmVuZGVyQnJhbmRpbmdEZXNjcmlwdGlvbjpzLGJyYW5kaW5nRGVzY3JpcHRpb25JZDpcImNyZWRWaWV3QnJhbmRpbmdEZXNjXCIsYnJhbmRpbmdEZXNjcmlwdGlvbjpjfX0sd189ZnVuY3Rpb24oZSl7dmFyIHQ9VE8oKS52aWV3U3RhdGUuY3JlZGVudGlhbHMuc2Vzc2lvbnMsbj16UygpLHI9JFMoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1JdC5kZWZhdWx0Lmluc3RhbmNlLnN3aXRjaFVzZXJVcmw7Zk8uaW5zdGFuY2UubG9ja1VzZXJuYW1lJiZvP3Iobyk6dC5sZW5ndGg/bihlLFR0LkFjY291bnRQaWNrZXIpOm4oZSxUdC5Vc2VybmFtZSl9fSxTXz1mdW5jdGlvbigpe3ZhciBlPVRPKCkudmlld1N0YXRlLmNyZWRlbnRpYWxzLHQ9ZS5ldmljdGVkQ3JlZGVudGlhbHMsbj1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCJcIixuPXhlKCkua2V5K3Q7cmV0dXJuIEVTLmhhcyhuKXx8RVMuc2V0KG4sZSksRVMuZ2V0KG4pfShlLnVzZUV2aWN0ZWRDcmVkZW50aWFscyxcInVzZUV2aWN0ZWRDcmVkZW50aWFsc1wiKTtyZXR1cm57c2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXI6dC5sZW5ndGg+MCxzaG93Q3JlZGVudGlhbFN3aXRjaENvbnRlbnQ6IW59fSxQXz1mdW5jdGlvbigpe3ZhciBlPWFfKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciByLG8saSxhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocj1cIlwiLE51bWJlci5pc05hTih0KSl7ZS5uZXh0PTE3O2JyZWFrfXJldHVybiB0TyhcIklkZW50aXR5Lk9PQkUuTG9naW4uTXNhU2VydmVyRHJpdmVuTG90dGllSWRcIix0KSxlLnByZXY9MyxlLm5leHQ9NixuKDI1OTY3KShcIi4vbXNhc2VydmVyc2lnbmlubG90dGllX1wiLmNvbmNhdCh0LFwiLmpzb25cIikpO2Nhc2UgNjpvPWUuc2VudCwoaT1vLmRlZmF1bHQpJiYocj1cImxvZ2luLmxpdmUtdHN0LmNvbVwiPT09d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk/XCJodHRwczovL1wiLmNvbmNhdCh3aW5kb3cubG9jYXRpb24uaG9zdCkuY29uY2F0KGkpOmkpLGUubmV4dD0xNTticmVhaztjYXNlIDExOmUucHJldj0xMSxlLnQwPWUuY2F0Y2goMyksYT1lLnQwLHRPKFwiSWRlbnRpdHkuT09CRS5Mb2dpbi5zaG93R3JhcGhpY0FuaW1hdGlvblwiLGEubWVzc2FnZSk7Y2FzZSAxNTplLm5leHQ9MTc7YnJlYWs7Y2FzZSAxNzpyZXR1cm4gZS5hYnJ1cHQoXCJyZXR1cm5cIixyKTtjYXNlIDE4OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1szLDExXV0pfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx4Xz1mdW5jdGlvbigpe3ZhciBlPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLmFjdGl2ZVZpZXcsdD16UygpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KGUsLTEsITApfX0sT189ZnVuY3Rpb24oKXt2YXIgZSx0PSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLmFjdGl2ZUZsb3csbj0hSFMoKSxyPW51bGwhPT0oZT1uZXcgTWFwKFtbRXQuTG9naW4sYl8oKV1dKS5nZXQodCkpJiZ2b2lkIDAhPT1lP2U6ZnVuY3Rpb24oKXt9LGk9eF8oKTtyZXR1cm4gbj9yOml9LF9fPWZ1bmN0aW9uKGUpe3ZhciB0PUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yO1RTKChmdW5jdGlvbigpe3Q9PT1jdC5vRi5XaW4xMU9vYmVGYWJyaWMmJnF4KGUpfSkpfSxDXz1vLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49VW0uaW5zdGFuY2UudXNlQmFja0Fycm93QnV0dG9uU3R5bGVzLHI9ZS5idXR0b25JZCxvPXZvaWQgMD09PXI/XCJpZEJ0bl9CYWNrXCI6cixpPWUuYXJpYURlc2NyaWJlZEJ5LGE9ZS5oYXNGb2N1cyxsPWUuaXNSdGxNYXJrZXQscz1lLm9uQ2xpY2ssYz1uKCksdT1TZyhjLmRlZmF1bHQsYy5oaWdoQ29udHJhc3QpLGQ9e3VybHM6bD9IaDp6aCxyb2xlOlwicHJlc2VudGF0aW9uXCJ9O3JldHVybiBfXyhzKSwoMCwkZS5qc3gpKGhTLHtyZWY6dCxpbWFnZTpkLGJ1dHRvbklkOm8sYXJpYUxhYmVsOlwiQmFja1wiLGFyaWFEZXNjcmliZWRCeTppLGNsYXNzTmFtZTp1LGhhc0ZvY3VzOmEsb25DbGljazpzfSl9KSksa189ZnVuY3Rpb24oZSl7dmFyIHQ9VW0uaW5zdGFuY2UudXNlSWRlbnRpdHlCYW5uZXJTdHlsZXMsbj1lLmJhY2tBcnJvd0J1dHRvblByb3BzLHI9dm9pZCAwPT09bj97fTpuLGk9ci5idXR0b25JZCxhPXIuYXJpYURlc2NyaWJlZEJ5LGw9ci5oYXNGb2N1cyxzPXQoKSxjPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLHU9Yy51c2VyLGQ9Yy5zaG93QmFja0J1dHRvbk9uQWN0aXZlVmlldyxmPWMuYmFja0J1dHRvbkhhbmRsZXIscD1pUygpLGc9cC5vbkFuaW1hdGlvbkVuZCxtPXAuZmFkZUluT25jZUFuaW1hdGlvblN0eWxlcyxoPVRpKCk/bTpcIlwiLGI9KDAsby51c2VSZWYpKG51bGwpLHk9SXQuZGVmYXVsdC5pbnN0YW5jZS5pc1J0bE1hcmtldCx2PU9fKCk7cmV0dXJuKDAsJGUuanN4cykoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwiaWRlbnRpdHlCYW5uZXJcIixjbGFzc05hbWU6aCxvbkFuaW1hdGlvbkVuZDpnLGNoaWxkcmVuOltkJiYoMCwkZS5qc3gpKENfLHtyZWY6YixidXR0b25JZDppLGFyaWFEZXNjcmliZWRCeTphLGhhc0ZvY3VzOmwsaXNSdGxNYXJrZXQ6eSxvbkNsaWNrOmZ8fHZ9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2lkOlwidXNlckRpc3BsYXlOYW1lXCIsY2xhc3NOYW1lOnMuaWRlbnRpdHlCYW5uZXIsY2hpbGRyZW46dS5kaXNwbGF5VXNlcm5hbWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nfSldfSl9O2Z1bmN0aW9uIEFfKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVyblwiXCI7Zm9yKHZhciByPW5ldyBTZXQsbz0wO288dC5sZW5ndGg7bys9MSl7dmFyIGksYT1udWxsPT09KGk9dFtvXSl8fHZvaWQgMD09PWk/dm9pZCAwOmkudHJpbSgpO2EmJiFyLmhhcyhhKSYmci5hZGQoYSl9cmV0dXJuIEFycmF5LmZyb20ocikuam9pbihcIiBcIikudHJpbSgpfXZhciBUXz1mdW5jdGlvbihlKXt2YXIgdD1lLmFyaWFMZXZlbCxuPXZvaWQgMD09PXQ/MTp0LHI9ZS5wYWdlRGVzY3JpcHRpb24sbz1lLnBhZ2VUaXRsZSxpPWUucGFnZVRpdGxlSWQsYT1lLnJvbGUsbD12b2lkIDA9PT1hP1wiaGVhZGluZ1wiOmEscz1lLmN1c3RvbVN0eWxlcyxjPSgwLFVtLmluc3RhbmNlLnVzZVRpdGxlU3R5bGVzKSgpO3JldHVybigwLCRlLmpzeHMpKFwiZGl2XCIse2lkOmksXCJhcmlhLWxldmVsXCI6bixyb2xlOmwsY2hpbGRyZW46W28mJigwLCRlLmpzeCkoXCJkaXZcIix7XCJhcmlhLWxhYmVsXCI6byxjbGFzc05hbWU6Yy5wYWdlVGl0bGUsY2hpbGRyZW46KDAsJGUuanN4KShcImgxXCIse2NoaWxkcmVuOm99KX0pLHImJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOkFfKGMucGFnZURlc2NyaXB0aW9uLG51bGw9PXM/dm9pZCAwOnMucGFnZURlc2NyaXB0aW9uKSxjaGlsZHJlbjpyfSldfSl9LEVfPVtcImNoaWxkcmVuXCIsXCJjdXN0b21Dc3NcIl07ZnVuY3Rpb24gal8oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIElfKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2pfKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7TF8oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmpfKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIExfKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBEXyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gTl8oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gTl8oZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIE5fKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gUl8oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGk9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfXZhciBCXyxVXz1vLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGlsZHJlbixyPWUuY3VzdG9tQ3NzLGk9Ul8oZSxFXyksYT1pLmhhc0ZvY3VzLGw9aS5sYWJlbCxzPWkuaXNQcmltYXJ5LGM9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLmFjY2VudENvbG9ycyx1PWMucHJpbWFyeUJ1dHRvbkRlZmF1bHRDb2xvcnx8eWksZD1jLnByaW1hcnlCdXR0b25Ib3ZlckNvbG9yfHx2aSxmPWMucHJpbWFyeUJ1dHRvbkZvY3VzQ29sb3J8fHZpLHA9Yy5wcmltYXJ5QnV0dG9uU3RyaW5nQ29sb3J8fGJpLGc9RF8oby51c2VTdGF0ZSghMSksMiksbT1nWzBdLGg9Z1sxXSxiPURfKG8udXNlU3RhdGUoYSksMikseT1iWzBdLHY9YlsxXSx3PURfKG8udXNlU3RhdGUoYT9mOnUpLDIpLFM9d1swXSxQPXdbMV07KDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe1AoeT9mOm0/ZDp1KX0pLFt5LGYsbSxkLHVdKTt2YXIgeD1zJiZYbShjKT97Y29sb3I6cCxib3JkZXJDb2xvcjp1LGJhY2tncm91bmRDb2xvcjpTfTp7fSxPPSgwLFVtLmluc3RhbmNlLnVzZVRleHRCdXR0b25TdHlsZXMpKCksXz1TZyhPLndpbkJ1dHRvbixPLmhpZ2hDb250cmFzdCxPLmRlZmF1bHQscz9TZyhPLnByaW1hcnksY3Qua2oucHJpbWFyeSk6Y3Qua2ouc2Vjb25kYXJ5LGN0LmtqLmJ1dHRvbixyKSxDPVNnKE8uYnV0dG9uSXRlbSxjdC5rai5idXR0b25JdGVtKSxrPUlfKElfKHt9LGkpLHt9LHtjbGFzc05hbWU6XyxzdHlsZTp4LG9uTW91c2VPdmVyOmZ1bmN0aW9uKCl7cmV0dXJuIGgoITApfSxvbk1vdXNlT3V0OmZ1bmN0aW9uKCl7cmV0dXJuIGgoITEpfSxvbkZvY3VzOmZ1bmN0aW9uKCl7cmV0dXJuIHYoITApfSxvbkJsdXI6ZnVuY3Rpb24oKXtyZXR1cm4gdighMSl9fSk7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6QyxjaGlsZHJlbjooMCwkZS5qc3hzKSh1UyxJXyhJXyh7fSxrKSx7fSx7cmVmOnQsY2hpbGRyZW46W2wsbl19KSl9KX0pKSxGXz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jdXN0b21Dc3Mscj0oMCxVbS5pbnN0YW5jZS51c2VUZXh0QnV0dG9uQ29udGFpbmVyU3R5bGVzKSgpLG89cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLmJvaWxlclBsYXRlVGV4dCxpPVNnKGN0LmtqLmJ1dHRvbkZpZWxkQ29udGFpbmVyLHIubGlnaHRib3hMYXlvdXQsbz9yLm1vdmVkQnV0dG9uczpcIlwiLG4pO3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmksXCJkYXRhLXRlc3RpZFwiOlwidGV4dEJ1dHRvbkNvbnRhaW5lclwiLGNoaWxkcmVuOnR9KX0sTV89ZnVuY3Rpb24oZSl7dmFyIHQ9VW0uaW5zdGFuY2Usbj10LnVzZURpYWxvZ1N0eWxlcyxyPXQudXNlQ29tbW9uU3R5bGVzLGk9ZS5oZWFkZXJDb21wb25lbnQsYT1lLmRlc2NyaXB0aW9uQ29tcG9uZW50LGw9ZS5mb290ZXJDb21wb25lbnQscz1lLmxhYmVsbGVkQnksYz1lLmRlc2NyaWJlZEJ5LHU9bigpLGQ9U2cocigpLm91dGVyLHUub3V0ZXIpLGY9U2codS5jb250ZW50LHUuZm9udCkscD0oMCxvLnVzZVJlZikobnVsbCk7cmV0dXJuIEt3KHApLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmQscmVmOnAsY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6dS5taWRkbGUsY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2codS5pbm5lcix1LndpbkZseW91dCkscm9sZTpcImRpYWxvZ1wiLFwiYXJpYS1sYWJlbGxlZGJ5XCI6cyxcImFyaWEtZGVzY3JpYmVkYnlcIjpjLGNoaWxkcmVuOigwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpmLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTp1LmhlYWRlcixcImRhdGEtdGVzdGlkXCI6XCJoZWFkZXJcIixjaGlsZHJlbjppfSksKDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtdGVzdGlkXCI6XCJkZXNjcmlwdGlvblwiLGNoaWxkcmVuOmF9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTp1LmJ1dHRvbkNvbnRhaW5lcixcImRhdGEtdGVzdGlkXCI6XCJmb290ZXJcIixjaGlsZHJlbjpsfSldfSl9KX0pfSl9O2Z1bmN0aW9uIHpfKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBIXyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBIXyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gSF8oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn0hZnVuY3Rpb24oZSl7ZS5UYWI9XCJUYWJcIn0oQl98fChCXz17fSkpO3ZhciBWXz1mdW5jdGlvbihlKXtyZXR1cm4gZS5rZXk9PT1CXy5UYWImJmUuc2hpZnRLZXl9LFdfPWZ1bmN0aW9uKGUpe3JldHVybiBlLmtleT09PUJfLlRhYiYmIWUuc2hpZnRLZXl9LEdfPWZ1bmN0aW9uKGUpe3ZhciB0PSgwLG8udXNlUmVmKShudWxsKSxuPWUuY2hpbGRyZW4scj1lLndyYXBwZXJSZWYsaT12b2lkIDA9PT1yP3Q6cixhPXpfKCgwLG8udXNlU3RhdGUpKCksMiksbD1hWzBdLHM9YVsxXTsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7aS5jdXJyZW50JiZmdW5jdGlvbihlLHQpe3ZhciBuPUZpKGUpLHI9bi5sZW5ndGgsbz1NYXRoLm1heChyLTEsMCksaT1uWzBdLGE9bltvXTtmdW5jdGlvbiBsKGUpe3JldHVybiBuW2UrMT09PXI/MDplKzFdfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIG5bMD09PWU/ci0xOmUtMV19Zm9yKHZhciBjPWZ1bmN0aW9uKGUpezA9PT1lP2kuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwoZnVuY3Rpb24obil7V18obik/KHQobChlKSksMD09PW8mJm4ucHJldmVudERlZmF1bHQoKSk6Vl8obikmJihhLmZvY3VzKCksbi5wcmV2ZW50RGVmYXVsdCgpLHQoYSkpfSkpOmU9PT1vP2EuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwoZnVuY3Rpb24obil7V18obik/KGkuZm9jdXMoKSxuLnByZXZlbnREZWZhdWx0KCksdChpKSk6Vl8obikmJnQocyhlKSl9KSk6bltlXS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLChmdW5jdGlvbihuKXtXXyhuKT90KGwoZSkpOlZfKG4pJiZ0KHMoZSkpfSkpfSx1PTA7dTxyO3UrPTEpYyh1KX0oaS5jdXJyZW50LHMpfSksW2ldKTtyZXR1cm4gS3coaSksKDAsJGUuanN4KShcImRpdlwiLHtyb2xlOlwibm9uZVwiLHJlZjp0LG9uQ2xpY2s6ZnVuY3Rpb24oKXtudWxsPT1sfHxsLmZvY3VzKCl9LFwiZGF0YS10ZXN0aWRcIjpcImZvY3VzLWxvY2tlclwiLGNoaWxkcmVuOm59KX07ZnVuY3Rpb24gJF8oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEtfKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyPyRfKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cV8oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOiRfKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHFfKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgUV89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtRXy5zZXRBdHRyaWJ1dGUoXCJpZFwiLFwibW9kYWwtcm9vdFwiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFFfKTt2YXIgWF89ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7cmV0dXJuIFFfLmFwcGVuZENoaWxkKHQpLGZ1bmN0aW9uKCl7UV8ucmVtb3ZlQ2hpbGQodCl9fSkpO3ZhciBuPSgwLCRlLmpzeCkoR18se2NoaWxkcmVuOigwLCRlLmpzeCkoTV8sS18oe30sZSkpfSk7cmV0dXJuIGkuY3JlYXRlUG9ydGFsKG4sdCl9O2Z1bmN0aW9uIFlfKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBaXyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBaXyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gWl8oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgSl89ZnVuY3Rpb24oZSl7dmFyIHQsbixyPVVtLmluc3RhbmNlLnVzZUhlbHBCdXR0b25TdHlsZXMsaT1lLmhlbHBEaWFsb2dJY29uLGE9ZS5oZWxwRGlhbG9nSGVhZGVyLGw9ZS5oZWxwRGlhbG9nRGVzY3JpcHRpb24scz1lLmhlbHBEaWFsb2dJY29uQ2xhc3NOYW1lLGM9ZS5oZWxwRGlhbG9nQXJpYUxhYmVsLHU9cigpLGQ9WV8oKDAsby51c2VTdGF0ZSkoITEpLDIpLGY9ZFswXSxwPWRbMV0sZz0oMCxvLnVzZVJlZikobnVsbCk7cmV0dXJuKDAsJGUuanN4cykoJGUuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6cyxcImRhdGEtdGVzdGlkXCI6XCJpY29uSW1hZ2VcIixjaGlsZHJlbjooMCwkZS5qc3gpKGhTLHtyZWY6ZyxjbGFzc05hbWU6dS5oZWxwQnV0dG9uSW1hZ2VTdHlsZSxpbWFnZTppLGFyaWFMYWJlbDpjLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gcCghZil9fSl9KSxmJiYoMCwkZS5qc3gpKFhfLHtoZWFkZXJDb21wb25lbnQ6YSxkZXNjcmlwdGlvbkNvbXBvbmVudDpsLGZvb3RlckNvbXBvbmVudDoodD1mLG49cCwoMCwkZS5qc3gpKFVfLHtoYXNGb2N1czohMCxsYWJlbDpcIkNsb3NlXCIsaXNQcmltYXJ5OiEwLG9uQ2xpY2s6ZnVuY3Rpb24oKXt2YXIgZTtuKCF0KSxudWxsPT1nfHxudWxsPT09KGU9Zy5jdXJyZW50KXx8dm9pZCAwPT09ZXx8ZS5mb2N1cygpfX0pKX0pXX0pfSxlQz1mdW5jdGlvbihlLHQsbixyKXtUUygoZnVuY3Rpb24oKXt0JiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciB0O251bGw9PWV8fG51bGw9PT0odD1lLmN1cnJlbnQpfHx2b2lkIDA9PT10fHx0LmZvY3VzKCl9KSxocCl9KSksKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3ZhciB0O3JldHVybiBuJiYodD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciB0O251bGw9PWV8fG51bGw9PT0odD1lLmN1cnJlbnQpfHx2b2lkIDA9PT10fHx0LmZvY3VzKCl9KSxyPzA6aHApKSxmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0KX19KSxbZSxuLHJdKX0sdEM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50ZXh0LG49ZS5hcmlhTGFiZWwscj1lLmFyaWFMYWJlbGxlZEJ5LGk9ZS5hcmlhRGVzY3JpYmVkQnksYT1lLmJ1dHRvblJvbGUsbD1lLmFyaWFTZWxlY3RlZCxzPWUubGlua0RhdGFUZXN0SWQsYz1lLmxpbmtJZCx1PWUub25DbGljayxkPWUuY2xhc3NOYW1lLGY9ZS5zdHlsZSxwPXZvaWQgMD09PWY/e306ZixnPWUuaGFzSW5pdGlhbEZvY3VzLG09dm9pZCAwIT09ZyYmZyxoPWUuaGFzRm9jdXMsYj12b2lkIDAhPT1oJiZoLHk9ZS5za2lwSGFzRm9jdXNEZWxheSx2PXZvaWQgMCE9PXkmJnksdz1lLm9uRm9jdXMsUz12b2lkIDA9PT13P2Z1bmN0aW9uKCl7fTp3LFA9ZS5vbkJsdXIseD12b2lkIDA9PT1QP2Z1bmN0aW9uKCl7fTpQLE89KDAsVW0uaW5zdGFuY2UudXNlTGlua0J1dHRvblN0eWxlcykoKSxfPVNnKE8ubGluayxPLm5vUGFkZGluZyxPLmhpZ2hDb250cmFzdCxkKSxDPSgwLG8udXNlUmVmKShudWxsKTtlQyhDLG0sYix2KTtyZXR1cm4oMCwkZS5qc3gpKFwic3BhblwiLHt0YWJJbmRleDowLHJvbGU6YXx8XCJidXR0b25cIixvbkNsaWNrOnUsb25LZXlEb3duOmZ1bmN0aW9uKGUpe1wiRW50ZXJcIiE9PWUua2V5JiZcIiBcIiE9PWUua2V5fHx1KGUpfSxcImFyaWEtbGFiZWxcIjpuLFwiYXJpYS1sYWJlbGxlZGJ5XCI6cixcImFyaWEtZGVzY3JpYmVkYnlcIjppLFwiYXJpYS1zZWxlY3RlZFwiOmwscmVmOkMsaWQ6YyxcImRhdGEtdGVzdGlkXCI6cyxjbGFzc05hbWU6XyxzdHlsZTpwLG9uRm9jdXM6UyxvbkJsdXI6eCxjaGlsZHJlbjp0fSl9LG5DPWZ1bmN0aW9uKGUsdCxuKXsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7dmFyIHI9ZnVuY3Rpb24ocil7ZS5jdXJyZW50JiYhZS5jdXJyZW50LmNvbnRhaW5zKHIudGFyZ2V0KSYmKHQoITEpLG51bGw9PW58fG4oKSl9O3JldHVybiBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsciksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixyKSxmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixyKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLHIpfX0pLFtlLHQsbl0pfTtmdW5jdGlvbiByQyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gb0MoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gb0MoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG9DKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIGlDPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaWNvbixuPWUubWVudUNsYXNzTmFtZSxyPWUubWVudUJ1dHRvbkljb25DbGFzc05hbWUsaT1lLm1lbnVJdGVtTGlzdCxhPWUubWVudVRlc3RJZCxsPWUuYXJpYUxhYmVsLHM9ZS5tZW51TGFiZWwsYz1lLm9uT3V0c2lkZUNsaWNrLHU9ZS5jbG9zZU9uU2VsZWN0LGQ9ZS5oYXNGb2N1cyxmPWUuaGFzSW5pdGlhbEZvY3VzLHA9ZS5pc0NvbWJvQm94LGc9dm9pZCAwIT09cCYmcCxtPSgwLFVtLmluc3RhbmNlLnVzZU9wdGlvbnNNZW51QnV0dG9uU3R5bGVzKSgpLGg9KDAsby51c2VSZWYpKG51bGwpLGI9KDAsby51c2VSZWYpKG51bGwpLHk9KDAsby51c2VSZWYpKG51bGwpLHY9ckMoKDAsby51c2VTdGF0ZSkoITEpLDIpLHc9dlswXSxTPXZbMV07dC5jbGFzc05hbWU9QV8oKG51bGw9PXQ/dm9pZCAwOnQuY2xhc3NOYW1lKXx8XCJcIixtLmFjY2Vzc2libGVJbWFnZUFsaWduKTt2YXIgUD1yQygoMCxvLnVzZVN0YXRlKSh2b2lkIDApLDIpLHg9UFswXSxPPVBbMV07bkMoaCxTLGMpO3ZhciBfPWZ1bmN0aW9uKCl7dmFyIGU7UyghMSksbnVsbD09PShlPWIuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuZm9jdXMoKX07IWZ1bmN0aW9uKGUsdCl7dmFyIG49SnQoKS5nbG9iYWxTdGF0ZS5nYW1lcGFkTWFuYWdlcjsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7dmFyIHI9bnVsbD09ZT92b2lkIDA6ZS5jdXJyZW50LG89bnVsbD09bj92b2lkIDA6bi5nZXRHYW1lcGFkQnV0dG9uRXZlbnRUeXBlKG51bGw9PW4/dm9pZCAwOm4uR2FtZXBhZEFjdGlvbi5Eb3duKSxpPWZ1bmN0aW9uKGUpeyhudWxsPT1lP3ZvaWQgMDplLmJ1dHRvbik9PT1uLkdhbWVwYWRCdXR0b24uQiYmdCgpfTtyZXR1cm4gciYmbiYmbyYmci5hZGRFdmVudExpc3RlbmVyKG8saSksZnVuY3Rpb24oKXtyJiZuJiZvJiZyLnJlbW92ZUV2ZW50TGlzdGVuZXIobyxpKX19KSxbbixlLHRdKX0oeSxfKSxlQyhiLGYsZCk7dmFyIEM9Zz9cImxpc3Rib3hcIjpcIm1lbnVcIixrPWc/XCJvcHRpb25cIjpcIm1lbnVpdGVtXCIsQT1pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtjaGlsZHJlbjplLmlzVmlzaWJsZSYmKDAsJGUuanN4KShcImxpXCIse3JvbGU6XCJwcmVzZW50YXRpb25cIixjbGFzc05hbWU6bS5tZW51TWFyZ2luLGNoaWxkcmVuOigwLCRlLmpzeCkodEMse2J1dHRvblJvbGU6ayxsaW5rSWQ6ZS5pdGVtSWQsY2xhc3NOYW1lOm0ubWVudUxpbmssdGV4dDplLml0ZW1UZXh0LG9uQ2xpY2s6ZnVuY3Rpb24odCl7ZS5vbkNsaWNrKHQpLHUmJlMoITEpfSxvbkZvY3VzOmZ1bmN0aW9uKGUpe08oZS5jdXJyZW50VGFyZ2V0LmlkKX0saGFzRm9jdXM6ZS5oYXNGb2N1cyxza2lwSGFzRm9jdXNEZWxheTplLnNraXBIYXNGb2N1c0RlbGF5LGFyaWFTZWxlY3RlZDplLmFyaWFTZWxlY3RlZH0pfSl9LGUuaXRlbUlkKX0pKTtyZXR1cm4oMCwkZS5qc3hzKShcImRpdlwiLHtyZWY6aCxjaGlsZHJlbjpbKDAsJGUuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOnIsXCJkYXRhLXRlc3RpZFwiOlwiaWNvbkltYWdlXCIsY2hpbGRyZW46KDAsJGUuanN4KShoUyx7cmVmOmIsYnV0dG9uSWQ6XCJtZW51YnV0dG9uXCIsZGF0YVRlc3RJZDphfHxcIm9wdGlvbnMtbWVudS1idXR0b25cIixhcmlhSGFzUG9wdXA6QyxhcmlhTGFiZWw6bCxhcmlhRXhwYW5kZWQ6dyxhcmlhUm9sZTpnP1wiY29tYm9ib3hcIjp2b2lkIDAsYXJpYUFjdGl2ZURlc2NlbmRhbnQ6dz94OnZvaWQgMCxhcmlhQ29udHJvbHM6Zz9cIm1lbnVsaXN0XCI6dm9pZCAwLGNsYXNzTmFtZTptLm1lbnVCdXR0b25JbWFnZVN0eWxlLGltYWdlOnQsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBTKCF3KX0saW1nQWZ0ZXJDb250ZW50OiEhcyxjaGlsZHJlbjpzJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpzLmxhYmVsQ2xhc3NOYW1lLFwiZGF0YS10ZXN0aWRcIjpzLmxhYmVsVGVzdElkfHxcIm9wdGlvbnMtbWVudS1sYWJlbFwiLGNoaWxkcmVuOnMubGFiZWxUZXh0fSl9KX0pLHcmJigwLCRlLmpzeCkoR18se3dyYXBwZXJSZWY6eSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpufHxtLm1lbnUscmVmOnksY2hpbGRyZW46KDAsJGUuanN4KShcInVsXCIse2lkOlwibWVudWxpc3RcIixjbGFzc05hbWU6bS5tZW51TGlzdCxyb2xlOkMsXCJhcmlhLWxhYmVsbGVkYnlcIjpcIm1lbnVidXR0b25cIixvbktleURvd246ZnVuY3Rpb24oZSl7XCJFc2NhcGVcIj09PWUua2V5JiZfKCl9LFwiZGF0YS1zY3JvbGxhYmxlXCI6ITAsY2hpbGRyZW46QX0pfSl9KV19KX07ZnVuY3Rpb24gYUMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIGxDKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIGxDKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBsQyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBzQz1mdW5jdGlvbihlKXt2YXIgdD1lLmljb24sbj1lLm1lbnVCdXR0b25JY29uQ2xhc3NOYW1lLHI9ZS5tZW51SXRlbUxpc3QsaT1lLm1lbnVUZXN0SWQsYT1lLmFyaWFMYWJlbCxsPSgwLFVtLmluc3RhbmNlLnVzZU9wdGlvbnNNZW51QnV0dG9uU3R5bGVzKSgpLHM9KDAsby51c2VSZWYpKG51bGwpLGM9KDAsby51c2VSZWYpKG51bGwpLHU9YUMoKDAsby51c2VTdGF0ZSkoITEpLDIpLGQ9dVswXSxmPXVbMV07dC5jbGFzc05hbWU9QV8oKG51bGw9PXQ/dm9pZCAwOnQuY2xhc3NOYW1lKXx8XCJcIixsLmFjY2Vzc2libGVJbWFnZUFsaWduKSxuQyhzLGYpO3ZhciBwPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse2NoaWxkcmVuOmUuaXNWaXNpYmxlJiYoMCwkZS5qc3gpKFwibGlcIix7cm9sZTpcInByZXNlbnRhdGlvblwiLGNsYXNzTmFtZTpsLm1lbnVNYXJnaW4sY2hpbGRyZW46KDAsJGUuanN4KSh0Qyx7YnV0dG9uUm9sZTpcIm1lbnVpdGVtXCIsbGlua0lkOmUuaXRlbUlkLGNsYXNzTmFtZTpsLm1lbnVMaW5rLHRleHQ6ZS5pdGVtVGV4dCxvbkNsaWNrOmUub25DbGljayxoYXNGb2N1czplLmhhc0ZvY3VzfSl9KX0sZS5pdGVtSWQpfSkpO3JldHVybigwLCRlLmpzeHMpKFwiZGl2XCIse3JlZjpzLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6bixcImRhdGEtdGVzdGlkXCI6XCJpY29uSW1hZ2VcIixjaGlsZHJlbjooMCwkZS5qc3gpKGhTLHtyZWY6YyxidXR0b25JZDpcIm1lbnVidXR0b25cIixkYXRhVGVzdElkOml8fFwib3B0aW9ucy1tZW51LWJ1dHRvblwiLGFyaWFIYXNQb3B1cDpcIm1lbnVcIixhcmlhTGFiZWw6YSxhcmlhRXhwYW5kZWQ6ZCxjbGFzc05hbWU6bC5tZW51QnV0dG9uSW1hZ2VTdHlsZSxpbWFnZTp0LG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZighZCl9fSl9KSxkJiYoMCwkZS5qc3gpKEdfLHtjaGlsZHJlbjooMCwkZS5qc3gpKFwidWxcIix7Y2xhc3NOYW1lOmwubWVudSxyb2xlOlwibWVudVwiLFwiYXJpYS1sYWJlbGxlZGJ5XCI6XCJtZW51YnV0dG9uXCIsb25LZXlEb3duOmZ1bmN0aW9uKGUpe3ZhciB0O1wiRXNjYXBlXCI9PT1lLmtleSYmKGYoITEpLG51bGw9PT0odD1jLmN1cnJlbnQpfHx2b2lkIDA9PT10fHx0LmZvY3VzKCkpfSxjaGlsZHJlbjpwfSl9KV19KX07ZnVuY3Rpb24gY0MoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHVDKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2NDKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZEMoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmNDKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGRDKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgZkM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYWluVGV4dCxuPWUuaGVscFRleHQscj1lLnN1YlRleHQsaT1lLmltYWdlLGE9ZS5vbkNsaWNrLGw9dm9pZCAwPT09YT9mdW5jdGlvbigpe306YSxzPWUuYXJpYUxhYmVsLGM9ZS5hcmlhRGVzY3JpYmVkQnksdT1lLmlzTW9yZU9wdGlvbnMsZD12b2lkIDAhPT11JiZ1LGY9ZS5pc0FwcEJyYW5kZWQscD12b2lkIDAhPT1mJiZmLGc9ZS5oYXNJbml0aWFsRm9jdXMsbT12b2lkIDAhPT1nJiZnLGg9ZS5oZWxwRGlhbG9nSWNvbixiPWUuaGVscERpYWxvZ0hlYWRlcix5PWUuaGVscERpYWxvZ0Rlc2NyaXB0aW9uLHY9ZS5tYWluVGV4dFJlcGxhY2VWYWx1ZSx3PWUuYXJpYUxhYmVsUmVwbGFjZVZhbHVlLFM9ZS5vcHRpb25zTWVudUJ1dHRvbixQPWUuZGF0YVRlc3RJZCx4PUl0LmRlZmF1bHQuaW5zdGFuY2Uuc3VwcG9ydFdpbmRvd3NTdHlsZXMsTz0oMCxVbS5pbnN0YW5jZS51c2VUaWxlU3R5bGVzKSgpLF89KDAsby51c2VSZWYpKG51bGwpLEM9ZD9TZyhPLm1vcmVPcHRpb25zVGlsZSx4JiZPLmxpc3QscCYmTy5tb3JlT3B0aW9uc1RpbGVXaXRoQXBwQnJhbmRpbmcpOlNnKE8udGlsZUNvbnRhaW5lcixPLmxpc3QpLGs9U2coTy5taWRkbGUsZD9PLm1vcmVPcHRpb25zVGlsZUltYWdlOk8udGlsZUltYWdlKSxBPVNnKE8ubWlkZGxlLE8udGlsZVRleHRBbGlnbixPLmNvbnRlbnQpO2kuY2xhc3NOYW1lPVNnKGkuY2xhc3NOYW1lfHxcIlwiLGQ/Ty5tb3JlT3B0aW9uc1RpbGVJbWFnZTpPLnRpbGVJbWFnZSksKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3ZhciBlO20mJihudWxsPT1ffHxudWxsPT09KGU9Xy5jdXJyZW50KXx8dm9pZCAwPT09ZXx8ZS5mb2N1cygpKX0pLFttXSk7dmFyIFQsRT1Hdy5pbnN0YW5jZS5sb2FkR2FtZXBhZE5hdmlnYXRpb25Nb2R1bGU7aWYoUyl7dmFyIGo9e2ljb246Uy5pY29uLG1lbnVCdXR0b25JY29uQ2xhc3NOYW1lOk8ubWVudUJ1dHRvbixtZW51SXRlbUxpc3Q6Uy5tZW51SXRlbUxpc3QsbWVudVRlc3RJZDpTLm1lbnVUZXN0SWR9O1Q9RT8oMCwkZS5qc3gpKGlDLHVDKHt9LGopKTooMCwkZS5qc3gpKHNDLHVDKHt9LGopKX1yZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpDLHJvbGU6XCJsaXN0aXRlbVwiLFwiYXJpYS1sYWJlbFwiOnc/KDAsc3QuWjcpKHMsdyk6cyxcImFyaWEtZGVzY3JpYmVkYnlcIjpjLGNoaWxkcmVuOigwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpkP08ubW9yZU9wdGlvbnNSb3dUaWxlOk8ucm93VGlsZSxjaGlsZHJlbjpbKDAsJGUuanN4cykodVMse2NsYXNzTmFtZTpTZyhkP08ubW9yZU9wdGlvbnNUaWxlQnV0dG9uU2V0dGluZ3M6Ty50aWxlQnV0dG9uU2V0dGluZ3MseCYmU2coTy5saXN0SXRlbSxPLmxpc3RJdGVtSW5MaXN0KSksb25DbGljazpsLGRhdGFUZXN0SWQ6UCxyZWY6XyxjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6ayxcImRhdGEtdGVzdGlkXCI6XCJtYWluSW1hZ2VcIixjaGlsZHJlbjooMCwkZS5qc3gpKFNiLHVDKHt9LGkpKX0pLCgwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpBLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcIm1haW5UZXh0XCIsY2hpbGRyZW46dj8oMCxzdC5aNykodCx2KTp0fSksbiYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Ty5zbWFsbCxcImRhdGEtdGVzdGlkXCI6XCJoZWxwVGV4dFwiLGNoaWxkcmVuOm59KSxyJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpPLnNtYWxsLFwiZGF0YS10ZXN0aWRcIjpcInN1YlRleHRcIixjaGlsZHJlbjpyfSldfSldfSksaCYmKDAsJGUuanN4KShKXyx7aGVscERpYWxvZ0ljb246aCxoZWxwRGlhbG9nSGVhZGVyOmIsaGVscERpYWxvZ0Rlc2NyaXB0aW9uOnksaGVscERpYWxvZ0ljb25DbGFzc05hbWU6Ty5oZWxwQnV0dG9ufSksVF19KX0pfSxwQz17c3dpdGNoQWNjb3VudHNQYWdlVGl0bGU6XCJTd2l0Y2ggYWNjb3VudHNcIixzaWduSW5QYWdlVGl0bGU6XCJTaWduIGluIHRvIHlvdXIgTWljcm9zb2Z0IGFjY291bnRcIixzaWduSW5Ub0FwcFRva2VuaXplZDpcIlNpZ24gaW4gdG8gezB9XCIsdG9Db250aW51ZVRvQXBwOlwidG8gY29udGludWUgdG8gezB9XCIsY29udGludWVUb0FwcDpcIkNvbnRpbnVlIHRvIHswfVwiLGZpZG9IZWxwRGlhbG9nRGVzYzI6XCJUbyB1c2UgdGhpcyBvcHRpb24sIHlvdSBtdXN0IGhhdmUgcHJldmlvdXNseSBzZXQgdGhpcyB1cCBvbiB5b3VyIGFjY291bnQuIDxmaWRvSGVscExpbms+TGVhcm4gaG93IHRvIHNldCB0aGlzIHVwPC9maWRvSGVscExpbms+XCIsbG9naW5DcmVkUGlja2VyT3B0aW9uRmlkb05vSGVsbG9Lbm93blVzZXI6XCJVc2UgYSBzZWN1cml0eSBrZXlcIixsb2dpbkNyZWRQaWNrZXJPcHRpb25GaWRvTm9IZWxsbzpcIlNpZ24gaW4gd2l0aCBhIHNlY3VyaXR5IGtleVwiLGxvZ2luQ3JlZFBpY2tlck9wdGlvbkZpZG9Lbm93blVzZXI6XCJVc2UgV2luZG93cyBIZWxsbyBvciBhIHNlY3VyaXR5IGtleVwiLGxvZ2luQ3JlZFBpY2tlck9wdGlvbkZpZG86XCJTaWduIGluIHdpdGggV2luZG93cyBIZWxsbyBvciBhIHNlY3VyaXR5IGtleVwiLGZpZG9IZWxwV2l0aFNlY3VyaXR5S2V5OlwiQ2hvb3NlIHRoaXMgb25seSBpZiB5b3UgaGF2ZSBlbmFibGVkIGEgc2VjdXJpdHkga2V5IGZvciB5b3VyIGFjY291bnQuXCIsZmlkb0hlbHBXaXRoV2luZG93c0hlbGxvQW5kU2VjdXJpdHlLZXk6XCJDaG9vc2UgdGhpcyBvbmx5IGlmIHlvdSBoYXZlIGVuYWJsZWQgV2luZG93cyBIZWxsbyBvciBhIHNlY3VyaXR5IGtleSBmb3IgeW91ciBhY2NvdW50LlwiLGZpZG9IZWxwRGVzY1dpdGhXaW5kb3dzSGVsbG9BbmRTZWN1cml0eUtleTpcIlNpZ24gaW4gd2l0aG91dCBhIHVzZXJuYW1lIG9yIHBhc3N3b3JkIGJ5IHVzaW5nIFdpbmRvd3MgSGVsbG8gb3IgYSBzZWN1cml0eSBrZXkuXCIsZmlkb0hlbHBEZXNjV2l0aFNlY3VyaXR5S2V5OlwiU2lnbiBpbiB3aXRob3V0IGEgdXNlcm5hbWUgb3IgcGFzc3dvcmQgYnkgdXNpbmcgYSBzZWN1cml0eSBrZXkuXCIsZmlkb1Bhc3NrZXlMaW5rVGV4dDpcIkZhY2UsIGZpbmdlcnByaW50LCBQSU4gb3Igc2VjdXJpdHkga2V5XCIsZmlkb1Bhc3NrZXlIZWxwVGV4dDpcIlVzZSB5b3VyIGRldmljZSB0byBzaWduIGluIHdpdGggYSBwYXNza2V5LlwiLGZpZG9QYXNzS2V5RGlhbG9nSGVhZGVyVGV4dDpcIkZhY2UsIGZpbmdlcnByaW50LCBQSU4gb3Igc2VjdXJpdHkga2V5XCIsZmlkb1Bhc3NrZXlEaWFsb2dUZXh0OlwiSXQncyBlYXNpZXIgYW5kIHNhZmVyIHRvIHNpZ24gaW4gd2l0aCBwYXNza2V5cy4gWW91IGNhbiBzaWduIGluIHVzaW5nIHlvdXIgZmFjZSwgZmluZ2VycHJpbnQsIFBJTiwgb3IgdXNlIGFub3RoZXIgZGV2aWNlIGxpa2UgYSBwaG9uZSBvciBzZWN1cml0eSBrZXkuIE5vIHBhc3N3b3JkcywgYXBwcywgb3IgY29kZXMgbmVlZGVkLlwiLGZpZG9QYXNza2V5RGlhbG9nRGVzY3JpcHRpb246XCJMZWFybiBob3cgdG8gc2V0IHRoaXMgdXBcIixpbnZhbGlkTWVtYmVyTmFtZTpcIkVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcywgcGhvbmUgbnVtYmVyLCBvciBTa3lwZSBuYW1lLlwiLGluY29ycmVjdE9uZVRpbWVDb2RlRXJyb3I6XCJUaGF0IGNvZGUgZGlkbid0IHdvcmsuIENoZWNrIHRoZSBjb2RlIGFuZCB0cnkgYWdhaW4uXCIsd3JvbmdQYXNzd29yZEVycm9yOlwiWW91ciBhY2NvdW50IG9yIHBhc3N3b3JkIGlzIGluY29ycmVjdC4gSWYgeW91IGRvbid0IHJlbWVtYmVyIHlvdXIgcGFzc3dvcmQsIDxyZXNldFBhc3N3b3JkTGluaz5yZXNldCBpdCBub3cuPC9yZXNldFBhc3N3b3JkTGluaz5cIix3cm9uZ1Bhc3N3b3JkTG9ja2VkVXNlckVycm9yOlwiVGhlIHBhc3N3b3JkIGlzIGluY29ycmVjdC4gUGxlYXNlIHRyeSBhZ2Fpbi5cIixvbGRTa3lwZVBhc3N3b3JkRXJyb3I6XCJZb3VyIG9sZCBTa3lwZSBwYXNzd29yZCBkb2Vzbid0IHdvcmsgYW55bW9yZS4gVHJ5IHRoZSBwYXNzd29yZCBmb3IgeW91ciBNaWNyb3NvZnQgYWNjb3VudC5cIixhbGlhc0Rpc2FibGVkRXJyb3I6XCJUaGlzIGVtYWlsIGFkZHJlc3MgaXMgYXNzb2NpYXRlZCB3aXRoIGEgcHJpbWFyeSBNaWNyb3NvZnQgYWNjb3VudC4gUGxlYXNlIHVzZSB0aGF0IElELlwiLGZlZE5vdEFsbG93ZWRFcnJvcjpcIllvdSBjYW5ub3QgdXNlIHRoaXMgYWNjb3VudCBmb3IgdGhpcyBwdXJwb3NlIGJlY2F1c2UgaXQgYmVsb25ncyB0byBhbiBvcmdhbml6YXRpb24uIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgYWNjb3VudCBvciBzaWduIHVwIGZvciBhIG5ldyBvbmUuXCIsbWlzc2luZ1Bhc3N3b3JkRXJyb3I6XCJQbGVhc2UgZW50ZXIgdGhlIHBhc3N3b3JkIGZvciB5b3VyIE1pY3Jvc29mdCBhY2NvdW50LlwiLGxpbmtlZEluRmVkVXNlck5vdEZvdW5kRXJyb3I6XCJUaGUgTGlua2VkSW4gYWNjb3VudCB5b3Ugc2lnbmVkIGluIHdpdGggZG9lc24ndCBtYXRjaCB0aGUgTGlua2VkSW4gYWNjb3VudCB3ZSBleHBlY3RlZC4gUGxlYXNlIHNpZ24gaW4gYWdhaW4uXCIsZ29vZ2xlRmVkVXNlck5vdEZvdW5kRXJyb3I6XCJUaGUgR29vZ2xlIGFjY291bnQgeW91IHNpZ25lZCBpbiB3aXRoIGRvZXNuJ3QgbWF0Y2ggdGhlIEdvb2dsZSBhY2NvdW50IHdlIGV4cGVjdGVkLiBQbGVhc2Ugc2lnbiBpbiBhZ2Fpbi5cIixnaXRodWJGZWRVc2VyTm90Rm91bmRFcnJvcjpcIlRoZSBHaXRIdWIgYWNjb3VudCB5b3Ugc2lnbmVkIGluIHdpdGggZG9lc24ndCBtYXRjaCB0aGUgR2l0SHViIGFjY291bnQgd2UgZXhwZWN0ZWQuIFBsZWFzZSBzaWduIGluIGFnYWluLlwiLGV2aWN0ZWRDcmVkUGlja2VyTGlua1RleHQ6XCJJIG5vIGxvbmdlciBvd24gdGhpcyBwaG9uZSBudW1iZXJcIixwaG9uZURpc2FtYmlndWF0aW9uTGlua1RleHQ6XCJUaGlzIGlzbid0IG15IG51bWJlclwiLHNpZ25JbkRpZmZlcmVudEFjY291bnQ6XCJTaWduIGluIHdpdGggYSBkaWZmZXJlbnQgTWljcm9zb2Z0IGFjY291bnRcIixsb2dpbkVudGVyUGFzc3dvcmREZXNjcmlwdGlvbjpcIlRvIGNvbnRpbnVlLCB2ZXJpZnkgdGhlIHBhc3N3b3JkIGZvciB5b3VyIE1pY3Jvc29mdCBhY2NvdW50LlwiLGxvZ2luTWluZWNyYWZ0UmVtb3RlQ29ubmVjdFVzZXJOYW1lUGFnZURlc2M6XCJUYWtlIHRoZSBhZHZlbnR1cmUgb25saW5lIGFuZCBwbGF5IHdpdGggeW91ciBmcmllbmRzIHVzaW5nIHlvdXIgTWljcm9zb2Z0IGFjY291bnQgdG8gc2lnbiBpbiB0byB7MH0uXCIsbmV4dEJ1dHRvbjpcIk5leHRcIixiYWNrQnV0dG9uOlwiQmFja1wiLGFkZE1pY3Jvc29mdEFjY291bnRQYWdlVGl0bGVPb2JlOlwiTGV0J3MgYWRkIHlvdXIgTWljcm9zb2Z0IGFjY291bnRcIixvbmVBY2NvdW50Q29ubmVjdHNBbGxBcHBzUGFnZURlc2NyaXB0aW9uT29iZTpcIk9uZSBhY2NvdW50IGNvbm5lY3RzIHlvdXIgZGV2aWNlIGFjcm9zcyBNaWNyb3NvZnQgYXBwcyBhbmQgc2VydmljZXMsIGxpa2UgT2ZmaWNlLCBPbmVEcml2ZSwgTWljcm9zb2Z0IEVkZ2UsIGFuZCB0aGUgTWljcm9zb2Z0IFN0b3JlLlwiLHNraXBUaGlzU3RlcDpcIlNraXAgdGhpcyBzdGVwXCIscGFyZW50U2lnbkluUGFnZVRpdGxlOlwiUGFyZW50IHNpZ24taW5cIixwYXJlbnRTaWduSW5QYWdlRGVzY3JpcHRpb246XCJTaWduIGluIHRvIHlvdXIgTWljcm9zb2Z0IGFjY291bnQgdG8gc3RhcnQgc2V0dGluZyB1cCB5b3VyIGNoaWxkJ3MgYWNjb3VudC5cIixwYXJlbnRTaWduSW5QYWdlUGxhY2Vob2xkZXI6XCJQYXJlbnQgZW1haWwsIHBob25lLCBvciBTa3lwZVwifSxnQz1uZXcgTWFwKFtbRXQuQWxpYXNBY2NydWFsLHtwYWdlRGVzY3JpcHRpb246cEMub25lQWNjb3VudENvbm5lY3RzQWxsQXBwc1BhZ2VEZXNjcmlwdGlvbk9vYmUscGFnZVRpdGxlOnBDLmFkZE1pY3Jvc29mdEFjY291bnRQYWdlVGl0bGVPb2JlfV0sW0V0LkxvZ2luLHtwYWdlRGVzY3JpcHRpb246cEMub25lQWNjb3VudENvbm5lY3RzQWxsQXBwc1BhZ2VEZXNjcmlwdGlvbk9vYmUscGFnZVRpdGxlOnBDLmFkZE1pY3Jvc29mdEFjY291bnRQYWdlVGl0bGVPb2JlfV0sW0V0LlJlc2V0UGFzc3dvcmQse3BhZ2VEZXNjcmlwdGlvbjpwQy5vbmVBY2NvdW50Q29ubmVjdHNBbGxBcHBzUGFnZURlc2NyaXB0aW9uT29iZSxwYWdlVGl0bGU6cEMuYWRkTWljcm9zb2Z0QWNjb3VudFBhZ2VUaXRsZU9vYmV9XV0pO2Z1bmN0aW9uIG1DKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBoQyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBoQyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gaEMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgYkM9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0sbz1VbS5pbnN0YW5jZS51c2VDb21tb25TdHlsZXMsaT1vKCksYT1lLmFsbG93R3JheU91dExpZ2h0Ym94LGw9ZS5zaG93SWRlbnRpdHlCYW5uZXIscz1lLnNob3dQcm9ncmVzc0luZGljYXRvcixjPWUudXNlcix1PWkubGlnaHRib3hDb3ZlcjtzJiZhJiYodT1TZyh1LGkuZGlzYWJsZUxpZ2h0Ym94KSk7dmFyIGQ9bnVsbCE9YyYmbnVsbCE9PShuPWMuZGlzcGxheVVzZXJuYW1lKSYmdm9pZCAwIT09biYmbi51bnNhZmVVbmVzY2FwZWRTdHJpbmcmJmw/aS5wYWdpbmF0aW9uVmlld1dpdGhJZGVudGl0eUJhbm5lcjppLnBhZ2luYXRpb25WaWV3LGY9U2cociYmaS5oZWFkZXJNYXJnaW4saS5mdWxsSGVpZ2h0KTtyZXR1cm57ZmxleENvbHVtbkNsYXNzTmFtZTppLmZsZXhDb2x1bW4saW5uZXJDbGFzc05hbWU6dCxsaWdodGJveENvdmVyQ2xhc3NOYW1lOnUsb3V0ZXJtb3N0RGl2Q2xhc3NOYW1lOmYscGFnaW5hdGlvblZpZXdDbGFzc05hbWU6ZCx3aW5TY3JvbGxDbGFzc05hbWU6aS53aW5TY3JvbGx9fSx5Qz1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5jdXN0b21TdHlsZXMsaT1lLmZvY3VzT25EZWJ1Z0NvcHlMaW5rLGE9ZS5zZXRGb2N1c09uRWxsaXBzaXMsbD1lLnNob3dEZWJ1Z0luZm8scz1lLnNldFNob3dEZWJ1Z0luZm8sYz1lLnN0eWxlcyx1PWUuY2hpbGRyZW4sZD0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZSxmPWQuYWN0aXZlRmxvdyxwPWQuZGVidWdJbmZvLGc9ZC5oaWRlQmFubmVyTG9nbyxtPWQuc2hvd0lkZW50aXR5QmFubmVyLGg9ZC5zaG93UHJvZ3Jlc3NJbmRpY2F0b3IsYj1kLnNob3dNb3JlT3B0aW9ucyx5PWQudXNlcix2PWQuc2hvd1BhZ2VUaXRsZSx3PXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcyxTPXcuYmFja2dyb3VuZENvbG9yLFA9dy5iYWNrZ3JvdW5kSW1hZ2VVcmwseD13LmFsd2F5c1Nob3dCYWNrZ3JvdW5kLE89ZnVuY3Rpb24oZSl7cmV0dXJuIGdDLmdldChlKXx8e3BhZ2VEZXNjcmlwdGlvbjpcIlwiLHBhZ2VUaXRsZTpcIlwifX0oZiksXz1PLnBhZ2VEZXNjcmlwdGlvbixDPU8ucGFnZVRpdGxlLGs9VGkoKSxBPW1DKCgwLG8udXNlU3RhdGUpKCFrKSwyKSxUPUFbMF0sRT1BWzFdO2smJihuPWZ1bmN0aW9uKCl7RSghMCl9KTt2YXIgaj0hKG51bGw9PXl8fG51bGw9PT0odD15LmRpc3BsYXlVc2VybmFtZSl8fHZvaWQgMD09PXR8fCF0LnVuc2FmZVVuZXNjYXBlZFN0cmluZykmJm0mJlQsST1TZyhjLmlubmVyQ2xhc3NOYW1lLGN0LmtqLnNpZ25JbkJveCk7cmV0dXJuIHAudGltZVN0YW1wPXAudGltZVN0YW1wP3AudGltZVN0YW1wOihuZXcgRGF0ZSkudG9JU09TdHJpbmcoKSwoMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6Yy5vdXRlcm1vc3REaXZDbGFzc05hbWUsY2hpbGRyZW46WygwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpjLmZsZXhDb2x1bW5DbGFzc05hbWUsY2hpbGRyZW46WygwLCRlLmpzeCkoZVMse30pLHYmJigwLCRlLmpzeCkoVF8se3BhZ2VEZXNjcmlwdGlvbjpfLHBhZ2VUaXRsZTpDLHBhZ2VUaXRsZUlkOlwibGF5b3V0Q29udGVudFBhZ2VUaXRsZVwiLGN1c3RvbVN0eWxlczpyfSksKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOmMud2luU2Nyb2xsQ2xhc3NOYW1lLGNoaWxkcmVuOlsoMCwkZS5qc3hzKShcImRpdlwiLHtpZDpcImlubmVyXCIsXCJkYXRhLXRlc3RpZFwiOlwiaW5uZXJcIixjbGFzc05hbWU6SSxvbkFuaW1hdGlvbkVuZDpuLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFwiZGl2XCIse2lkOlwibGlnaHRib3gtY292ZXJcIixjbGFzc05hbWU6Yy5saWdodGJveENvdmVyQ2xhc3NOYW1lfSksKDAsJGUuanN4cykoXCJkaXZcIix7Y2hpbGRyZW46W2gmJigwLCRlLmpzeCkoeVMse30pLCFnJiYoMCwkZS5qc3gpKHRTLHt9KSxqJiYoMCwkZS5qc3gpKGtfLHt9KSxUJiYoMCwkZS5qc3hzKShcImRpdlwiLHtpZDpcInBhZ2VDb250ZW50XCIsXCJkYXRhLXRlc3RpZFwiOlwicGFnaW5hdGlvblZpZXdcIixjbGFzc05hbWU6Yy5wYWdpbmF0aW9uVmlld0NsYXNzTmFtZSxjaGlsZHJlbjpbdSwoMCwkZS5qc3gpKGFTLHt9KV19KV19KV19KSxiJiYoMCwkZS5qc3gpKGZDLHtpc01vcmVPcHRpb25zOiEwLGlzQXBwQnJhbmRlZDohKCFTJiYhUCkmJngsbWFpblRleHQ6Yi50ZXh0LGltYWdlOmIuaW1hZ2UsYXJpYUxhYmVsOmIudGV4dCxvbkNsaWNrOmIub25DbGlja30pXX0pXX0pLGwmJigwLCRlLmpzeCkoX1Mse2RlYnVnSW5mbzpwLGZvY3VzT25Db3B5TGluazppLG9uRGVidWdDbG9zZUNsaWNrOmZ1bmN0aW9uKCl7YSghMCkscyghbCl9fSldfSl9O2Z1bmN0aW9uIHZDKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB3QyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj92QyhPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1NDKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp2QyhPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBTQyhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gUEMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHhDKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHhDKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB4QyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBPQz1mdW5jdGlvbihlKXt2YXIgdD1lLnN0eWxlcyxuPWUuY2hpbGRyZW4scj1lLmN1c3RvbVN0eWxlcyxpPSgwLG8udXNlQ29udGV4dCkoWnQpLGE9aS5nbG9iYWxTdGF0ZSxsPWkuZ2xvYmFsU3RhdGUscz1sLnNob3dNb3JlT3B0aW9ucyxjPWwuaXNXaWRlVmlldyx1PXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcyxkPXUuYWx3YXlzU2hvd0JhY2tncm91bmQsZj11LmJhY2tncm91bmRMb2dvVXJsLHA9dS51c2VUcmFuc3BhcmVudExpZ2h0Ym94LGc9dS5zaG93SGVhZGVyLG09SXQuZGVmYXVsdC5pbnN0YW5jZS5iYW5uZXJFbnZpcm9ubWVudCxoPXp3Lmluc3RhbmNlLmhpZGVGb290ZXIsYj1QQygoMCxvLnVzZVN0YXRlKSghMSksMikseT1iWzBdLHY9YlsxXSx3PVBDKCgwLG8udXNlU3RhdGUpKCExKSwyKSxTPXdbMF0sUD13WzFdLHg9UEMoKDAsby51c2VTdGF0ZSkoITEpLDIpLE89eFswXSxfPXhbMV0sQz1VbS5pbnN0YW5jZSxrPUMudXNlTGF5b3V0QW5pbWF0ZVN0eWxlcyxBPUMudXNlQ29tbW9uU3R5bGVzLFQ9aygpLEU9VGkoKSxqPUEoKS5kaXJlY3Rpb25XcmFwcGVyLEk9U2codC5taWRkbGUsY3Qua2oubWlkZGxlKSxMPVNnKHQuaW5uZXIsYz90LndpZGU6XCJcIixwP3QudHJhbnNwYXJlbnQ6XCJcIixkP3QuaW5uZXJBbHdheXNTaG93QmFja2dyb3VuZDpcIlwiLHM/dC5pbm5lcldpdGhQb3B1cDpcIlwiLGY/dC5pbm5lcldpdGhBcHBCcmFuZGluZzpcIlwiKTtFJiYoTD1TZyhMLFQuZmFkZUluKSk7dmFyIEQ9bSE9PXdiLk5vbmUmJm07cmV0dXJuKDAsJGUuanN4KShFYix7ZGlyZWN0aW9uV3JhcHBlckNsYXNzTmFtZTpqLHRlc3RJRDpcImxpZ2h0Ym94LWxheW91dFwiLGNoaWxkcmVuOigwLCRlLmpzeHMpKFl3LHtjaGlsZHJlbjpbKDAsJGUuanN4KShUYix7fSksKDAsJGUuanN4cykoXCJkaXZcIix3Qyh3Qyh7aWQ6XCJvdXRlclwiLFwiZGF0YS10ZXN0aWRcIjpcIm91dGVyXCIsY2xhc3NOYW1lOnQub3V0ZXIscm9sZTpcInByZXNlbnRhdGlvblwifSxYdykse30se2NoaWxkcmVuOltEJiYoMCwkZS5qc3gpKHZ3LHt9KSwoMCwkZS5qc3gpKFp3LHt9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2lkOlwibWlkZGxlXCIsY2xhc3NOYW1lOkkscm9sZTpcIm1haW5cIixjaGlsZHJlbjooMCwkZS5qc3gpKHlDLHtmb2N1c09uRGVidWdDb3B5TGluazpTLHNldEZvY3VzT25FbGxpcHNpczpfLHNob3dEZWJ1Z0luZm86eSxzZXRTaG93RGVidWdJbmZvOnYsc3R5bGVzOmJDKGEsTCxnKSxjdXN0b21TdHlsZXM6cixjaGlsZHJlbjpufSl9KSwhaCYmKDAsJGUuanN4KShWdyx7aXNEZWJ1Z0luZm9TaG93bjp5LGZvY3VzT25FbGxpcHNpczpPLG9uRGVidWdJdGVtQ2xpY2s6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLFAoITApLHYoIXkpfX0pXX0pKV19KX0pfTtmdW5jdGlvbiBfQyhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gQ0MoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/X0MoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtrQyhlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6X0MoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24ga0MoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIEFDKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBUQyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBUQyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gVEMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgRUM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdHlsZXMsbj1lLmNoaWxkcmVuLHI9KDAsby51c2VDb250ZXh0KShadCksaT1yLmdsb2JhbFN0YXRlLGE9ci5nbG9iYWxTdGF0ZS5pc1dpZGVWaWV3LGw9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLHM9bC5iYWNrZ3JvdW5kTG9nb1VybCxjPWwuc2hvd0hlYWRlcix1PWwudXNlVHJhbnNwYXJlbnRMaWdodGJveCxkPVVtLmluc3RhbmNlLGY9ZC51c2VWZXJ0aWNhbFNwbGl0U3R5bGVzLHA9ZC51c2VMYXlvdXRBbmltYXRlU3R5bGVzLGc9ZC51c2VDb21tb25TdHlsZXMsbT1BQygoMCxvLnVzZVN0YXRlKSghMSksMiksaD1tWzBdLGI9bVsxXSx5PUFDKCgwLG8udXNlU3RhdGUpKCExKSwyKSx2PXlbMF0sdz15WzFdLFM9QUMoKDAsby51c2VTdGF0ZSkoITEpLDIpLFA9U1swXSx4PVNbMV0sTz1mKCksXz1nKCkuZGlyZWN0aW9uV3JhcHBlcixDPXAoKSxrPVRpKCksQT1TZyhPLm1haW5Db250YWluZXIsY3Qua2oudmVydGljYWxTcGxpdE1haW5TZWN0aW9uKSxUPVNnKE8uYmFja2dyb3VuZENvbnRhaW5lcixjdC5rai52ZXJ0aWNhbFNwbGl0QmFja2dyb3VuZEltYWdlQ29udGFpbmVyKSxFPVNnKHQuaW5uZXIsTy5saWdodGJveCxhP3Qud2lkZTpcIlwiLHU/dC50cmFuc3BhcmVudDpcIlwiLHM/dC5pbm5lcldpdGhBcHBCcmFuZGluZzpcIlwiKTtrJiYoRT1TZyhFLEMuZmFkZUluKSk7dmFyIGo9SXQuZGVmYXVsdC5pbnN0YW5jZS5iYW5uZXJFbnZpcm9ubWVudCxJPWohPT13Yi5Ob25lJiZqO3JldHVybigwLCRlLmpzeCkoRWIse2RpcmVjdGlvbldyYXBwZXJDbGFzc05hbWU6Xyx0ZXN0SUQ6XCJ2ZXJ0aWNhbC1zcGxpdC1sYXlvdXRcIixjaGlsZHJlbjooMCwkZS5qc3gpKFl3LHtjaGlsZHJlbjooMCwkZS5qc3hzKShcImRpdlwiLENDKENDKHtpZDpcIm91dGVyXCIsXCJkYXRhLXRlc3RpZFwiOlwib3V0ZXJcIixjbGFzc05hbWU6dC5vdXRlcixyb2xlOlwicHJlc2VudGF0aW9uXCJ9LFh3KSx7fSx7Y2hpbGRyZW46W0kmJigwLCRlLmpzeCkodncse30pLCgwLCRlLmpzeCkoWncse30pLCgwLCRlLmpzeCkoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwibWFpbi1zZWN0aW9uXCIsY2xhc3NOYW1lOk8ubWFpblNlY3Rpb24sY2hpbGRyZW46KDAsJGUuanN4cykoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwidmVydGljYWwtc3BsaXQtbWFpbi1jb250YWluZXJcIixjbGFzc05hbWU6QSxjaGlsZHJlbjpbKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOk8udmVydGljYWxDb250YWluZXIsXCJkYXRhLXRlc3RpZFwiOlwidmVydGljYWwtc3BsaXQtbWFpbi1zZWN0aW9uXCIsY2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlQsXCJkYXRhLXRlc3RpZFwiOlwidmVydGljYWwtc3BsaXQtYmFja2dyb3VuZC1pbWFnZS1jb250YWluZXJcIixjaGlsZHJlbjooMCwkZS5qc3gpKFRiLHt9KX0pLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOk8ubGlnaHRib3hDb250YWluZXIsXCJkYXRhLXRlc3RpZFwiOlwidmVydGljYWwtbGlnaHRib3gtY29udGFpbmVyXCIscm9sZTpcIm1haW5cIixjaGlsZHJlbjooMCwkZS5qc3gpKHlDLHtmb2N1c09uRGVidWdDb3B5TGluazp2LHNldEZvY3VzT25FbGxpcHNpczp4LHNob3dEZWJ1Z0luZm86aCxzZXRTaG93RGVidWdJbmZvOmIsc3R5bGVzOmJDKGksRSxjKSxjaGlsZHJlbjpufSl9KV19KSwoMCwkZS5qc3gpKFZ3LHtpc0RlYnVnSW5mb1Nob3duOmgsZm9jdXNPbkVsbGlwc2lzOlAsb25EZWJ1Z0l0ZW1DbGljazpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdyghMCksYighaCl9fSldfSl9KV19KSl9KX0pfTtmdW5jdGlvbiBqQyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gSUMoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gSUMoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIElDKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIExDPWZ1bmN0aW9uKCl7dmFyIGU9SXQuZGVmYXVsdC5pbnN0YW5jZSx0PWUuYWN0aXZlRmxhdm9yLG49ZS50ZWxlbWV0cnkscj0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZSxpPXIuYWN0aXZlVmlldyxhPXIuYWN0aXZlRmxvdyxsPUVoKCkucG9zdFJlZGlyZWN0U3RhdGUscz1sLnVybCxjPWwucG9zdFBhcmFtcyx1PWwudGFyZ2V0LGQ9bC5zdWJtaXRGb3JtLGY9dm9pZCAwIT09ZCYmZCxwPVJ0KG4se2FjdGl2ZVZpZXc6aSxhY3RpdmVGbG93OmEsYWN0aXZlRmxhdm9yOnR9KS5sb2dTZXJ2aWNlRGlhZ0V2ZW50LGc9KDAsby51c2VSZWYpKG51bGwpO3JldHVybigwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtmJiYocCh7bWV0cmljTmFtZTpybi5SZWRpcmVjdCxtZXRyaWNWYWx1ZTooMCxzdC5Laykocyl9KSxnLmN1cnJlbnQuc3VibWl0KCkpfSksW3AscyxmXSksKDAsJGUuanN4KShcImZvcm1cIix7XCJkYXRhLXRlc3RpZFwiOlwicG9zdC1yZWRpcmVjdC1mb3JtXCIscmVmOmcsbWV0aG9kOlwiUE9TVFwiLFwiYXJpYS1oaWRkZW5cIjpcInRydWVcIix0YXJnZXQ6dXx8XCJfdG9wXCIsYWN0aW9uOnMsY2hpbGRyZW46YyYmT2JqZWN0LmVudHJpZXMoYykubWFwKChmdW5jdGlvbihlKXt2YXIgdD1qQyhlLDIpLG49dFswXSxyPXRbMV07cmV0dXJuKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOm4sdmFsdWU6cnx8XCJcIn0sbil9KSl9KX07ZnVuY3Rpb24gREMoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIE5DKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgUkM9e21heENhY2hlZFJlc291cmNlVGhyZXNob2xkVGltZU1zOjUwLGJ1Y2tldFRyYW5zZmVyUmF0ZUluY3JlYXNlVmFsdWU6MTIuNSxnZXRQZXJmb3JtYW5jZU1ldHJpY3M6ZnVuY3Rpb24oKXt2YXIgZSx0PW51bGwsbj0wO2lmKCF3aW5kb3cucGVyZm9ybWFuY2UpcmV0dXJue2VudHJ5VHlwZTpcInVuc3VwcG9ydGVkX2Jyb3dzZXJcIn07aWYod2luZG93LnBlcmZvcm1hbmNlLmdldEVudHJpZXMpe3ZhciByPXdpbmRvdy5wZXJmb3JtYW5jZS5nZXRFbnRyaWVzKCk7dD1SQy5pc1BsdDEociksbj1SQy5nZXRQbHRUcmFuc2ZlckJ1Y2tldERhdGEociksZT1yLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVyblwibmF2aWdhdGlvblwiPT09ZS5lbnRyeVR5cGV9KSl8fHt9fWVsc2UgZT13aW5kb3cucGVyZm9ybWFuY2UudGltaW5nfHx7fTtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/REMoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtOQyhlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6REMoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHtpc1BsdDE6dCxwbHRUcmFuc2ZlckJ1Y2tldDpufSxSQy50b0pTT05fc2FmZShlKSl9LGlzUGx0MTpmdW5jdGlvbihlKXt2YXIgdD1udWxsLG49ZS5sZW5ndGg7aWYoIWV8fG48MSlyZXR1cm4gbnVsbDtmb3IodmFyIHI9MDtyPG47cis9MSl7dmFyIG89ZVtyXTtpZihSQy5pc1Jlc291cmNlKG8uZW50cnlUeXBlKSYmIVJDLmlzU3ViRG9jdW1lbnQoUkMudG9KU09OX3NhZmUobykuaW5pdGlhdG9yVHlwZSkmJiFSQy5pc0RvY3VtZW50KG8ubmFtZSkpe3ZhciBpPVJDLmlzUmVzb3VyY2VQbHQxKG8pO2lmKCEwPT09aSl0PSEwO2Vsc2UgaWYoITE9PT1pKXt0PSExO2JyZWFrfX19cmV0dXJuIHR9LGlzUmVzb3VyY2U6ZnVuY3Rpb24oZSl7cmV0dXJuXCJyZXNvdXJjZVwiPT09ZX0saXNTdWJEb2N1bWVudDpmdW5jdGlvbihlKXtyZXR1cm5cInN1YmRvY3VtZW50XCI9PT1lfSxpc0RvY3VtZW50OmZ1bmN0aW9uKGUpe3JldHVyblwiZG9jdW1lbnRcIj09PWV9LGlzUmVzb3VyY2VQbHQxOmZ1bmN0aW9uKGUpe3JldHVybiBlLmR1cmF0aW9uPjA/ZS5kdXJhdGlvbjx0aGlzLm1heENhY2hlZFJlc291cmNlVGhyZXNob2xkVGltZU1zOm51bGx9LGlzUmVzb3VyY2VPck5hdmlnYXRpb25UaW1pbmc6ZnVuY3Rpb24oZSl7cmV0dXJuXCJyZXNvdXJjZVwiPT09ZS5lbnRyeVR5cGV8fFwibmF2aWdhdGlvblwiPT09ZS5lbnRyeVR5cGV9LGdldFBsdFRyYW5zZmVyQnVja2V0RGF0YTpmdW5jdGlvbihlKXtpZighZXx8MD09PWUubGVuZ3RoKXJldHVybiAwO3ZhciB0PVJDLmdldE92ZXJhbGxUcmFuc2ZlclJhdGUoZSk7cmV0dXJuIFJDLmdldFRyYW5zZmVyQnVja2V0KHQpfSxnZXRUcmFuc2ZlckJ1Y2tldDpmdW5jdGlvbihlKXtpZigwPT09ZSlyZXR1cm4gMDtmb3IodmFyIHQ9dGhpcy5idWNrZXRUcmFuc2ZlclJhdGVJbmNyZWFzZVZhbHVlLG49dGhpcy5idWNrZXRUcmFuc2ZlclJhdGVJbmNyZWFzZVZhbHVlLHI9MDtlPj10JiZyPDIwOyl7cis9MTt2YXIgbz10O3QrPW4sbj1vfXJldHVybiByfSxnZXRPdmVyYWxsVHJhbnNmZXJSYXRlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49MCxyPXt9LG89MDtvPGUubGVuZ3RoO28rPTEpe3ZhciBpPWVbb107aWYoIVJDLmlzUmVzb3VyY2VQbHQxKGkpJiZSQy5pc1Jlc291cmNlT3JOYXZpZ2F0aW9uVGltaW5nKGkpKXt2YXIgYT1SQy5nZXREb21haW5Ib3N0KGkubmFtZSksbD1pLHM9bC50cmFuc2ZlclNpemUsYz1sLnJlc3BvbnNlRW5kLHU9UkMuY2FsY1RpbWVzcGFuKFJDLmdldFN0YXJ0KGkpLGMpO3U+MCYmcz4wJiYhclthXSYmKHQrPXMsbis9dSxyW2FdPSEwKX19cmV0dXJuIG4+MCYmdD4wP1JDLmNhbGNLYlJhdGVQZXJTZWNvbmQodCxuKTowfSxjYWxjS2JSYXRlUGVyU2Vjb25kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIDFlMyooZS90KS8xMDI0fSxnZXRTdGFydDpmdW5jdGlvbihlKXt2YXIgdD1lLnJlc3BvbnNlU3RhcnQ7aWYoIXQpe3ZhciBuPVJDLmdldEJhc2VTdGFydFRpbWUoZSk7aWYobj4wKXJldHVybiBufXJldHVybiB0fSxnZXRCYXNlU3RhcnRUaW1lOmZ1bmN0aW9uKGUpe3JldHVybiBlLmZldGNoU3RhcnQ+MCYmZS5mZXRjaFN0YXJ0PE51bWJlci5NQVhfVkFMVUU/ZS5mZXRjaFN0YXJ0OjB9LGNhbGNUaW1lc3BhbjpmdW5jdGlvbihlLHQpe3JldHVybiFlfHwhdHx8dDxlPzA6dC1lfSxnZXREb21haW5Ib3N0OmZ1bmN0aW9uKGUpe3JldHVyblwiZG9jdW1lbnRcIj09PWU/ZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWU6UkMuaXNBYnNvbHV0ZVVybChlKT9SQy5leHRyYWN0SG9zdG5hbWUoZSk6ZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWV9LGV4dHJhY3RIb3N0bmFtZTpmdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtyZXR1cm4gdC5ocmVmPWUsdC5ob3N0bmFtZX0saXNBYnNvbHV0ZVVybDpmdW5jdGlvbihlKXtyZXR1cm4hIS9eKD86W2Etel0rOik/XFwvXFwvL2kudGVzdChlKX0sdG9KU09OX3NhZmU6ZnVuY3Rpb24oZSl7dmFyIHQ9e307aWYoZS50b0pTT04pcmV0dXJuIGUudG9KU09OKCk7Zm9yKHZhciBuIGluIGUpe3ZhciByPWVbbl07XCJzdHJpbmdcIiE9dHlwZW9mIHImJlwibnVtYmVyXCIhPXR5cGVvZiByJiZcImJvb2xlYW5cIiE9dHlwZW9mIHJ8fCh0W25dPXIpfXJldHVybiB0fX07ZnVuY3Rpb24gQkMoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFVDKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0JDKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7RkMoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkJDKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIEZDKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBNQyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gekMoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gekMoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHpDKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIEhDPWZ1bmN0aW9uKGUpe3ZhciB0PUl0LmRlZmF1bHQuaW5zdGFuY2Usbj10LmFjdGl2ZUZsYXZvcixyPXQudGVsZW1ldHJ5LGk9TUMoKDAsby51c2VTdGF0ZSkoITEpLDIpLGE9aVswXSxsPWlbMV0scz1ubigpOygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe0loLnQuaXNFcnJvckxvZ2dlZChlKXx8SWgudC5sb2dFeGNlcHRpb24oZSxzKX12YXIgbz1mdW5jdGlvbigpe3ZhciB0LG8saTt0PXMuZGltZW5zaW9ucyxvPXQudmlldyxpPXQuZmxvdyxhfHxvPT09VHQuTm9uZSYmaT09PUV0Lk5vbmV8fChzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiByLmFkZEV2ZW50KFVDKFVDKHtfdGFibGU6TnQuUi5QbHR9LFJDLmdldFBlcmZvcm1hbmNlTWV0cmljcygpKSx7fSx7ZGltZW5zaW9uczooMCxOdC5JSykoe2FjdGl2ZVZpZXc6byxhY3RpdmVGbG93OmksYWN0aXZlRmxhdm9yOm59KX0pKX0pLDEwMCksbCghMCkpLG51bGw9PWV8fGUoKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIix0KSxcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlP28oKTp3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixvKSxmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibG9hZFwiLG8pLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZXJyb3JcIix0KX19KSxbcixzLGEsbixlXSl9O2Z1bmN0aW9uIFZDKGUsdCxuLHIsbyxpLGEpe3RyeXt2YXIgbD1lW2ldKGEpLHM9bC52YWx1ZX1jYXRjaChjKXtyZXR1cm4gdm9pZCBuKGMpfWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9dmFyIFdDPWZ1bmN0aW9uKCl7dmFyIGU9T2UoKSx0PSgwLG8udXNlQ29udGV4dCkoVVMpLG49dC5oaXN0b3J5U3RhdGUuaGlzdG9yeUluZGV4LHI9dC5kaXNwYXRjaFN0YXRlQ2hhbmdlOygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbigpe3ZhciB0LG89KHQ9cmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQobyl7dmFyIGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihvJiZ2b2lkIDAhPT1vLnN0YXRlJiZudWxsIT09by5zdGF0ZSl7dC5uZXh0PTI7YnJlYWt9cmV0dXJuIHQuYWJydXB0KFwicmV0dXJuXCIpO2Nhc2UgMjppPW8uc3RhdGUsZShpPG4/LTE6MSkscihpPDA/e3R5cGU6QVMuU2V0SGlzdG9yeUluZGV4QWN0aW9uLHBheWxvYWQ6MH06e3R5cGU6QVMuU2V0SGlzdG9yeUluZGV4QWN0aW9uLHBheWxvYWQ6aX0pO2Nhc2UgNTpjYXNlXCJlbmRcIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSksZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gYShlKXtWQyhpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtWQyhpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO3JldHVybiBFaSgpJiYod2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG4sXCJcIiksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJwb3BzdGF0ZVwiLHQpKSxmdW5jdGlvbigpe0VpKCkmJndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9wc3RhdGVcIix0KX19KSxbZSxuLHJdKX07ZnVuY3Rpb24gR0MoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuICRDKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuICRDKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiAkQyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBLQz1mdW5jdGlvbigpe3ZhciBlPUdDKCgwLG8udXNlU3RhdGUpKCExKSwyKSx0PWVbMF0sbj1lWzFdLHI9SXQuZGVmYXVsdC5pbnN0YW5jZS5iYW5uZXJFbnZpcm9ubWVudCxpPW5uKCk7cmV0dXJuIGZ1bmN0aW9uKGUpeygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0KXtJaC50LmxvZ0V4Y2VwdGlvbihcIlVOSEFORExFRCBQUk9NSVNFIFJFSkVDVElPTjogXCIuY29uY2F0KG51bGw9PXQ/dm9pZCAwOnQucmVhc29uLFwiIGluIFwiKS5jb25jYXQobnVsbD09dD92b2lkIDA6dC5wcm9taXNlKSxlLFwiVU5IQU5ETEVEX1BST01JU0VfUkVKRUNUSU9OXCIpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmhhbmRsZWRyZWplY3Rpb25cIix0KSxmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwidW5oYW5kbGVkcmVqZWN0aW9uXCIsdCl9fSksW2VdKX0oaSksV0MoKSxIQygoZnVuY3Rpb24oKXt2YXIgZTt2b2lkIDAhPT0obnVsbD09KGU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJvdXRlclwiKSk/dm9pZCAwOmUub2Zmc2V0SGVpZ2h0KSYmdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUub2Zmc2V0V2lkdGgpJiZ2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl8fChJaC50LmxvZ1BhZ2VJc0JsYW5rRXJyb3IoaSksbighMCkpfSkpLHtiYW5uZXJFbnZpcm9ubWVudDpyLGlzUGFnZUJsYW5rOnR9fSxxQz1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5jdXN0b21TdHlsZXMscj1LQygpLmlzUGFnZUJsYW5rLGk9bm4oKSxhPXBoKCkuY3VzdG9taXphdGlvblN0YXRlLGw9YS5zdHlsZXMscz1sLmZhdmljb25VcmwsYz1sLmxheW91dFRlbXBsYXRlLHU9YS5yZW5kZXJQcm9taXNlcyxkPWM9PT1jdC5oeC5WZXJ0aWNhbFNwbGl0P0VDOk9DLGY9VW0uaW5zdGFuY2UscD1mLnVzZUNvbW1vblN0eWxlczsoMCxmLnVzZVN0YXRpY0NvbW1vblN0eWxlcykoKTt2YXIgZyxtPXAoKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg+MCxuPXZoKCgwLG8udXNlU3RhdGUpKCF0KSwyKSxyPW5bMF0saT1uWzFdLGE9dmgoKDAsby51c2VTdGF0ZSkoIXQpLDIpLGw9YVswXSxzPWFbMV0sYz0oMCxvLnVzZUNhbGxiYWNrKSh5aChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KFwicmV0dXJuXCIsUHJvbWlzZS5hbGwoZSkudGhlbigoZnVuY3Rpb24oKXtpKCEwKSxzKCEwKX0pKSk7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSksW2VdKTsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7cnx8YygpfSksW2Mscl0pfSh1KSxnPXMsKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJsaW5rW3JlbH49J2ljb24nXVwiKTtlJiZnJiYoZS5ocmVmPWcpfSksW2ddKSxyPygwLCRlLmpzeCkoeGIse30pOigwLCRlLmpzeCkoTWgse3RlbGVtZXRyeVN0YXRlOmksQ3JpdGljYWxFcnJvclBhZ2U6KDAsJGUuanN4KSh4Yix7fSksY2hpbGRyZW46KDAsJGUuanN4KShkLHtzdHlsZXM6bSxjdXN0b21TdHlsZXM6bixjaGlsZHJlbjooMCwkZS5qc3hzKShqaCx7aW5pdGlhbFN0YXRlOkFoLGNoaWxkcmVuOlsoMCwkZS5qc3gpKExDLHt9KSx0XX0pfSl9KX0sUUM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbml0aWFsR2xvYmFsU3RhdGUsbj1lLmluaXRpYWxDdXN0b21pemF0aW9uU3RhdGUscj1lLmluaXRpYWxIaXN0b3J5U3RhdGUsbz1lLmNoaWxkcmVuO3JldHVybigwLCRlLmpzeCkoZW4se2luaXRpYWxTdGF0ZTp0LGNoaWxkcmVuOigwLCRlLmpzeCkoZ2gse2luaXRpYWxTdGF0ZTpuLGNoaWxkcmVuOigwLCRlLmpzeCkoRlMse2luaXRpYWxTdGF0ZTpyLGNoaWxkcmVuOm99KX0pfSl9LFhDPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuYm9pbGVyUGxhdGVUZXh0LHI9aVMoKSxvPXIuY3VycmVudExvY2F0aW9uLGk9ci5zbGlkZUFuaW1hdGlvblN0eWxlcyxhPXIub25BbmltYXRpb25FbmQsbD1VbS5pbnN0YW5jZS51c2VSb3V0ZUFuaW1hdGlvblN0eWxlcygpLHM9U2cobj9sLnJvdXRlQ29udGVudDpcIlwiLGwucGFnaW5hdGlvblZpZXdNaW5IZWlnaHQsaSk7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtdGVzdGlkXCI6XCJyb3V0ZUFuaW1hdGlvblwiLGNsYXNzTmFtZTpzLG9uQW5pbWF0aW9uRW5kOmEsY2hpbGRyZW46KDAsJGUuanN4KShCZSx7bG9jYXRpb246byxjaGlsZHJlbjp0fSl9KX0sWUM9ZnVuY3Rpb24oZSl7dmFyIHQ9SXQuZGVmYXVsdC5pbnN0YW5jZS5jb21wbGlhbmNlUXVlcnlVcmwsbj1uZXcgTWFwO3JldHVybiBuLnNldChKUyxlKSwoMCxzdC5TTCkodCxuKX0sWkM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1rdy5Lb3JlYUNvbnNlbnREYXRhQ29sbGVjdGlvbnx8ZT09PWt3LktvcmVhQ29uc2VudERhdGFQcm92aXNpb259LEpDPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09a3cuQ2hpbmFQaXBsTGVhcm5Nb3JlfHxlPT09a3cuQ2hpbmFQcml2YWN5fSxlaz1mdW5jdGlvbihlKXtyZXR1cm4hWkMoZSkmJiFKQyhlKX0sdGs9ZnVuY3Rpb24oZSl7dmFyIHQ9encuaW5zdGFuY2Usbj10LmZvb3RlckltcHJlc3N1bVVybCxyPXQuZm9vdGVyQTExeUNvbmZvcm1lVXJsLG89dC5wcml2YWN5TGlua0V4dGVybmFsLGk9dC50ZXJtc09mVXNlTGlua0V4dGVybmFsO3JldHVybiEhKGU9PT1rdy5JbXByZXNzdW0mJm58fGU9PT1rdy5BMTF5Q29uZm9ybWUmJnJ8fGU9PT1rdy5Qcml2YWN5JiZvfHxlPT09a3cuVGVybXNPZlVzZSYmaSl9LG5rPWZ1bmN0aW9uKGUpe3JldHVybiBaQyhlKXx8ZT09PWt3LkNoaW5hUGlwbExlYXJuTW9yZX0scms9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50cmltKCksbj1cIjwvcD5cIixyPW5ldyBSZWdFeHAoJzxwIHRhYmluZGV4PVwiLTFcIj48L3A+JyxcImdcIik7cmV0dXJuKCc8cCBpZD1cImFncmVlbWVudFRpdGxlXCIgdGFiaW5kZXg9XCItMVwiPicrdCtuKS5yZXBsYWNlKC8oPzpcXHJcXG58XFxyfFxcbikvZywnPC9wPjxwIHRhYmluZGV4PVwiLTFcIj4nKS5yZXBsYWNlKHIsXCJcIil9O2Z1bmN0aW9uIG9rKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBpayhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBpayhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gaWsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgYWs9ZnVuY3Rpb24oZSl7dmFyIHQ9b2soKDAsby51c2VTdGF0ZSkoZSksMiksbj10WzBdLHI9dFsxXTtyZXR1cm4oMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7ZG9jdW1lbnQudGl0bGU9bn0pLFtuXSksW24scl19O2Z1bmN0aW9uIGxrKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBzayhlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gY2soZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHVrKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHVrKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB1ayhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBkaz1mdW5jdGlvbihlKXsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7aWYobnVsbD09ZSlyZXR1cm4gZnVuY3Rpb24oKXt9O3ZhciB0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2lmKG51bGwhPWUpe2Zvcih2YXIgdCxuPSExLHI9bnVsbCxvPUZpKGUpLGk9MDtpPG8ubGVuZ3RoO2krPTEpe3ZhciBhPW9baV07aWYoYS5ub2RlTmFtZSE9PU9pLkFuY2hvciYmYS5ub2RlTmFtZSE9PU9pLlNwYW4pe249ITA7YnJlYWt9cnx8YS5ub2RlTmFtZSE9PU9pLkFuY2hvciYmYS5ub2RlTmFtZSE9PU9pLlNwYW58fChyPWEpfSFuJiZyJiYobnVsbD09PSh0PXIpfHx2b2lkIDA9PT10fHx0LmZvY3VzKCkpfX0oZSl9KSxocCk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dCh0KX19KSxbZV0pfTtmdW5jdGlvbiBmayhlLHQsbixyKXt2YXIgaT1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcixhPUp0KCksbD1hLmdsb2JhbFN0YXRlLnNob3dQYWdlVGl0bGUscz1hLmRpc3BhdGNoU3RhdGVDaGFuZ2UsYz1jaygoMCxvLnVzZVN0YXRlKShsKSwxKVswXSx1PSgwLG8udXNlTWVtbykoKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2xrKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7c2soZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmxrKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7fSx6dCl9KSxbXSksZD0oMCxvLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybnt9fSksW10pO3ZvaWQgMCE9PShudWxsPT1uP3ZvaWQgMDpuLmJhY2tCdXR0b25IYW5kbGVyKSYmKHUuYmFja0J1dHRvbkhhbmRsZXI9bi5iYWNrQnV0dG9uSGFuZGxlciksdm9pZCAwIT09KG51bGw9PW4/dm9pZCAwOm4uZm9jdXNFbGVSZWYpJiYodS5mb2N1c0VsZVJlZj1uLmZvY3VzRWxlUmVmKSx2b2lkIDAhPT0obnVsbD09bj92b2lkIDA6bi5oaWRlQmFubmVyTG9nbykmJih1LmhpZGVCYW5uZXJMb2dvPW4uaGlkZUJhbm5lckxvZ28pLHZvaWQgMCE9PShudWxsPT1uP3ZvaWQgMDpuLmlzV2lkZVZpZXcpJiYodS5pc1dpZGVWaWV3PW4uaXNXaWRlVmlldyksdm9pZCAwIT09KG51bGw9PW4/dm9pZCAwOm4ubG9hZGluZ0RhdGEpJiYodS5sb2FkaW5nRGF0YT1uLmxvYWRpbmdEYXRhKSx2b2lkIDAhPT0obnVsbD09bj92b2lkIDA6bi5zaG93QmFja0J1dHRvbk9uQWN0aXZlVmlldykmJih1LnNob3dCYWNrQnV0dG9uT25BY3RpdmVWaWV3PW4uc2hvd0JhY2tCdXR0b25PbkFjdGl2ZVZpZXcpLHZvaWQgMCE9PShudWxsPT1uP3ZvaWQgMDpuLnNob3dDbG9zZUJ1dHRvbk9uQWN0aXZlVmlldykmJih1LnNob3dDbG9zZUJ1dHRvbk9uQWN0aXZlVmlldz1uLnNob3dDbG9zZUJ1dHRvbk9uQWN0aXZlVmlldyksdm9pZCAwIT09KG51bGw9PW4/dm9pZCAwOm4uYmFja0J1dHRvbkhhbmRsZXIpJiYodS5iYWNrQnV0dG9uSGFuZGxlcj1uLmJhY2tCdXR0b25IYW5kbGVyKSx2b2lkIDAhPT0obnVsbD09bj92b2lkIDA6bi5jbG9zZUJ1dHRvbkhhbmRsZXIpJiYodS5jbG9zZUJ1dHRvbkhhbmRsZXI9bi5jbG9zZUJ1dHRvbkhhbmRsZXIpLHZvaWQgMCE9PShudWxsPT1uP3ZvaWQgMDpuLmhpZGVCYW5uZXJMb2dvKSYmKHUuaGlkZUJhbm5lckxvZ289bi5oaWRlQmFubmVyTG9nbyksdm9pZCAwIT09KG51bGw9PW4/dm9pZCAwOm4ubG9hZGluZ0RhdGEpJiYodS5sb2FkaW5nRGF0YT1uLmxvYWRpbmdEYXRhKSx2b2lkIDAhPT0obnVsbD09bj92b2lkIDA6bi5zaG93SWRlbnRpdHlCYW5uZXIpJiYodS5zaG93SWRlbnRpdHlCYW5uZXI9bi5zaG93SWRlbnRpdHlCYW5uZXIpLHZvaWQgMCE9PShudWxsPT1uP3ZvaWQgMDpuLnNob3dNb3JlT3B0aW9ucykmJih1LnNob3dNb3JlT3B0aW9ucz1uLnNob3dNb3JlT3B0aW9ucyksdm9pZCAwIT09KG51bGw9PW4/dm9pZCAwOm4uc2hvd1BhZ2VUaXRsZSkmJih1LnNob3dQYWdlVGl0bGU9bi5zaG93UGFnZVRpdGxlKSx2b2lkIDAhPT0obnVsbD09bj92b2lkIDA6bi5kaXNhYmxlSGVpZ2h0QW5pbWF0aW9uKSYmKHUuZGlzYWJsZUhlaWdodEFuaW1hdGlvbj1uLmRpc2FibGVIZWlnaHRBbmltYXRpb24pLG51bGwhPXImJnIucmVzdG9yZVNob3dQYWdlVGl0bGUmJihkLnNob3dQYWdlVGl0bGU9YyksZGsodS5mb2N1c0VsZVJlZiksKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3ZhciBuLHI7KHMoe3R5cGU6THQuQWN0aXZhdGVWaWV3LHZpZXc6ZSxmbG93OnQsZmxhdm9yOmksdmlld09wdGlvbnM6dX0pLGUhPT1UdC5Ob25lKSYmKG51bGw9PT0obj1JdC5kZWZhdWx0Lmluc3RhbmNlKXx8dm9pZCAwPT09bnx8bnVsbD09PShyPW4udGVsZW1ldHJ5KXx8dm9pZCAwPT09cnx8ci5hZGRFdmVudCh7X3RhYmxlOk50LlIuU2VydmljZURpYWcsbWV0cmljTmFtZTpcIlZpZXdBY3RpdmF0aW9uXCIsbWV0cmljVmFsdWU6XCIxXCIsZGltZW5zaW9uczooMCxOdC5JSykoe2FjdGl2ZVZpZXc6ZSxhY3RpdmVGbG93OnQsYWN0aXZlRmxhdm9yOml9KX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtzKHt0eXBlOkx0LkRlYWN0aXZhdGVWaWV3LHZpZXc6ZSx2aWV3T3B0aW9uczpkfSl9fSksW3MsZSx0LGksdSxkXSl9dmFyIHBrPWZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9Y2soYWsoZSksMSlbMF07cmV0dXJuIGZrKHQsbixyLG8pLFtlLGldfTtmdW5jdGlvbiBnayhlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIG1rKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe2drKGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe2drKGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfX12YXIgaGs9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hZ3JlZW1lbnRUeXBlLG49ZS5mb290ZXJBMTF5Q29uZm9ybWVVcmwscj1lLmZvb3RlckltcHJlc3N1bVVybCxpPWUucHJpdmFjeVVybCxhPWUudGVybXNPZlVzZVVybCxsPWUuZ2VuZXJhbFZpc2l0TGluayxzPWUuaXNFeHRlcm5hbExpbmssYz1lLnNldERvd25sb2FkRXJyb3IsdT1lLnNldEFncmVlbWVudEh0bWwsZD1KdCgpLmRpc3BhdGNoU3RhdGVDaGFuZ2UsZj1mdW5jdGlvbihlKXt2YXIgdD1lLmFncmVlbWVudFR5cGUsbj1lLnByaXZhY3lVcmwscj1lLnRlcm1zT2ZVc2VVcmwsaT1lLnNldERvd25sb2FkRXJyb3IsYT1lLnNldEFncmVlbWVudEh0bWwsbD1ubigpO3JldHVybigwLG8udXNlQ2FsbGJhY2spKG1rKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIG8scyxjLHUsZDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmUucHJldj0wLG89bmV3IERhdGUsYz0hMCxlLnQwPXQsZS5uZXh0PWUudDA9PT1rdy5Qcml2YWN5PzY6ZS50MD09PWt3LkNoaW5hUHJpdmFjeT84OmUudDA9PT1rdy5Lb3JlYUNvbnNlbnREYXRhQ29sbGVjdGlvbnx8ZS50MD09PWt3LktvcmVhQ29uc2VudERhdGFQcm92aXNpb258fGUudDA9PT1rdy5DaGluYVBpcGxMZWFybk1vcmU/MTA6KGUudDAsa3cuVGVybXNPZlVzZSwxMyk7YnJlYWs7Y2FzZSA2OnJldHVybiBzPW4sZS5hYnJ1cHQoXCJicmVha1wiLDE1KTtjYXNlIDg6cmV0dXJuIHM9WUMoa3cuUHJpdmFjeSksZS5hYnJ1cHQoXCJicmVha1wiLDE1KTtjYXNlIDEwOnJldHVybiBzPVlDKHQpLGM9ITEsZS5hYnJ1cHQoXCJicmVha1wiLDE1KTtjYXNlIDEzOnJldHVybiBzPXIsZS5hYnJ1cHQoXCJicmVha1wiLDE1KTtjYXNlIDE1OnJldHVybiBlLm5leHQ9MTcsKDAsYlMuUSkocyx7cHJvY2Vzc2luZ1N0YXJ0VGltZTpvLHRlbGVtZXRyeVN0YXRlOmx9KTtjYXNlIDE3OnU9ZS5zZW50LGQ9Yz9yayh1KTp1LGEoZCksZS5uZXh0PTI1O2JyZWFrO2Nhc2UgMjI6ZS5wcmV2PTIyLGUudDE9ZS5jYXRjaCgwKSxpKCEwKTtjYXNlIDI1OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1swLDIyXV0pfSkpKSxbdCxsLGEsbixyLGldKX0oe2FncmVlbWVudFR5cGU6dCxwcml2YWN5VXJsOmksdGVybXNPZlVzZVVybDphLHNldERvd25sb2FkRXJyb3I6YyxzZXRBZ3JlZW1lbnRIdG1sOnV9KSxwPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYWdyZWVtZW50VHlwZSxuPWUuZm9vdGVyQTExeUNvbmZvcm1lVXJsLHI9ZS5mb290ZXJJbXByZXNzdW1Vcmwsbz1lLnByaXZhY3lVcmwsaT1lLnRlcm1zT2ZVc2VVcmw7c3dpdGNoKHQpe2Nhc2Uga3cuSW1wcmVzc3VtOnJldHVybiByO2Nhc2Uga3cuQTExeUNvbmZvcm1lOnJldHVybiBuO2Nhc2Uga3cuUHJpdmFjeTpyZXR1cm4gbztjYXNlIGt3LlRlcm1zT2ZVc2U6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm5cIlwifX0oe2FncmVlbWVudFR5cGU6dCxmb290ZXJBMTF5Q29uZm9ybWVVcmw6bixmb290ZXJJbXByZXNzdW1Vcmw6cixwcml2YWN5VXJsOmksdGVybXNPZlVzZVVybDphfSksZz1zPygwLHN0Llo3KShsLCgwLHN0LlRwKShwKSk6XCJcIjtyZXR1cm4oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oKXtpZihzKXt2YXIgZT1yayhnKTt1KGUpfWVsc2UgZigpO2Qoe3R5cGU6THQuRGF0YUxvYWRlZCx2aWV3OlR0LlZpZXdBZ3JlZW1lbnR9KX0pLFtzLGQsZyx1LGZdKX07ZnVuY3Rpb24gYmsoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHlrKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHlrKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB5ayhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciB2az1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5mb290ZXJBMTF5Q29uZm9ybWVVcmwsaT1lLmZvb3RlckltcHJlc3N1bVVybCxhPWUuZ2VuZXJhbFZpc2l0TGluayxsPWUuaG9zdGluZ0Zsb3cscz1lLnByaXZhY3lVcmwsYz1lLnRlcm1zT2ZVc2VVcmwsdT1lLndpZGVWaWV3RXh0ZXJuYWxBZ3JlZW1lbnQsZD12b2lkIDA9PT11fHx1LGY9ZS5zaG93Q2xvc2VCdXR0b25PbkFjdGl2ZVZpZXcscD12b2lkIDA9PT1mfHxmLGc9elMoKSxtPWZ1bmN0aW9uKCl7ZyhUdC5WaWV3QWdyZWVtZW50LC0xLCEwKX0saD1iaygoMCxvLnVzZVN0YXRlKSghMSksMiksYj1oWzBdLHk9aFsxXSx2PWJrKCgwLG8udXNlU3RhdGUpKFwiXCIpLDIpLHc9dlswXSxTPXZbMV0sUD0odD1vLnVzZUNvbnRleHQod2UpLm1hdGNoZXMsbj10W3QubGVuZ3RoLTFdLG4/bi5wYXJhbXM6e30pW1wiKlwiXSx4PXRrKFApLE89KGR8fCF4KSYmZWsoUCksXz1oayh7YWdyZWVtZW50VHlwZTpQLGZvb3RlckExMXlDb25mb3JtZVVybDpyLGZvb3RlckltcHJlc3N1bVVybDppLGdlbmVyYWxWaXNpdExpbms6YSxwcml2YWN5VXJsOnMsdGVybXNPZlVzZVVybDpjLGlzRXh0ZXJuYWxMaW5rOngsc2V0RG93bmxvYWRFcnJvcjp5LHNldEFncmVlbWVudEh0bWw6U30pO3JldHVybiBmayhUdC5WaWV3QWdyZWVtZW50LGwse2Nsb3NlQnV0dG9uSGFuZGxlcjptLGRpc2FibGVIZWlnaHRBbmltYXRpb246ITAsaXNXaWRlVmlldzpPLGxvYWRpbmdEYXRhOiEwLHNob3dDbG9zZUJ1dHRvbk9uQWN0aXZlVmlldzpwLHNob3dJZGVudGl0eUJhbm5lcjohMSxzaG93UGFnZVRpdGxlOiExfSx7cmVzdG9yZVNob3dQYWdlVGl0bGU6ITB9KSwoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7eSghMSksUyhcIlwiKSxfKCl9KSxbX10pLHthZ3JlZW1lbnRUeXBlOlAsZG93bmxvYWRFcnJvcjpiLGFncmVlbWVudEh0bWw6dyxvbkJhY2s6bX19LHdrPXtnZW5lcmFsVmlzaXRMaW5rOlwiRm9yIGRldGFpbHMsIHBsZWFzZSB2aXNpdCB0aGlzIHNpdGU6IHswfVwiLGdlbmVyaWNFcnJvck5vUmVzcG9uc2VUcnlBZ2FpbjpcIldlIGRpZG4ndCByZWNlaXZlIGEgcmVzcG9uc2UuIFBsZWFzZSB0cnkgYWdhaW4uXCIsZ2VuZXJhbEJhY2s6XCJCYWNrXCJ9LFNrPW5ldyBMbS5yKHthZ3JlZW1lbnRWaWV3U3RyaW5nczp3a30pLFBrPWZ1bmN0aW9uKGUpe3ZhciB0LG4scj1lLmhvc3RpbmdGbG93LGk9encuaW5zdGFuY2UsYT1pLmZvb3RlckltcHJlc3N1bVVybCxsPWkuZm9vdGVyQTExeUNvbmZvcm1lVXJsLHM9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLGM9cy50ZXJtc09mVXNlVXJsLHU9cy5wcml2YWN5VXJsLGQ9XCJpZERpdl9pQWdyZWVtZW50XCIsZj1Tay5pbnN0YW5jZS5hZ3JlZW1lbnRWaWV3U3RyaW5ncyxwPWYuZ2VuZXJhbFZpc2l0TGluayxnPWYuZ2VuZXJpY0Vycm9yTm9SZXNwb25zZVRyeUFnYWluLG09Zi5nZW5lcmFsQmFjayxoPXZrKHtmb290ZXJBMTF5Q29uZm9ybWVVcmw6bCxmb290ZXJJbXByZXNzdW1Vcmw6YSxnZW5lcmFsVmlzaXRMaW5rOnAsaG9zdGluZ0Zsb3c6cixwcml2YWN5VXJsOnUsdGVybXNPZlVzZVVybDpjfSksYj1oLmFncmVlbWVudFR5cGUseT1oLmRvd25sb2FkRXJyb3Isdj1oLmFncmVlbWVudEh0bWwsdz1oLm9uQmFjayxTPVVtLmluc3RhbmNlLFA9Uy51c2VBZ3JlZW1lbnRWaWV3U3R5bGVzLHg9Uy51c2VDb21tb25TdHlsZXMsTz1TLnVzZVRleHRCdXR0b25Db250YWluZXJTdHlsZXMsXz14KCksQz1QKCksaz1PKCkuYWdyZWVtZW50TGF5b3V0LEE9KHQ9YixuPUl0LmRlZmF1bHQuaW5zdGFuY2UuaGlkZVRvcFZpZXdBZ3JlZW1lbnRCYWNrQnV0dG9uLHtzaG93VG9wQnV0dG9uOiEodGsodCl8fG4pLHNob3dCb3R0b21CdXR0b246IShaQyh0KXx8SkModCkpfSksVD1BLnNob3dUb3BCdXR0b24sRT1BLnNob3dCb3R0b21CdXR0b24saj0oMCxvLnVzZVJlZikobnVsbCksST0oMCxvLnVzZVJlZikobnVsbCk7cmV0dXJuKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIGU9VD9udWxsPT1JP3ZvaWQgMDpJLmN1cnJlbnQ6bnVsbD09aj92b2lkIDA6ai5jdXJyZW50O251bGw9PWV8fGUuZm9jdXMoKX0pLGhwKX0pLFtULEksal0pLF9fKHcpLCgwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpfLnNlY3Rpb24sXCJkYXRhLXRlc3RpZFwiOlwiYWdyZWVtZW50c1wiLGNoaWxkcmVuOlt5JiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhfLnJvdyxfLnRleHRCb2R5KSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2lkOlwiZXJyb3JcIixyb2xlOlwiYWxlcnRcIixcImFyaWEtbGl2ZVwiOlwiYXNzZXJ0aXZlXCIsXCJhcmlhLXJlbGV2YW50XCI6XCJ0ZXh0XCIsXCJhcmlhLWF0b21pY1wiOlwidHJ1ZVwiLGNoaWxkcmVuOmd9KX0pLFQmJigwLCRlLmpzeCkoRl8se2N1c3RvbUNzczprLGNoaWxkcmVuOigwLCRlLmpzeCkoVV8se2xhYmVsOm0sb25DbGljazp3LGhhc0ZvY3VzOiEwLGFyaWFEZXNjcmliZWRCeTpkLHJlZjpJLGRhdGFUZXN0SWQ6XCJ2aWV3QWdyZWVtZW50VG9wQmFja1wifSl9KSx2JiYoMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLCRlLmpzeCkoXCJwcmVcIix7Y2xhc3NOYW1lOlNnKF8udGV4dEJvZHksXy50ZXh0QmxvY2tCb2R5LEMubGF5b3V0LG5rKGIpP0MuY2hpbGRTdHlsaW5nOlwiXCIsYj09PWt3LkNoaW5hUGlwbExlYXJuTW9yZT9DLmNoaW5hUGlwbDpcIlwiKSxpZDpkLHJvbGU6XCJhbGVydFwiLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6dn19KSxFJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpfLndpbkJ1dHRvblBpbkJvdHRvbSxjaGlsZHJlbjooMCwkZS5qc3gpKEZfLHtjdXN0b21Dc3M6VD9rOlwiXCIsY2hpbGRyZW46KDAsJGUuanN4KShVXyx7bGFiZWw6bSxvbkNsaWNrOncsYXJpYURlc2NyaWJlZEJ5OmQsaGFzRm9jdXM6IVQsYnV0dG9uSWQ6XCJ2aWV3QWdyZWVtZW50QmFja1wiLHJlZjpqLGRhdGFUZXN0SWQ6XCJ2aWV3QWdyZWVtZW50Qm90dG9tQmFja1wifSl9KX0pXX0pXX0pfSx4az1mdW5jdGlvbigpe3JldHVybiBmayhUdC5GZXRjaFNlc3Npb25zUHJvZ3Jlc3MsRXQuTG9naW4pLCgwLCRlLmpzeCkoUk8se3RpdGxlSWQ6XCJsb2dpbkhlYWRlclwiLHRpdGxlOlwiRmV0Y2ggU2Vzc2lvbnMgUHJvZ3Jlc3MgVmlld1wifSl9LE9rPWZ1bmN0aW9uKCl7cmV0dXJuIGZrKFR0LkZpZG8sRXQuTG9naW4pLCgwLCRlLmpzeCkoUk8se3RpdGxlSWQ6XCJsb2dpbkhlYWRlclwiLHRpdGxlOlwiRmlkbyBWaWV3XCJ9KX0sX2s9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPSgwLFVtLmluc3RhbmNlLnVzZVNlY29uZGFyeUNvbnRlbnRTdHlsZXMpKCkscj1TZyhuLnNtYWxsRm9udFNpemUsbi5jb250YWluZXJMYXlvdXQpO3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnIsXCJkYXRhLXRlc3RpZFwiOlwic2Vjb25kYXJ5Q29udGVudFwiLGNoaWxkcmVuOnR9KX0sQ2s9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50aWxlTGlzdCxuPWUuYXJpYUxhYmVsbGVkQnkscj1lLmFyaWFEZXNjcmliZWRCeSxvPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZmluZEluZGV4KChmdW5jdGlvbihlKXtyZXR1cm4gZS5oYXNJbml0aWFsRm9jdXN9KSk7cmV0dXJuLTE9PT10PzA6dH0odCksaT10Lm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4oMCwkZS5qc3gpKGZDLHttYWluVGV4dDplLm1haW5UZXh0LGhlbHBUZXh0OmUuaGVscFRleHQsc3ViVGV4dDplLnN1YlRleHQsaW1hZ2U6ZS5pbWFnZSxvbkNsaWNrOmUub25DbGljayxoYXNJbml0aWFsRm9jdXM6dD09PW8sYXJpYURlc2NyaWJlZEJ5OjA9PT10P3I6dm9pZCAwLGFyaWFMYWJlbDplLmFyaWFMYWJlbCxoZWxwRGlhbG9nSWNvbjplLmhlbHBEaWFsb2dJY29uLGhlbHBEaWFsb2dIZWFkZXI6ZS5oZWxwRGlhbG9nSGVhZGVyLGhlbHBEaWFsb2dEZXNjcmlwdGlvbjplLmhlbHBEaWFsb2dEZXNjcmlwdGlvbixtYWluVGV4dFJlcGxhY2VWYWx1ZTplLm1haW5UZXh0UmVwbGFjZVZhbHVlLG9wdGlvbnNNZW51QnV0dG9uOmUub3B0aW9uc01lbnVCdXR0b24sZGF0YVRlc3RJZDplLmRhdGFUZXN0SWR9LGUubWFpblRleHRSZXBsYWNlVmFsdWU/KDAsc3QuWjcpKGUubWFpblRleHQsZS5tYWluVGV4dFJlcGxhY2VWYWx1ZSk6ZS5tYWluVGV4dCl9KSk7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtyb2xlOlwibGlzdFwiLGlkOlwidGlsZUxpc3RcIixcImFyaWEtbGFiZWxsZWRieVwiOm4sXCJkYXRhLXRlc3RpZFwiOlwidGlsZUxpc3RcIixjaGlsZHJlbjppfSl9LGtrPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29tbW9uTG9naW5TdHJpbmdzLG49KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUudXNlci5kaXNwbGF5VXNlcm5hbWUscj1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuZnJpZW5kbHlBcHBOYW1lLGk9KDAsby51c2VDb250ZXh0KShBTykudmlld1N0YXRlLmhhc0lkcERpc2FtYmlnRXJyb3IsYT1mTy5pbnN0YW5jZS5sb2dpbk1vZGUsbD1XTyhhLHIsdCkscz1mdW5jdGlvbihlLHQpe3ZhciBuPWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nLHI9VlAobil8fFdQKG4pfHwhR1Aobik/XCJJdCBsb29rcyBsaWtlIHRoaXMgZW1haWwgaXMgdXNlZCB3aXRoIG1vcmUgdGhhbiBvbmUgYWNjb3VudCBmcm9tIE1pY3Jvc29mdC4gV2hpY2ggb25lIGRvIHlvdSB3YW50IHRvIHVzZT9cIjpcIkl0IGxvb2tzIGxpa2UgdGhpcyBwaG9uZSBpcyB1c2VkIHdpdGggbW9yZSB0aGFuIG9uZSBhY2NvdW50IGZyb20gTWljcm9zb2Z0LiBXaGljaCBvbmUgZG8geW91IHdhbnQgdG8gdXNlP1wiO3JldHVybiB0P1wiV2UncmUgaGF2aW5nIHRyb3VibGUgbG9jYXRpbmcgeW91ciBhY2NvdW50LiBXaGljaCB0eXBlIG9mIGFjY291bnQgZG8geW91IHdhbnQgdG8gdXNlP1wiOnJ9KG4saSk7cmV0dXJue2RvY3VtZW50VGl0bGU6bCxwYWdlRGVzY3JpcHRpb246c319LEFrPWZ1bmN0aW9uKCl7dmFyIGU9KDAsby51c2VDb250ZXh0KShadCkuZGlzcGF0Y2hTdGF0ZUNoYW5nZSx0PSgwLG8udXNlQ29udGV4dCkoQU8pLmRpc3BhdGNoU3RhdGVDaGFuZ2Usbj16UygpO3JldHVybiBmdW5jdGlvbihyLG8saSxhLGwpe28mJnQoe3R5cGU6dU8uU2V0SWRwUmVkaXJlY3REYXRhLHBheWxvYWQ6e3VybDppLHBvc3RQYXJhbXM6YX19KSx0KHt0eXBlOnVPLlNldERlc2t0b3BTc29Eb21haW4scGF5bG9hZDpsfSksZSh7dHlwZTpMdC5CZWdpbk5hdmlnYXRlLHNvdXJjZTpUdC5JZHBEaXNhbWJpZ3VhdGlvbixkZXN0aW5hdGlvbjpyLGRpc3BsYXlPcHRpb25zOntuYXZpZ2F0aW9uRGlyZWN0aW9uOlwiZm9yd2FyZFwifX0pLG4oVHQuSWRwRGlzYW1iaWd1YXRpb24sQXcocikpfX07ZnVuY3Rpb24gVGsoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEVrKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgams9ZnVuY3Rpb24oKXt2YXIgZT0oMCxvLnVzZUNvbnRleHQpKFp0KSx0PWUuZ2xvYmFsU3RhdGUudXNlci5kaXNwbGF5VXNlcm5hbWUsbj1lLmRpc3BhdGNoU3RhdGVDaGFuZ2Uscj0oMCxvLnVzZUNvbnRleHQpKEFPKS52aWV3U3RhdGUub3RoZXJJZHBSZWRpcmVjdFVybCxpPWZPLmluc3RhbmNlLm90aGVySWRwUG9zdFBhcmFtcyxhPWZfKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC51bnNhZmVVbmVzY2FwZWRTdHJpbmcsbz0oMCxzdC5meSkoZSksbD0oMCxzdC5OaSkocix7dXNlcm5hbWU6ZW5jb2RlVVJJQ29tcG9uZW50KG8pLGxvZ2luX2hpbnQ6ZW5jb2RlVVJJQ29tcG9uZW50KG8pfSkscz1pP2Z1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1RrKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7RWsoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlRrKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7fSxpKTp2b2lkIDA7cyYmKHMudXNlcm5hbWU9byksYShsLHMsITApLG4oe3R5cGU6THQuQmVnaW5OYXZpZ2F0ZSxzb3VyY2U6VHQuSWRwRGlzYW1iaWd1YXRpb24sZGVzdGluYXRpb246KDAsc3QuS2spKGwpfSl9fSxJaz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1mTy5pbnN0YW5jZS5zd2l0Y2hEaXNhbWJpZyxhPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLnVzZXIuZGlzcGxheVVzZXJuYW1lLGE9KDAsby51c2VDb250ZXh0KShBTykudmlld1N0YXRlLGw9YS5jcmVkZW50aWFscy5wcmVmZXJyZWRDcmVkZW50aWFsLHM9YS5kZXNrdG9wU3NvRW5hYmxlZCxjPWEuZGVza3RvcFNzb0V4ZWN1dGVkLHU9YS5pZHBSZWRpcmVjdFBvc3RQYXJhbXMsZD1hLmlkcFJlZGlyZWN0VXJsLGY9QWsoKTtyZXR1cm4gZnVuY3Rpb24oKXtpZihzJiYhYyl7dmFyIG89aS51bnNhZmVVbmVzY2FwZWRTdHJpbmcsYT1LUChvLCExLCExKTtmKFR0LkZldGNoU2Vzc2lvbnNQcm9ncmVzcyxlLHQsbixhKX1lbHNlIHN3aXRjaChsKXtjYXNlICRQLkZpZG86ZihUdC5GaWRvLGUsdCxuLHIpO2JyZWFrO2Nhc2UgJFAuT25lVGltZUNvZGU6Y2FzZSAkUC5QdWJsaWNJZGVudGlmaWVyQ29kZTpmKFR0Lk9uZVRpbWVDb2RlLGUsdCxuLHIpO2JyZWFrO2Nhc2UgJFAuUmVtb3RlTkdDOmYoVHQuUHVzaE5vdGlmaWNhdGlvbnMsZSx0LG4scik7YnJlYWs7Y2FzZSAkUC5QYXNzd29yZDpkZWZhdWx0OmQ/ZihUdC5JZHBSZWRpcmVjdCwhMCxkLHUscik6ZihUdC5QYXNzd29yZCxlLHQsbixyKX19fShlLHQsbixyKSxsPWprKCk7cmV0dXJue2FhZFRpbGVDbGlja0hhbmRsZXI6aT9hOmwsbXNhVGlsZUNsaWNrSGFuZGxlcjppP2w6YX19LExrPWZ1bmN0aW9uKCl7dmFyIGU9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUudXNlci5kaXNwbGF5VXNlcm5hbWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nLHQ9VW0uaW5zdGFuY2Usbj10LnVzZUNvbW1vblN0eWxlcyxyPXQudXNlU3RhdGljQ29tbW9uU3R5bGVzLGk9Zk8uaW5zdGFuY2UsYT1pLmRpc2FtYmlnUmVuYW1lVXJsLGw9aS5zaG93U3dpdGNoVXNlcixzPXt9LGM9a2soe2NvbW1vbkxvZ2luU3RyaW5nczpwQ30pLHU9Yy5kb2N1bWVudFRpdGxlLGQ9Yy5wYWdlRGVzY3JpcHRpb24sZj1JayhmYWxzZSxcIlwiLHMsXCJcIikscD1mLmFhZFRpbGVDbGlja0hhbmRsZXIsZz1mLm1zYVRpbGVDbGlja0hhbmRsZXIsbT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT0oMCxvLnVzZUNvbnRleHQpKEFPKS52aWV3U3RhdGUuY3JlZGVudGlhbHMuc2Vzc2lvbnMsYT1BaygpO3JldHVybiBmdW5jdGlvbigpe2EoaS5sZW5ndGg/VHQuQWNjb3VudFBpY2tlcjpUdC5Vc2VybmFtZSxlLHQsbixyKX19KGZhbHNlLFwiXCIscyxcIlwiKSxoPW4oKSxiPUhTKCkseT1oXygpLHY9T18oKTtmayhUdC5JZHBEaXNhbWJpZ3VhdGlvbixFdC5Mb2dpbix7c2hvd0lkZW50aXR5QmFubmVyOiExfSksYWsodSkscigpO3ZhciB3PXttYWluVGV4dDpcIldvcmsgb3Igc2Nob29sIGFjY291bnRcIixoZWxwVGV4dDpcIkNyZWF0ZWQgYnkgeW91ciBJVCBkZXBhcnRtZW50XCIsc3ViVGV4dDplLGltYWdlOnt1cmxzOnViLHJvbGU6XCJwcmVzZW50YXRpb25cIn0sb25DbGljazpwLGhhc0luaXRpYWxGb2N1czohMCxhcmlhTGFiZWw6XCJXb3JrIG9yIHNjaG9vbCBhY2NvdW50XCJ9LFM9e21haW5UZXh0OlwiUGVyc29uYWwgYWNjb3VudFwiLGhlbHBUZXh0OlwiQ3JlYXRlZCBieSB5b3VcIixzdWJUZXh0OmUsaW1hZ2U6e3VybHM6ZmIscm9sZTpcInByZXNlbnRhdGlvblwifSxvbkNsaWNrOmcsYXJpYUxhYmVsOlwiUGVyc29uYWwgYWNjb3VudFwifSxQPVwiQmFja1wiO3JldHVybigwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2coaC5yb3csaC50ZXh0Qm9keSxoLnRleHRCbG9ja0JvZHkpLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7aWQ6XCJsb2dpbkRlc2NyaXB0aW9uXCIscm9sZTpcImhlYWRpbmdcIixcImFyaWEtbGV2ZWxcIjoxLGNoaWxkcmVuOmR9KX0pLCgwLCRlLmpzeCkoQ2sse3RpbGVMaXN0Olt3LFNdfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6aC5idXR0b25NYXJnaW4sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6aC5yb3csY2hpbGRyZW46KDAsJGUuanN4cykoX2sse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpoLmZvcm1Hcm91cCxjaGlsZHJlbjooMCwkZS5qc3gpKGJ3LHt0ZXh0OlwiVGlyZWQgb2Ygc2VlaW5nIHRoaXM/IDxkaXNhbWJpZ1JlbmFtZUxpbms+UmVuYW1lIHlvdXIgcGVyc29uYWwgTWljcm9zb2Z0IGFjY291bnQuPC9kaXNhbWJpZ1JlbmFtZUxpbms+XCIsZW1iZWRkZWRCaW5kaW5nczp7ZGlzYW1iaWdSZW5hbWVMaW5rOmZ1bmN0aW9uKGUpe3JldHVybigwLCRlLmpzeCkoXCJhXCIse2lkOlwiZGlzYW1iaWdSZW5hbWVMaW5rXCIsaHJlZjphLGNoaWxkcmVuOmVbMF19KX19fSl9KSxsJiYhYiYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6aC5mb3JtR3JvdXAsY2hpbGRyZW46KDAsJGUuanN4KSh0Qyx7bGlua0lkOlwiaTE2NjhcIix0ZXh0OlwiU2lnbiBpbiB3aXRoIGEgZGlmZmVyZW50IE1pY3Jvc29mdCBhY2NvdW50XCIsb25DbGljazptfSl9KV19KX0pfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6aC53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6aC5yb3csY2hpbGRyZW46KDAsJGUuanN4KShGXyx7Y2hpbGRyZW46eSYmKDAsJGUuanN4KShVXyx7YnV0dG9uSWQ6XCJiYWNrQnV0dG9uXCIsbGFiZWw6UCxpc1ByaW1hcnk6ITEsYXJpYUxhYmVsOlAsb25DbGljazp2fSl9KX0pfSldfSl9LERrPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPVwiVGFraW5nIHlvdSB0byB5b3VyIG9yZ2FuaXphdGlvbidzIHNpZ24taW4gcGFnZVwiLGk9ZSxhPXQsbD1yLmxpbmtlZEluRmVkVXJsLHM9ci5naXRodWJGZWRVcmwsYz1yLmdvb2dsZUZlZFVybCx1PXIuZmFjZWJvb2tGZWRVcmw7c3dpdGNoKG4pe2Nhc2UgY3Qua3YuTGlua2VkSW46aT1pfHxsLGE9e30sbz1cIlJlZGlyZWN0aW5nIHlvdSB0byBMaW5rZWRJbiB0byBzaWduIGluLi4uXCI7YnJlYWs7Y2FzZSBjdC5rdi5HaXRIdWI6aT1pfHxzLGE9e30sbz1cIlJlZGlyZWN0aW5nIHlvdSB0byBHaXRIdWIgdG8gc2lnbiBpbi4uLlwiO2JyZWFrO2Nhc2UgY3Qua3YuR29vZ2xlOmk9aXx8YyxhPXt9LG89XCJSZWRpcmVjdGluZyB5b3UgdG8gR29vZ2xlIHRvIHNpZ24gaW4uLi5cIjticmVhaztjYXNlIGN0Lmt2LkZhY2Vib29rOmk9aXx8dSxhPXt9LG89XCJSZWRpcmVjdGluZyB5b3UgdG8gRmFjZWJvb2sgdG8gc2lnbiBpbi4uLlwifXJldHVybnt0aXRsZTpvLHJlZGlyZWN0VXJsOmkscmVkaXJlY3RQb3N0UGFyYW1zOmF9fTtmdW5jdGlvbiBOayhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gUmsoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gUmsoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIFJrKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIEJrLFVrPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLGEsbCxzPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZSxjPXMuaWRwUmVkaXJlY3RQb3N0UGFyYW1zLHU9cy5pZHBSZWRpcmVjdFByb3ZpZGVyLGQ9cy5pZHBSZWRpcmVjdFVybCxmPWZPLmluc3RhbmNlLHA9Zi5mYWNlYm9va0ZlZFVybCxnPWYuZ2l0aHViRmVkVXJsLG09Zi5nb29nbGVGZWRVcmwsaD1mLmlkcFJlZGlyZWN0VGltZW91dE1zLGI9Zi5saW5rZWRJbkZlZFVybCx5PURrKGQsYyx1LHtsaW5rZWRJbkZlZFVybDpiLGdpdGh1YkZlZFVybDpnLGdvb2dsZUZlZFVybDptLGZhY2Vib29rRmVkVXJsOnB9KSx2PXkucmVkaXJlY3RVcmwsdz15LnJlZGlyZWN0UG9zdFBhcmFtcyxTPXhfKCksUD1mXygpLHg9KHQ9ZnVuY3Rpb24oKXtlJiZlKCksUCh2LHcsITAsITApfSxuPWgscj0oMCxvLnVzZVJlZikoKSxpPU5rKCgwLG8udXNlU3RhdGUpKCEwKSwyKSxhPWlbMF0sbD1pWzFdLCgwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtyLmN1cnJlbnQ9dH0pLFt0XSksKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe2lmKGEpe3ZhciBlPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09PShlPXIuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuY2FsbChyKX0pLG4pO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQoZSl9fXJldHVybiBmdW5jdGlvbigpe319KSxbdCxuLGFdKSxmdW5jdGlvbigpe3JldHVybiBsKCExKX0pO3JldHVybiBmdW5jdGlvbigpe3goKSxTKCl9fSxGaz1mdW5jdGlvbigpe3ZhciBlPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZS5pZHBSZWRpcmVjdFByb3ZpZGVyLHQ9VW0uaW5zdGFuY2UudXNlU3RhdGljQ29tbW9uU3R5bGVzLG49SXQuZGVmYXVsdC5pbnN0YW5jZS5hY3RpdmVGbGF2b3Iscj1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbW1vbkxvZ2luU3RyaW5ncyxuPXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcy5mcmllbmRseUFwcE5hbWUscj0oMCxvLnVzZUNvbnRleHQpKEFPKS52aWV3U3RhdGUsaT1yLmlkcFJlZGlyZWN0UG9zdFBhcmFtcyxhPXIuaWRwUmVkaXJlY3RQcm92aWRlcixsPXIuaWRwUmVkaXJlY3RVcmwscz1mTy5pbnN0YW5jZSxjPXMuZmFjZWJvb2tGZWRVcmwsdT1zLmdpdGh1YkZlZFVybCxkPXMuZ29vZ2xlRmVkVXJsLGY9cy5saW5rZWRJbkZlZFVybCxwPXMubG9naW5Nb2RlO3JldHVybntkb2N1bWVudFRpdGxlOldPKHAsbix0KSxsaWdodGJveFRpdGxlOkRrKGwsaSxhLHtsaW5rZWRJbkZlZFVybDpmLGdpdGh1YkZlZFVybDp1LGdvb2dsZUZlZFVybDpkLGZhY2Vib29rRmVkVXJsOmN9KS50aXRsZX19KHtjb21tb25Mb2dpblN0cmluZ3M6cEN9KSxpPXIuZG9jdW1lbnRUaXRsZSxhPXIubGlnaHRib3hUaXRsZSxsPVVrKG49PT1jdC5vRi5XaW4xMU9vYmVGYWJyaWM/UXg6dm9pZCAwKTtyZXR1cm4gZmsoVHQuSWRwUmVkaXJlY3QsRXQuTG9naW4se3Nob3dJZGVudGl0eUJhbm5lcjohMX0pLGFrKGkpLHQoKSwoMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7XCJkYXRhLXRlc3QtcmVkaXJlY3QtcHJvdmlkZXItaWRcIjplLGNoaWxkcmVuOigwLCRlLmpzeCkoUk8se3RpdGxlSWQ6XCJsb2dpbkhlYWRlclwiLHRpdGxlOmF9KX0pLCgwLCRlLmpzeCkodlMse2NoaWxkcmVuOigwLCRlLmpzeCkoeVMse30pfSksKDAsJGUuanN4KSh0Qyx7bGlua0lkOlwicmVkaXJlY3RDYW5jZWxcIix0ZXh0OlwiQ2FuY2VsXCIsYXJpYURlc2NyaWJlZEJ5OlwibG9naW5IZWFkZXJcIixvbkNsaWNrOmwsaGFzRm9jdXM6ITB9KV19KX0sTWs9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuaWQscj12b2lkIDA9PT1uP1wiZXJyb3JJZFwiOm4sbz1lLmNsYXNzTmFtZSxpPWUuZXJyb3JDb2RlLGE9ZS5lbmFibGVBcmlhTGl2ZVVwZGF0ZXMsbD0oMCxVbS5pbnN0YW5jZS51c2VDb21tb25TdHlsZXMpKCkscz1vfHxsLmFsZXJ0RXJyb3I7cmV0dXJuIHQ/YT8oMCwkZS5qc3gpKFwiZGl2XCIse2lkOnIsY2xhc3NOYW1lOnMsXCJkYXRhLXRlc3RpZFwiOmkscm9sZTpcImFsZXJ0XCIsXCJhcmlhLWxpdmVcIjpcImFzc2VydGl2ZVwiLFwiYXJpYS1hdG9taWNcIjpcInRydWVcIixcImFyaWEtcmVsZXZhbnRcIjpcImFsbFwiLGNoaWxkcmVuOnR9KTooMCwkZS5qc3gpKFwiZGl2XCIse3JvbGU6XCJhbGVydFwiLFwiYXJpYS1saXZlXCI6XCJhc3NlcnRpdmVcIixjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2lkOnIsY2xhc3NOYW1lOnMsXCJkYXRhLXRlc3RpZFwiOmksY2hpbGRyZW46dH0pfSk6bnVsbH07IWZ1bmN0aW9uKGUpe2UuTm9uZT1cIlwiLGUuQ2hhbGxlbmdlU2Vzc2lvblN0YXJ0PVwiQ2hhbGxlbmdlU2Vzc2lvblN0YXJ0XCIsZS5DaGFsbGVuZ2VTdWNjZXNzPVwiQ2hhbGxlbmdlU3VjY2Vzc1wiLGUuQ2hhbGxlbmdlVGltZW91dD1cIkNoYWxsZW5nZVRpbWVvdXRcIixlLkdldE9uZVRpbWVDb2RlQ29tcGxldGU9XCJHZXRPbmVUaW1lQ29kZUNvbXBsZXRlXCIsZS5HZXRPbmVUaW1lQ29kZUVycm9yPVwiR2V0T25lVGltZUNvZGVFcnJvclwifShCa3x8KEJrPXt9KSk7ZnVuY3Rpb24gemsoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBIayhlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVmsoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/SGsoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtXayhlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6SGsoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gV2soZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBHaz1mdW5jdGlvbihlKXt2YXIgdD1udWxsO3N3aXRjaChlKXtjYXNlIEpQLlNNUzp0PW90Lm1vYmlsZVNtczticmVhaztjYXNlIEpQLlZvaWNlOnQ9b3Qudm9pY2VDYWxsO2JyZWFrO2Nhc2UgSlAuRW1haWw6Y2FzZSBKUC5BbHRFbWFpbDp0PW90LmVtYWlsQWRkcmVzczticmVhaztjYXNlIEpQLlRPVFBBdXRoZW50aWNhdG9yVjI6dD1vdC5wdXNoTm90aWZpY2F0aW9uc31yZXR1cm4gdH0sJGs9ZnVuY3Rpb24oZSl7dmFyIHQ9e30sbj1lLmlzRW5jcnlwdGVkLHI9ZS5wcm9vZlR5cGUsbz1mdW5jdGlvbihlLHQpe3ZhciBuPW51bGw7c3dpdGNoKGUpe2Nhc2UgSlAuVm9pY2U6Y2FzZSBKUC5TTVM6bj10P2l0Lm1vYmlsZUVuY3J5cHRlZDppdC5tb2JpbGU7YnJlYWs7Y2FzZSBKUC5FbWFpbDpjYXNlIEpQLkFsdEVtYWlsOm49dD9pdC5lbWFpbEFkZHJlc3NFbmNyeXB0ZWQ6aXQuZW1haWxBZGRyZXNzO2JyZWFrO2Nhc2UgSlAuVE9UUEF1dGhlbnRpY2F0b3JWMjpuPWl0LnNlc3Npb25BcHByb3Zlcn1yZXR1cm4gbn0oZS5wcm9vZlR5cGUsbik7cmV0dXJuIHRbbnQudXNlcm5hbWVdPWUudXNlcm5hbWV8fFwiXCIsdFtudC5mbG93VG9rZW5dPWUuZmxvd1Rva2VufHxcIlwiLHRbbnQucHVycG9zZV09ZS5wdXJwb3NlfHxydC5wYXNzd29yZCx0W250LmNoYW5uZWxdPUdrKHIpfHxcIlwiLG51bGwhPT1vJiYodFtvXT1lLnByb29mRGF0YXx8XCJcIiksZS51aU1vZGUmJih0W250LnVpTW9kZV09ZS51aU1vZGUpLGUubG9jYWxlSWQmJih0LmxjaWQ9ZS5sb2NhbGVJZCksbnx8ciE9PUpQLlNNUyYmciE9PUpQLlZvaWNlfHwodFtudC5waG9uZUNvdW50cnldPWUucGhvbmVDb3VudHJ5fHxcIlwiLHRbbnQucGhvbmVDb3VudHJ5Q29kZV09ZS5waG9uZUNvdW50cnlDb2RlfHxcIlwiKSxlLnVuYXV0aFNlc3Npb25JZCYmKHRbbnQudW5hdXRoU2Vzc2lvbklkXT1lLnVuYXV0aFNlc3Npb25JZCksZS5wcm9vZkNvbmZpcm1hdGlvbiYmKHRbbnQucHJvb2ZDb25maXJtYXRpb25dPWUucHJvb2ZDb25maXJtYXRpb24pLGUuY2FuYXJ5Rmxvd1Rva2VuJiYodFtudC5jYW5hcnlGbG93VG9rZW5dPWUuY2FuYXJ5Rmxvd1Rva2VuKSxlLmNoYWxsZW5nZUlkJiYodFtudC5jaGFsbGVuZ2VJZF09ZS5jaGFsbGVuZ2VJZCksZS5jaGFsbGVuZ2VTb2x1dGlvbiYmKHRbbnQuY2hhbGxlbmdlU29sdXRpb25dPWUuY2hhbGxlbmdlU29sdXRpb24pLGUuY2hhbGxlbmdlVHlwZSYmKHRbbnQuY2hhbGxlbmdlVHlwZV09ZS5jaGFsbGVuZ2VUeXBlKSxlLmNoYWxsZW5nZVZpZXdTdXBwb3J0ZWQmJih0W250LmNoYWxsZW5nZVZpZXdTdXBwb3J0ZWRdPWUuY2hhbGxlbmdlVmlld1N1cHBvcnRlZCksZS5waG9uZVJlcE1ldGFkYXRhJiYodFtudC5waG9uZVJlcE1ldGFkYXRhXT1lLnBob25lUmVwTWV0YWRhdGEpLHR9LEtrPWZ1bmN0aW9uKGUpe3ZhciB0PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBNYXAsbj0oMCxzdC5MWikoXCJta3RcIikscj0oMCxzdC5MWikoXCJsY1wiKTtyZXR1cm4gbiYmdC5zZXQoXCJta3RcIixuKSxyJiZ0LnNldChcImxjaWRcIixyKSxlLnNpdGVJZCYmdC5zZXQoXCJpZFwiLGUuc2l0ZUlkKSxlLmNsaWVudElkJiZ0LnNldChcImNsaWVudF9pZFwiLGUuY2xpZW50SWQpLGUuZm9yd2FyZGVkQ2xpZW50SWQmJnQuc2V0KFwiZmNpXCIsZS5mb3J3YXJkZWRDbGllbnRJZCksZS5ub1BhQnViYmxlVmVyc2lvbiYmdC5zZXQoXCJub3BhXCIsZS5ub1BhQnViYmxlVmVyc2lvbiksdH0oZSksbj0oMCxzdC5TTCkoXCJHZXRPbmVUaW1lQ29kZS5zcmZcIix0KSxyPSgwLFJ4Lk1QKShlLmRhdGEsXCImXCIsXCI9XCIpLG89ZS50aW1lb3V0fHwzZTQ7cmV0dXJuKDAsYlMudl8pKG4se2hlYWRlcnM6e1wiQ29udGVudC10eXBlXCI6XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIn0sYm9keTpyLHRpbWVvdXQ6b30pfSxxaz1mdW5jdGlvbigpe3ZhciBlLHQ9KGU9cmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIG4scixvLGksYSxsLHMsYyx1LGQsZixwLGcsbSxoLGI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbj0hMSxsPWx0Lm5vbmUscz17fSxjPSExLHU9ITEsZS5wcmV2PTUsZS5uZXh0PTgsdC5qc29uKCk7Y2FzZSA4OnM9ZS5zZW50LGM9ITAsZS5uZXh0PTE2O2JyZWFrO2Nhc2UgMTI6ZS5wcmV2PTEyLGUudDA9ZS5jYXRjaCg1KSx1PSEwLG49ITA7Y2FzZSAxNjppZihjJiYoc1thdC5mbG93VG9rZW5dJiYobz1zW2F0LmZsb3dUb2tlbl0pLChsPXNbYXQuc3RhdGVdfHxsdC5ub25lKT8oc1thdC5kaXNwbGF5U2lnbkZvclVJXSYmKHI9c1thdC5kaXNwbGF5U2lnbkZvclVJXSksc1thdC5kZXZpY2VzXSYmKGQ9c1thdC5kZXZpY2VzXSksc1thdC5zZXNzaW9uTG9va3VwS2V5XSYmKGk9c1thdC5zZXNzaW9uTG9va3VwS2V5XSksc1thdC51c2VyQ29kZV0mJihhPXNbYXQudXNlckNvZGVdKSxzW2F0LmNoYWxsZW5nZVR5cGVdJiYoZj1zW2F0LmNoYWxsZW5nZVR5cGVdKSxzW2F0LmFya29zZURhdGFFeGNoYW5nZUJsb2JdJiYocD1zW2F0LmFya29zZURhdGFFeGNoYW5nZUJsb2JdKSxzW2F0LnBob25lUmVwTWV0YWRhdGFdJiYoZz1zW2F0LnBob25lUmVwTWV0YWRhdGFdKSxuPWwhPT1sdC5zdWNjZXNzKTpuPSEwKSwhbil7ZS5uZXh0PTI4O2JyZWFrfXRocm93IG09dT9iUy5CJDpcInJlc3BvbnNlIGRpZCBub3QgY29udGFpbiBhIHN1Y2Nlc3NmdWwgc3RhdGVcIixoPW5ldyBFcnJvcihtKSxvJiYoaC5mbG93VG9rZW49byksZiYmKGguY2hhbGxlbmdlVHlwZT1mKSxwJiYoaC5hcmtvc2VEYXRhRXhjaGFuZ2VCbG9iPXApLGcmJihoLnBob25lUmVwTWV0YWRhdGE9ZyksaC5vdGNTdGF0dXM9bCxoO2Nhc2UgMjg6cmV0dXJuIGI9e3Jlc3BvbnNlOnN9LG8mJihiLmZsb3dUb2tlbj1vKSxyJiYoYi5kaXNwbGF5U2lnbj1yKSxpJiYoYi5zZXNzaW9uTG9va3VwS2V5PWkpLGEmJihiLnVzZXJDb2RlPWEpLGQmJihiLmRldmljZXM9ZC5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybntuYW1lOm51bGwhPT0odD1lLk5hbWUpJiZ2b2lkIDAhPT10P3Q6XCJcIixhcHBsaWNhdGlvbjplLkFwcGxpY2F0aW9ufX0pKSksZS5hYnJ1cHQoXCJyZXR1cm5cIixiKTtjYXNlIDM1OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1s1LDEyXV0pfSkpLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGEoZSl7emsoaSxyLG8sYSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7emsoaSxyLG8sYSxsLFwidGhyb3dcIixlKX1hKHZvaWQgMCl9KSl9KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxRaz1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD0hMSE9PWUuaXNFbmNyeXB0ZWQsbj1WayhWayh7fSxlKSx7fSx7aXNFbmNyeXB0ZWQ6dH0pO3JldHVybntkYXRhOiRrKG4pLHNpdGVJZDpuLnNpdGVJZCxjbGllbnRJZDpuLmNsaWVudElkLGZvcndhcmRlZENsaWVudElkOm4uZm9yd2FyZGVkQ2xpZW50SWQsbm9QYUJ1YmJsZVZlcnNpb246bi5ub1BhQnViYmxlVmVyc2lvbn19KGUpO3JldHVybiBLayh0KS50aGVuKHFrKS5jYXRjaCgoZnVuY3Rpb24odCl7dmFyIG4scixvO3Rocm93IGUudGVsZW1ldHJ5Q2FsbGJhY2smJmUudGVsZW1ldHJ5Q2FsbGJhY2soQmsuR2V0T25lVGltZUNvZGVFcnJvciwocj10LG89e3Byb29mVHlwZToobj1lKS5wcm9vZlR5cGUscHVycG9zZTpuLnB1cnBvc2UsdWlNb2RlOm4udWlNb2RlLGxvY2FsZUlkOm4ubG9jYWxlSWQscGhvbmVDb3VudHJ5Om4ucGhvbmVDb3VudHJ5LHBob25lQ291bnRyeUNvZGU6bi5waG9uZUNvdW50cnlDb2RlLGNoYWxsZW5nZVJlcXVlc3RUeXBlOm4uY2hhbGxlbmdlVHlwZX0sXCJvdGNTdGF0dXNcImluIHImJihvLm90Y1N0YXR1cz1yLm90Y1N0YXR1cyxvLmNoYWxsZW5nZVJlc3BvbnNlVHlwZT1yLmNoYWxsZW5nZVR5cGUpLG8pKSx0fSkpfSxYaz1mdW5jdGlvbihlKXt2YXIgdD17Q2hhbm5lbDplLmNoYW5uZWwsT3JpZ2luYWxSZXF1ZXN0OmUub3JpZ2luYWxSZXF1ZXN0LEZsb3dUb2tlbjplLmZsb3dUb2tlbn07cmV0dXJuIGUuc2Vzc2lvbklkZW50aWZpZXImJih0Lk9sZERldmljZUNvZGU9ZS5zZXNzaW9uSWRlbnRpZmllciksdH0sWWs9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsYlMuTVcpKGUuZ2V0T3RjSnNvblVybCx7Ym9keTpKU09OLnN0cmluZ2lmeShYayhlKSksdGltZW91dDozZTQsdXNlQXBpQ2FuYXJ5OiEwfSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJue3Jlc3BvbnNlOmUsZmxvd1Rva2VuOmUuRmxvd1Rva2VufX0pLChmdW5jdGlvbihlKXt0aHJvdyBmdW5jdGlvbihlKXt2YXIgdCxuPWU7cmV0dXJuIG51bGwhPT0odD1lLnJlc3BvbnNlQm9keSkmJnZvaWQgMCE9PXQmJnQuRmxvd1Rva2VuJiYobi5mbG93VG9rZW49ZS5yZXNwb25zZUJvZHkuRmxvd1Rva2VuKSxufShlKX0pKX07ZnVuY3Rpb24gWmsoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgSms9ZnVuY3Rpb24oZSl7cmV0dXJuKCEhZS5nZXRPdGNKc29uVXJsP1lrOlFrKShlKX0sZUE9ZnVuY3Rpb24oKXt2YXIgZSx0PShlPXJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciBuLHIsbyxpLGEsbCxzLGMsdSxkLGYscCxnLG0saCxiLHksdix3LFMsUCx4LE8sXyxDLGssQSxULEU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbj10Lm9uU3VjY2VzcyxyPXQub25GYWlsdXJlLG89dC5jYW5hcnlGbG93VG9rZW4saT10LmNoYW5uZWwsYT10LmZsb3dUb2tlbixsPXQuaXNFbmNyeXB0ZWQscz10LnByb29mQ29uZmlybWF0aW9uLGM9dC5wcm9vZkRhdGEsdT10LnByb29mVHlwZSxkPXQucHVycG9zZSxmPXQuc2Vzc2lvbklkZW50aWZpZXIscD10LnVzZXJuYW1lLGc9dC5jaGFsbGVuZ2VTb2x1dGlvbixtPXQuY2hhbGxlbmdlVHlwZSxoPXQuY2hhbGxlbmdlSWQsYj10LmNoYWxsZW5nZVZpZXdTdXBwb3J0ZWQseT10LnBob25lUmVwTWV0YWRhdGEsdj10LnRlbGVtZXRyeUNhbGxiYWNrLHc9SXQuZGVmYXVsdC5pbnN0YW5jZSxTPXcuY29udGV4dCxQPXcudW5hdXRoZW50aWNhdGVkU2Vzc2lvbklkLHg9dy5zaXRlSWQsTz13LmNsaWVudElkLF89dy5nZXRPdGNKc29uVXJsLEM9dy5sb2NhbGVJZCxrPXcuZm9yd2FyZGVkQ2xpZW50SWQsQT13Lm5vUGFCdWJibGVWZXJzaW9uLFQ9bngocC51bnNhZmVVbmVzY2FwZWRTdHJpbmcpLEU9e2NhbmFyeUZsb3dUb2tlbjpvLGNoYW5uZWw6aSxjbGllbnRJZDpPLGZsb3dUb2tlbjphLGZvcndhcmRlZENsaWVudElkOmssZ2V0T3RjSnNvblVybDpfLGlzRW5jcnlwdGVkOmwsbG9jYWxlSWQ6Qyxub1BhQnViYmxlVmVyc2lvbjpBLG9yaWdpbmFsUmVxdWVzdDpTLHByb29mQ29uZmlybWF0aW9uOnMscHJvb2ZEYXRhOmMscHJvb2ZUeXBlOnUscHVycG9zZTpkLHNlc3Npb25JZGVudGlmaWVyOmYsc2l0ZUlkOngsdW5hdXRoU2Vzc2lvbklkOlAsdXNlcm5hbWU6VCxjaGFsbGVuZ2VTb2x1dGlvbjpnLGNoYWxsZW5nZVR5cGU6bSxjaGFsbGVuZ2VJZDpoLGNoYWxsZW5nZVZpZXdTdXBwb3J0ZWQ6YixwaG9uZVJlcE1ldGFkYXRhOnksdGVsZW1ldHJ5Q2FsbGJhY2s6dn0sZS5hYnJ1cHQoXCJyZXR1cm5cIixKayhFKS50aGVuKG4scikpO2Nhc2UgNTpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSksZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtaayhpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtaayhpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLHRBPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5wcm9vZi5kaXNwbGF5O3N3aXRjaCh0KXtjYXNlIEpQLkVtYWlsOnJldHVybiBuO2Nhc2UgSlAuU01TOmNhc2UgSlAuVm9pY2U6cmV0dXJuIG54KG4pLnNsaWNlKC00KTtkZWZhdWx0OnJldHVybn19LG5BPWZ1bmN0aW9uKGUpe3JldHVybiBlLmNyZWRlbnRpYWxUeXBlPT09JFAuT25lVGltZUNvZGUmJiEhZS5wcm9vZi5pc0VuY3J5cHRlZH0sckE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jcmVkZW50aWFsVHlwZT09PSRQLk9uZVRpbWVDb2RlP2UucHJvb2YuaXNOb3BhOiF0LmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNyZWRlbnRpYWxUeXBlPT09JFAuUGFzc3dvcmR9KSl9LG9BPWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIGN0Lm9GLkZhYnJpYzpjYXNlIGN0Lm9GLldpbjExT29iZUZhYnJpYzpyZXR1cm5cInRydWVcIjtkZWZhdWx0OnJldHVyblwiZmFsc2VcIn19LGlBPWZ1bmN0aW9uKCl7dmFyIGU9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUsdD1lLmFjdGl2ZVZpZXcsbj1lLmFjdGl2ZUZsb3cscj1JdC5kZWZhdWx0Lmluc3RhbmNlLGk9ci5hY3RpdmVGbGF2b3IsYT1yLnRlbGVtZXRyeSxsPVJ0KGEse2FjdGl2ZVZpZXc6dCxhY3RpdmVGbG93Om4sYWN0aXZlRmxhdm9yOml9KS5sb2dVc2VyQWN0aW9uLHM9KDAsby51c2VDb250ZXh0KShTdCksYz1zLmRpc3BhdGNoQ2hhbGxlbmdlU3RhdGVDaGFuZ2UsdT1zLmNoYWxsZW5nZVN0YXRlLGQ9KHU9dm9pZCAwPT09dT93dDp1KS50eXBlLGY9dS5hcmtvc2UscD11LmhpcDtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hcmtvc2VEYXRhRXhjaGFuZ2VCbG9iLG49ZS5jaGFsbGVuZ2VUeXBlLHI9ZS5vdGNTdGF0dXMsbz1lLnBob25lUmVwTWV0YWRhdGE7aWYociE9PWx0LmNoYWxsZW5nZVJlcXVpcmVkRXJyb3ImJnIhPT1sdC5jaGFsbGVuZ2VWZXJpZmljYXRpb25FcnJvciYmciE9PWx0LnVzZXJCbG9ja2VkKXJldHVybiExO3ZhciBpPWZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJhdWRpb1wiOnJldHVybiBjdC5OVy5BdWRpbztjYXNlXCJ2aXN1YWxcIjpyZXR1cm4gY3QuTlcuVmlzdWFsO2Nhc2VcInNtc1wiOnJldHVybiBjdC5OVy5TbXM7Y2FzZVwiZW5mb3JjZW1lbnRcIjpyZXR1cm4gY3QuTlcuRW5mb3JjZW1lbnQ7Y2FzZVwiYmxvY2tcIjpyZXR1cm4gY3QuTlcuQmxvY2s7ZGVmYXVsdDpyZXR1cm4gY3QuTlcuVW5rbm93bn19KG4pLGE9ITE7cmV0dXJuIGk9PT1jdC5OVy5Vbmtub3duJiZkIT09aSYmcj09PWx0LmNoYWxsZW5nZVZlcmlmaWNhdGlvbkVycm9yJiYoYT0hMCksbyYmYyh7dHlwZTp2dC5TZXRDb21tb25BY3Rpb24scGF5bG9hZDp7cGhvbmVSZXBNZXRhZGF0YTpvfX0pLHI9PT1sdC51c2VyQmxvY2tlZCYmaT09PWN0Lk5XLkJsb2NrPyhjKHt0eXBlOnZ0LlNldENvbW1vbkFjdGlvbixwYXlsb2FkOnt0eXBlOml9fSksYT0hMCk6aSE9PWN0Lk5XLlZpc3VhbCYmaSE9PWN0Lk5XLkF1ZGlvfHwhcC51cmw/aT09PWN0Lk5XLkVuZm9yY2VtZW50JiZ0JiZmLnRpbWVvdXQmJmYudXJsJiYoYyh7dHlwZTp2dC5TZXRBcmtvc2VBY3Rpb24scGF5bG9hZDp7ZGF0YUV4Y2hhbmdlQmxvYjp0fX0pLGE9ITApOihjKHt0eXBlOnZ0LlNldENvbW1vbkFjdGlvbixwYXlsb2FkOnt0eXBlOml9fSksYT0hMCksYXx8bCh7YWN0aW9uTmFtZTpNUy5DaGFsbGVuZ2VEYXRhTWlzc2luZyxhY3Rpb25WYWx1ZTpKU09OLnN0cmluZ2lmeSh7b3RjU3RhdHVzOnIsY2hhbGxlbmdlVHlwZTpufSl9KSxhfX0sYUE9ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcix0PSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLG49dC5hY3RpdmVWaWV3LHI9dC5hY3RpdmVGbG93LGk9UnQoSXQuZGVmYXVsdC5pbnN0YW5jZS50ZWxlbWV0cnkse2FjdGl2ZVZpZXc6bixhY3RpdmVGbG93OnIsYWN0aXZlRmxhdm9yOmV9KS5sb2dVc2VyQWN0aW9uO3JldHVybiBmdW5jdGlvbihlLHQpe2koe2FjdGlvbk5hbWU6ZSxhY3Rpb25WYWx1ZTp0fSl9fTtmdW5jdGlvbiBsQShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gc0EoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gc0EoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHNBKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gY0EoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiB1QShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtjQShpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtjQShpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gZEEoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGZBKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2RBKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cEEoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmRBKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHBBKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgZ0E9ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dmFyIGwscz1lLnByb29mLGM9e3VzZXJuYW1lOm4sZmxvd1Rva2VuOnQsaXNFbmNyeXB0ZWQ6cy5pc0VuY3J5cHRlZCxwcm9vZkRhdGE6cy5kYXRhLHByb29mVHlwZTpzLnR5cGUscHVycG9zZTpzLmlzTm9wYT9ydC5ub1Bhc3N3b3JkOnJ0Lm90Y0xvZ2luLGNoYW5uZWw6R2socy50eXBlKSxvblN1Y2Nlc3M6cixvbkZhaWx1cmU6byxjaGFsbGVuZ2VWaWV3U3VwcG9ydGVkOm9BKGkpLHRlbGVtZXRyeUNhbGxiYWNrOmF9O3JldHVybiBudWxsIT09KGw9ZS5wcm9vZikmJnZvaWQgMCE9PWwmJmwuaXNFbmNyeXB0ZWQmJihjLnByb29mQ29uZmlybWF0aW9uPXRBKGUsZS5wcm9vZi50eXBlKSksY30sbUE9ZnVuY3Rpb24oZSx0KXt2YXIgbj16UygpLHI9dD9UdC5DcmVkZW50aWFsUGlja2VyOlR0LlNpZ25Jbk9wdGlvbnM7cmV0dXJuIGZ1bmN0aW9uKCl7bihlLHIpfX0saEE9ZnVuY3Rpb24oZSx0LG4scixpLGEpe3ZhciBsPXpTKCkscz1tXygpLGM9YUEoKSx1PWlBKCksZD1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcixmPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLnVzZXIudXNlcm5hbWUscD0oMCxvLnVzZUNvbnRleHQpKFplKSxnPXAuYXV0aFN0YXRlLmZsb3dUb2tlblZhbHVlLG09cC5kaXNwYXRjaFN0YXRlQ2hhbmdlLGg9KDAsby51c2VDb250ZXh0KShBTykuZGlzcGF0Y2hTdGF0ZUNoYW5nZSxiPWZ1bmN0aW9uKCl7YSYmaCh7dHlwZTp1Ty5VcGRhdGVDcmVkZW50aWFscyxwYXlsb2FkOntvdGNDcmVkZW50aWFsOmZBKGZBKHt9LHQpLHt9LHtjcmVkZW50aWFsVHlwZTokUC5PbmVUaW1lQ29kZSxwcm9vZjp0LnByb29mfSl9fSl9LHk9ZnVuY3Rpb24odCl7aSghMSksbnVsbCE9dCYmdC5mbG93VG9rZW4mJm0oe3R5cGU6TWUuU2V0Rmxvd1Rva2VuVmFsdWUscGF5bG9hZDp0LmZsb3dUb2tlbn0pLGIoKSxsKGUsQXcoVHQuT25lVGltZUNvZGUpKX0sdj1mdW5jdGlvbih0KXt2YXIgbj10Lm90Y1N0YXR1c3x8LTEsbz11KHQpO2koITEpLG51bGwhPXQmJnQuZmxvd1Rva2VuJiZtKHt0eXBlOk1lLlNldEZsb3dUb2tlblZhbHVlLHBheWxvYWQ6dC5mbG93VG9rZW59KSxuPT09bHQuZnRFcnJvcj9yKFwiV2UgY291bGRuJ3Qgc2VuZCB0aGUgY29kZS4gUGxlYXNlIHJlZnJlc2ggeW91ciBicm93c2VyIGFuZCB0cnkgYWdhaW4uXCIpOm8/KGIoKSxsKGUsQXcoVHQuQ2hhbGxlbmdlKSkpOnIoXCJXZSBjb3VsZG4ndCBzZW5kIHRoZSBjb2RlLiBQbGVhc2UgdHJ5IGFnYWluLlwiKX07cmV0dXJuIHVBKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBvKCl7dmFyIGEsdSxwO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6dT10JiZ0LmNyZWRlbnRpYWxUeXBlfHwkUC5QYXNzd29yZCxyKFwiXCIpLG8udDA9dSxvLm5leHQ9by50MD09PSRQLk9uZVRpbWVDb2RlPzU6by50MD09PSRQLkZpZG8/MTY6by50MD09PSRQLk90aGVyTWljcm9zb2Z0SWRwRmVkZXJhdGlvbnx8by50MD09PSRQLkxpbmtlZElufHxvLnQwPT09JFAuR2l0SHVifHxvLnQwPT09JFAuR29vZ2xlfHxvLnQwPT09JFAuRmFjZWJvb2t8fG8udDA9PT0kUC5DZXJ0aWZpY2F0ZT8xODoxOTticmVhaztjYXNlIDU6aWYobnVsbD09dHx8bnVsbD09PShhPXQucHJvb2YpfHx2b2lkIDA9PT1hfHwhYS5jbGVhckRpZ2l0cyl7by5uZXh0PTEwO2JyZWFrfWIoKSxsKGUsQXcoVHQuUHJvb2ZDb25maXJtYXRpb24pKSxvLm5leHQ9MTU7YnJlYWs7Y2FzZSAxMDpyZXR1cm4gcD1nQSh0LGcsZix5LHYsZCxjKSxpKCEwKSxvLm5leHQ9MTUsZUEocCk7Y2FzZSAxNTpyZXR1cm4gby5hYnJ1cHQoXCJicmVha1wiLDIwKTtjYXNlIDE2OnJldHVybiBzKHt1c2VybmFtZTpueChmLnVuc2FmZVVuZXNjYXBlZFN0cmluZyl9KSxvLmFicnVwdChcImJyZWFrXCIsMjApO2Nhc2UgMTg6cmV0dXJuIG8uYWJydXB0KFwiYnJlYWtcIiwyMCk7Y2FzZSAxOTpsKGUsQXcoblt1XS52aWV3SWQpKTtjYXNlIDIwOmNhc2VcImVuZFwiOnJldHVybiBvLnN0b3AoKX19KSxvKX0pKSl9LGJBPWZ1bmN0aW9uKGUsdCxuLHIsaSxhKXt2YXIgbD1mTy5pbnN0YW5jZS51c2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sLHM9bEEoKDAsby51c2VTdGF0ZSkoXCJcIiksMiksYz1zWzBdLHU9c1sxXSxkPWxBKCgwLG8udXNlU3RhdGUpKCExKSwyKSxmPWRbMF0scD1kWzFdLGc9bEEoKDAsby51c2VTdGF0ZSkoITEpLDIpLG09Z1swXSxoPWdbMV07VFMoKGZ1bmN0aW9uKCl7TmkobCkudGhlbigoZnVuY3Rpb24oZSl7cChlKSxoKCEwKX0pKX0pKTt2YXIgYj1mdW5jdGlvbihlKXt2YXIgdD1mTy5pbnN0YW5jZS5pc1Bhc3NrZXlTdXBwb3J0ZWQsbj17fSxyPWU/XCJTaWduIGluIHdpdGggV2luZG93cyBIZWxsbyBvciBhIHNlY3VyaXR5IGtleVwiOlwiU2lnbiBpbiB3aXRoIGEgc2VjdXJpdHkga2V5XCI7cmV0dXJuIHQmJihyPVwiVXNlIHlvdXIgZmFjZSwgZmluZ2VycHJpbnQsIFBJTiwgb3Igc2VjdXJpdHkga2V5IGluc3RlYWRcIiksblskUC5QYXNzd29yZF09e3ZpZXdJZDpUdC5QYXNzd29yZCxsaW5rSWQ6XCJpZEFfUFdEX1N3aXRjaFRvUGFzc3dvcmRcIixsaW5rVGV4dDpcIlVzZSB5b3VyIHBhc3N3b3JkIGluc3RlYWRcIn0sblskUC5SZW1vdGVOR0NdPXt2aWV3SWQ6VHQuUHVzaE5vdGlmaWNhdGlvbnMsbGlua0lkOlwiaWRBX1BXRF9Td2l0Y2hUb1JlbW90ZU5HQ1wiLGxpbmtUZXh0OlwiVXNlIG15IE1pY3Jvc29mdCBhcHBcIn0sblskUC5GaWRvXT17bGlua0lkOlwiaWRBX1BXRF9Td2l0Y2hUb0ZpZG9cIixsaW5rVGV4dDpyfSxuWyRQLkNlcnRpZmljYXRlXT17bGlua0lkOlwiaWRBX1BXRF9Td2l0Y2hUb0NlcnRpZmljYXRlXCIsbGlua1RleHQ6XCJVc2UgYSBjZXJ0aWZpY2F0ZSBvciBzbWFydCBjYXJkXCJ9LG5bJFAuT3RoZXJNaWNyb3NvZnRJZHBGZWRlcmF0aW9uXT17bGlua0lkOlwidXNlTWljcm9zb2Z0TGlua1wiLGxpbmtUZXh0OlwiU2lnbiBpbiB3aXRoIE1pY3Jvc29mdFwifSxuWyRQLkxpbmtlZEluXT17bGlua0lkOlwidXNlTGlua2VkSW5MaW5rXCIsbGlua1RleHQ6XCJTaWduIGluIHdpdGggTGlua2VkSW5cIn0sblskUC5HaXRIdWJdPXtsaW5rSWQ6XCJ1c2VHaXRIdWJMaW5rXCIsbGlua1RleHQ6XCJTaWduIGluIHdpdGggR2l0SHViXCJ9LG5bJFAuR29vZ2xlXT17bGlua0lkOlwidXNlR29vZ2xlTGlua1wiLGxpbmtUZXh0OlwiU2lnbiBpbiB3aXRoIEdvb2dsZVwifSxuWyRQLkZhY2Vib29rXT17bGlua0lkOlwidXNlRmFjZWJvb2tMaW5rXCIsbGlua1RleHQ6XCJTaWduIGluIHdpdGggRmFjZWJvb2tcIn0sblskUC5GZWRlcmF0aW9uXT17dmlld0lkOlR0LklkcFJlZGlyZWN0LGxpbmtJZDpcInJlZGlyZWN0VG9JZHBMaW5rXCIsbGlua1RleHQ6XCJTaWduIGluIHVzaW5nIG15IHBhc3N3b3JkXCJ9LG5bJFAuUmVtb3RlTG9naW5dPXtsaW5rSWQ6XCJyZW1vdGVMb2dpbkxpbmtcIixsaW5rVGV4dDpcIlNpZ24gaW4gZnJvbSBhbm90aGVyIGRldmljZVwifSxuWyRQLk9uZVRpbWVDb2RlXT17dmlld0lkOlR0Lk9uZVRpbWVDb2RlLGxpbmtJZDpcIm90Y0xvZ2luTGlua1wiLGxpbmtUZXh0OlwiU2lnbiBpbiB3aXRoIGEgc2luZ2xlLXVzZSBjb2RlXCJ9LG5bJFAuQWNjZXNzUGFzc109e2xpbmtJZDpcImFjY2Vzc1Bhc3NMaW5rXCIsbGlua1RleHQ6XCJVc2UgeW91ciBUZW1wb3JhcnkgQWNjZXNzIFBhc3MgaW5zdGVhZFwifSxufShmKSx5PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1bXTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihuW2UuY3JlZGVudGlhbFR5cGVdKXt2YXIgbz1lLmNyZWRlbnRpYWxUeXBlPT09KG51bGw9PXQ/dm9pZCAwOnQuY3JlZGVudGlhbFR5cGUpLGk9ZS5jcmVkZW50aWFsVHlwZT09PSRQLk9uZVRpbWVDb2RlLGE9byYmaSYmZS5wcm9vZi5kYXRhPT09dC5wcm9vZi5kYXRhLGw9byYmaSYmZS5wcm9vZi50eXBlPT09dC5wcm9vZi50eXBlOyghb3x8aSYmIWF8fGkmJiFsKSYmci5wdXNoKGUpfWUuY3JlZGVudGlhbFR5cGU9PT0kUC5PZmZsaW5lQWNjb3VudCYmci5wdXNoKHtjcmVkZW50aWFsVHlwZTokUC5PZmZsaW5lQWNjb3VudCxzaG93bk9ubHlPblBpY2tlcjohMH0pfSkpLHJ9KHQsbixiKSx2PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPSEobnVsbD09dHx8IXQuY3JlZGVudGlhbFR5cGUpLGk9SXQuZGVmYXVsdC5pbnN0YW5jZS5zaG93U2lnbkluT3B0aW9uc0FzQnV0dG9uLGE9bz9cIk90aGVyIHdheXMgdG8gc2lnbiBpblwiOlwiU2lnbi1pbiBvcHRpb25zXCI7cmV0dXJue3Nob3dDcmVkZW50aWFsUGlja2VyTGluazooIWl8fG8pJiYobi5sZW5ndGg+MXx8MT09PW4ubGVuZ3RoJiYoISFyfHwhIW5bMF0uc2hvd25Pbmx5T25QaWNrZXIpKSxjcmVkZW50aWFsUGlja2VyTGlua1RleHQ6YSxjcmVkZW50aWFsUGlja2VyTGlua09uQ2xpY2tIYW5kbGVyOm1BKGUsbyl9fShlLG4seSxpKSx3PXYuc2hvd0NyZWRlbnRpYWxQaWNrZXJMaW5rLFM9di5jcmVkZW50aWFsUGlja2VyTGlua1RleHQsUD12LmNyZWRlbnRpYWxQaWNrZXJMaW5rT25DbGlja0hhbmRsZXIseD1mdW5jdGlvbihlLHQsbixyLG8saSxhKXt2YXIgbD1cIlwiLHM9XCJcIixjPSExLHU9dFswXTtpZigxPT09dC5sZW5ndGgmJnUpe3ZhciBkLGYscD1vW3UuY3JlZGVudGlhbFR5cGVdfHxvWyRQLlBhc3N3b3JkXTtpZihsPXAubGlua0lkLHM9cC5saW5rVGV4dCx1LmNyZWRlbnRpYWxUeXBlPT09JFAuT25lVGltZUNvZGUmJm51bGwhPT0oZD11LnByb29mKSYmdm9pZCAwIT09ZCYmZC5kaXNwbGF5KXN3aXRjaChudWxsPT09KGY9dS5wcm9vZil8fHZvaWQgMD09PWY/dm9pZCAwOmYudHlwZSl7Y2FzZSBKUC5FbWFpbDpzPSgwLHN0Llo3KShcIkVtYWlsIGNvZGUgdG8gezB9XCIsdS5wcm9vZi5kaXNwbGF5KTticmVhaztjYXNlIEpQLlNNUzpzPSgwLHN0Llo3KShcIlRleHQgY29kZSB0byB7MH1cIix1LnByb29mLmRpc3BsYXkpO2JyZWFrO2Nhc2UgSlAuVm9pY2U6cz0oMCxzdC5aNykoXCJDYWxsIHswfSB3aXRoIGEgY29kZVwiLHUucHJvb2YuZGlzcGxheSl9Yz0xPT09dC5sZW5ndGgmJiFpJiYhdS5zaG93bk9ubHlPblBpY2tlcn1yZXR1cm57c2hvd0NyZWRlbnRpYWxTd2l0Y2hMaW5rOmMsY3JlZGVudGlhbFN3aXRjaExpbmtJZDpsLGNyZWRlbnRpYWxTd2l0Y2hMaW5rVGV4dDpzLGNyZWRlbnRpYWxTd2l0Y2hMaW5rT25DbGlja0hhbmRsZXI6aEEoZSx1LG8sbixyLGEpfX0oZSx5LHUscixiLGksYSk7cmV0dXJue2Vycm9yTWVzc2FnZTpjLHNob3dDcmVkZW50aWFsU3dpdGNoTGluazp4LnNob3dDcmVkZW50aWFsU3dpdGNoTGluayxjcmVkZW50aWFsU3dpdGNoTGlua0lkOnguY3JlZGVudGlhbFN3aXRjaExpbmtJZCxjcmVkZW50aWFsU3dpdGNoTGlua1RleHQ6eC5jcmVkZW50aWFsU3dpdGNoTGlua1RleHQsY3JlZGVudGlhbFN3aXRjaExpbmtPbkNsaWNrSGFuZGxlcjp4LmNyZWRlbnRpYWxTd2l0Y2hMaW5rT25DbGlja0hhbmRsZXIsc2hvd0NyZWRlbnRpYWxQaWNrZXJMaW5rOncsY3JlZGVudGlhbFBpY2tlckxpbmtUZXh0OlMsY3JlZGVudGlhbFBpY2tlckxpbmtPbkNsaWNrSGFuZGxlcjpQLHJlYWR5VG9SZW5kZXI6bX19LHlBPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc291cmNlVmlld0lkLG49ZS5hdmFpbGFibGVDcmVkZW50aWFscyxyPWUuY3VycmVudENyZWRlbnRpYWwsbz1lLnNldFJlcXVlc3RQZW5kaW5nRmxhZyxpPWUuc2hvd0ZvcmdvdFVzZXJuYW1lLGE9ZS5saW5rQXJpYURlc2NyaWJlZEJ5LGw9ZS5oYXNGb2N1cyxzPWUuc2hvdWxkVXBkYXRlT3RjQ3JlZGVudGlhbCxjPWJBKHQsbixyLG8saSxzKSx1PWMuc2hvd0NyZWRlbnRpYWxTd2l0Y2hMaW5rLGQ9Yy5jcmVkZW50aWFsU3dpdGNoTGlua0lkLGY9Yy5jcmVkZW50aWFsU3dpdGNoTGlua1RleHQscD1jLmNyZWRlbnRpYWxTd2l0Y2hMaW5rT25DbGlja0hhbmRsZXIsZz1jLnNob3dDcmVkZW50aWFsUGlja2VyTGluayxtPWMuY3JlZGVudGlhbFBpY2tlckxpbmtUZXh0LGg9Yy5jcmVkZW50aWFsUGlja2VyTGlua09uQ2xpY2tIYW5kbGVyLGI9Yy5lcnJvck1lc3NhZ2U7cmV0dXJuIGMucmVhZHlUb1JlbmRlcj8oMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46W2cmJigwLCRlLmpzeCkodEMse2xpbmtEYXRhVGVzdElkOlwiY3JlZGVudGlhbFBpY2tlckxpbmtcIixsaW5rSWQ6XCJpZEFfUFdEX1N3aXRjaFRvQ3JlZFBpY2tlclwiLHRleHQ6bSxhcmlhRGVzY3JpYmVkQnk6YSxvbkNsaWNrOmgsaGFzRm9jdXM6bH0pLHUmJigwLCRlLmpzeCkodEMse2xpbmtJZDpkLHRleHQ6ZixhcmlhRGVzY3JpYmVkQnk6YSxvbkNsaWNrOnAsaGFzRm9jdXM6bH0pLGImJigwLCRlLmpzeCkoTWsse2Vycm9yQ29kZTpcImNyZWRlbnRpYWwtc3dpdGNoLWVycm9yXCIsY2hpbGRyZW46Yn0pXX0pOigwLCRlLmpzeCkoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwiY3JlZGVudGlhbC1zd2l0Y2gtbGlua3MtcGxhY2Vob2xkZXJcIn0pfTtmdW5jdGlvbiB2QShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gd0EoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/dkEoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtTQShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6dkEoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gU0EoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBQQT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz1lLmNyZWRlbnRpYWxTd2l0Y2hQcm9wcyxpPWUuc2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXIsYT0oMCxVbS5pbnN0YW5jZS51c2VDb21tb25TdHlsZXMpKCksbD0odD1vLnNvdXJjZVZpZXdJZCxuPXpTKCkscj1UTygpLmRpc3BhdGNoU3RhdGVDaGFuZ2UsZnVuY3Rpb24oKXtyKHt0eXBlOnVPLlVwZGF0ZUNyZWRlbnRpYWxzLHBheWxvYWQ6e3VzZUV2aWN0ZWRDcmVkZW50aWFsczohMH19KSxuKHQsVHQuQ3JlZGVudGlhbFBpY2tlcil9KTtyZXR1cm4oMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmEuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkoeUEsd0Eoe30sbykpfSksaSYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6YS5mb3JtR3JvdXAsY2hpbGRyZW46KDAsJGUuanN4KSh0Qyx7dGV4dDpwQy5ldmljdGVkQ3JlZFBpY2tlckxpbmtUZXh0LG9uQ2xpY2s6bH0pfSldfSl9O2Z1bmN0aW9uIHhBKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBPQShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBPQShlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gT0EoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgX0E9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21tb25Mb2dpblN0cmluZ3Msbj1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuZnJpZW5kbHlBcHBOYW1lLHI9KDAsby51c2VDb250ZXh0KShBTykudmlld1N0YXRlLGk9ci5pZHBSZWRpcmVjdFBvc3RQYXJhbXMsYT1yLmlkcFJlZGlyZWN0UHJvdmlkZXIsbD1yLmlkcFJlZGlyZWN0VXJsLHM9Zk8uaW5zdGFuY2UsYz1zLmZhY2Vib29rRmVkVXJsLHU9cy5naXRodWJGZWRVcmwsZD1zLmdvb2dsZUZlZFVybCxmPXMubGlua2VkSW5GZWRVcmwscD1zLmxvZ2luTW9kZSxnPVdPKHAsbix0KSxtPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvLGk9XCJUYWtpbmcgeW91IHRvIHlvdXIgb3JnYW5pemF0aW9uJ3Mgc2lnbi1pbiBwYWdlXCIsYT0kUC5GZWRlcmF0aW9uLGw9ZSxzPXQsYz1yLmxpbmtlZEluRmVkVXJsLHU9ci5naXRodWJGZWRVcmwsZD1yLmdvb2dsZUZlZFVybCxmPXIuZmFjZWJvb2tGZWRVcmw7c3dpdGNoKG4pe2Nhc2UgY3Qua3YuTGlua2VkSW46bD1sfHxjLHM9dm9pZCAwLGk9XCJTaWduIGluIG9uIExpbmtlZEluXCIsbz1cIlNpbmNlIHlvdXIgTWljcm9zb2Z0IGFjY291bnQgaXMgYmFja2VkIGJ5IExpbmtlZEluIGNyZWRlbnRpYWxzLCB3ZSdsbCBzZW5kIHlvdSB0byBMaW5rZWRJbiB0byBzaWduIGluLlwiLGE9JFAuTGlua2VkSW47YnJlYWs7Y2FzZSBjdC5rdi5HaXRIdWI6bD1sfHx1LHM9dm9pZCAwLGk9XCJTaWduIGluIG9uIEdpdEh1YlwiLG89XCJTaW5jZSB5b3VyIE1pY3Jvc29mdCBhY2NvdW50IGlzIGJhY2tlZCBieSBHaXRIdWIgY3JlZGVudGlhbHMsIHdlJ2xsIHNlbmQgeW91IHRvIEdpdEh1YiB0byBzaWduIGluLlwiLGE9JFAuR2l0SHViO2JyZWFrO2Nhc2UgY3Qua3YuR29vZ2xlOmw9bHx8ZCxzPXZvaWQgMCxpPVwiU2lnbiBpbiBvbiBHb29nbGVcIixvPVwiU2luY2UgeW91ciBNaWNyb3NvZnQgYWNjb3VudCBpcyBiYWNrZWQgYnkgR29vZ2xlIGNyZWRlbnRpYWxzLCB3ZSdsbCBzZW5kIHlvdSB0byBHb29nbGUgdG8gc2lnbiBpbi5cIixhPSRQLkdvb2dsZTticmVhaztjYXNlIGN0Lmt2LkZhY2Vib29rOmw9bHx8ZixzPXZvaWQgMCxpPVwiU2lnbiBpbiBvbiBGYWNlYm9va1wiLG89XCJTaW5jZSB5b3VyIGFjY291bnQgaXMgYmFja2VkIGJ5IEZhY2Vib29rIGNyZWRlbnRpYWxzLCB3ZSdsbCBzZW5kIHlvdSB0byBGYWNlYm9vayB0byBzaWduIGluLlwiLGE9JFAuRmFjZWJvb2t9cmV0dXJue3RpdGxlOmksZGVzY3JpcHRpb246byxjdXJyZW50Q3JlZGVudGlhbFR5cGU6YSxyZWRpcmVjdFVybDpsLHJlZGlyZWN0UG9zdFBhcmFtczpzfX0obCxpLGEse2xpbmtlZEluRmVkVXJsOmYsZ2l0aHViRmVkVXJsOnUsZ29vZ2xlRmVkVXJsOmQsZmFjZWJvb2tGZWRVcmw6Y30pLGg9bS50aXRsZSxiPW0uZGVzY3JpcHRpb24seT1tLmN1cnJlbnRDcmVkZW50aWFsVHlwZSx2PW0ucmVkaXJlY3RVcmwsdz1tLnJlZGlyZWN0UG9zdFBhcmFtcyxTPWZ1bmN0aW9uKGUpe3ZhciB0PSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZS5jcmVkZW50aWFscy5hdmFpbGFibGVDcmVkZW50aWFscyxuPXhBKCgwLG8udXNlU3RhdGUpKCExKSwyKSxyPW5bMF0saT1uWzFdO3JldHVybntpc1JlcXVlc3RQZW5kaW5nOnIsY3JlZGVudGlhbFN3aXRjaExpbmtzUHJvcHM6e3NvdXJjZVZpZXdJZDpUdC5JZHBSZWRpcmVjdFNwZWVkYnVtcCxhdmFpbGFibGVDcmVkZW50aWFsczp0LGN1cnJlbnRDcmVkZW50aWFsOntjcmVkZW50aWFsVHlwZTplfSxzZXRSZXF1ZXN0UGVuZGluZ0ZsYWc6aSxzaG91bGRVcGRhdGVPdGNDcmVkZW50aWFsOiEwfX19KHkpO3JldHVybntkb2N1bWVudFRpdGxlOmcsbGlnaHRib3hUaXRsZUlkOlwibG9naW5IZWFkZXJcIixsaWdodGJveFRpdGxlOmgsbGlnaHRib3hEZXNjcmlwdGlvbklkOlwibG9naW5EZXNjcmlwdGlvblwiLGxpZ2h0Ym94RGVzY3JpcHRpb246YixyZWRpcmVjdFVybDp2LHJlZGlyZWN0UG9zdFBhcmFtczp3LGlzUmVxdWVzdFBlbmRpbmc6Uy5pc1JlcXVlc3RQZW5kaW5nLGNyZWRlbnRpYWxTd2l0Y2hMaW5rc1Byb3BzOlMuY3JlZGVudGlhbFN3aXRjaExpbmtzUHJvcHN9fSxDQT1mdW5jdGlvbigpe3ZhciBlLHQsbixyPUl0LmRlZmF1bHQuaW5zdGFuY2UsaT1yLmFjdGl2ZUZsYXZvcixhPXIuc2hvd0J1dHRvbnMsbD1VbS5pbnN0YW5jZSxzPWwudXNlQ29tbW9uU3R5bGVzLGM9bC51c2VTdGF0aWNDb21tb25TdHlsZXM7ZT1UTygpLHQ9ZS52aWV3U3RhdGUucmVtb3RlTmdjUGFyYW1zLnJlcXVlc3RTZW50LG49ZS5kaXNwYXRjaFN0YXRlQ2hhbmdlLHQmJm4oe3R5cGU6dU8uU2V0UmVtb3RlTmdjUGFyYW1zLHBheWxvYWQ6e3JlcXVlc3RTZW50OiExfX0pO3ZhciB1PV9BKHtjb21tb25Mb2dpblN0cmluZ3M6cEN9KSxkPXUuZG9jdW1lbnRUaXRsZSxmPXUubGlnaHRib3hUaXRsZUlkLHA9dS5saWdodGJveFRpdGxlLGc9dS5saWdodGJveERlc2NyaXB0aW9uSWQsbT11LmxpZ2h0Ym94RGVzY3JpcHRpb24saD11LnJlZGlyZWN0VXJsLGI9dS5yZWRpcmVjdFBvc3RQYXJhbXMseT11LmNyZWRlbnRpYWxTd2l0Y2hMaW5rc1Byb3BzLHY9dl8ocEMpLHc9di5yZW5kZXJCcmFuZGluZ0Rlc2NyaXB0aW9uLFM9di5icmFuZGluZ0Rlc2NyaXB0aW9uSWQsUD12LmJyYW5kaW5nRGVzY3JpcHRpb24seD1mdW5jdGlvbihlLHQsbixyLGksYSxsKXt2YXIgcz0oMCxvLnVzZUNvbnRleHQpKFp0KS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGM9XCJcIjtlJiYoYys9XCJcIi5jb25jYXQoZSxcIiBcIikpLHImJm4mJihjKz1cIlwiLmNvbmNhdChyLFwiIFwiKSksdCYmKGMrPVwiXCIuY29uY2F0KHQpKSxjPWMudHJpbSgpO3ZhciB1PWZfKCk7cmV0dXJue3ByaW1hcnlCdXR0b25BcmlhRGVzY3JpYmVkQnk6YyxwcmltYXJ5QnV0dG9uQ2xpY2tIYW5kbGVyOmZ1bmN0aW9uKCl7bCYmbCgpLHMoe3R5cGU6THQuQmVnaW5OYXZpZ2F0ZSxzb3VyY2U6VHQuSWRwUmVkaXJlY3RTcGVlZGJ1bXAsZGVzdGluYXRpb246KDAsc3QuS2spKGkpfSksdShpLGEsITAsITEpfX19KGYsZyx3LFMsaCxiLGk9PT1jdC5vRi5XaW4xMU9vYmVGYWJyaWM/UXg6dm9pZCAwKSxPPXgucHJpbWFyeUJ1dHRvbkFyaWFEZXNjcmliZWRCeSxfPXgucHJpbWFyeUJ1dHRvbkNsaWNrSGFuZGxlcixDPWhfKCk7ZmsoVHQuSWRwUmVkaXJlY3RTcGVlZGJ1bXAsRXQuTG9naW4se3Nob3dCYWNrQnV0dG9uT25BY3RpdmVWaWV3OkMsc2hvd0lkZW50aXR5QmFubmVyOiEwfSksYWsoZCksYygpO3ZhciBrPXMoKSxBPVNfKCksVD1BLnNob3dTd2l0Y2hUb0V2aWN0ZWRDcmVkUGlja2VyLEU9QS5zaG93Q3JlZGVudGlhbFN3aXRjaENvbnRlbnQ7cmV0dXJuKDAsJGUuanN4cykoJGUuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFJPLHt0aXRsZUlkOmYsdGl0bGU6cH0pLHcmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKGsucm93LGsudGV4dEJvZHkpLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7aWQ6UyxjbGFzc05hbWU6ay53cmFwQ29udGVudCxjaGlsZHJlbjpQfSl9KSxtJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTprLmZvcm1Hcm91cCxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2lkOmcsY2xhc3NOYW1lOlNnKGsucm93LGsudGV4dEJvZHksay50ZXh0QmxvY2tCb2R5KSxjaGlsZHJlbjptfSl9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTprLmJ1dHRvbk1hcmdpbixjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTprLnJvdyxjaGlsZHJlbjooMCwkZS5qc3gpKF9rLHtjaGlsZHJlbjpFJiYoMCwkZS5qc3gpKFBBLHtjcmVkZW50aWFsU3dpdGNoUHJvcHM6eSxzaG93U3dpdGNoVG9FdmljdGVkQ3JlZFBpY2tlcjpUfSl9KX0pfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6ay53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6ay5yb3csY2hpbGRyZW46KDAsJGUuanN4KShGXyx7Y2hpbGRyZW46YSYmKDAsJGUuanN4KShVXyx7aXNQcmltYXJ5OiEwLGhhc0ZvY3VzOiEwLGFyaWFEZXNjcmliZWRCeTpPLGxhYmVsOlwiTmV4dFwiLG9uQ2xpY2s6X30pfSl9KX0pXX0pfSxrQT1mdW5jdGlvbihlKXt2YXIgdD1lLmNhbmFyeSxuPWUuY2xlYW5zZWRVc2VybmFtZSxyPWUuY29udGV4dCxvPWUuZmxvd1Rva2VuTmFtZSxpPWUuZmxvd1Rva2VuVmFsdWUsYT1lLmZvdW5kTXNhcyxsPWUuaXNGaWRvU3VwcG9ydGVkLHM9ZS5pc0ttc2lDaGVja2VkLGM9ZS5sb2dpbk9wdGlvbix1PWUucGFnaW5hdGVkU3RhdGUsZD1lLnBvc3RUeXBlLGY9ZS5wb3N0ZWRGb3JjZVNpZ25JbixwPWUucmFuZG9tQmxvYixnPWUucm5nY0RlZmF1bHRUeXBlLG09ZS5ybmdjRW50cm9weSxoPWUucm5nY1Nlc3Npb25JZGVudGlmaWVyLGI9ZS5zaG93Q29va2llQmFubmVyLHk9ZS5kaXNwbGF5VXNlcm5hbWU7cmV0dXJuKDAsJGUuanN4cykoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwiaGlkZGVuSW5wdXRzXCIsY2hpbGRyZW46WygwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcInBzXCIsXCJkYXRhLXRlc3RpZFwiOlwicHNcIixpZDpcInBzXCIsdmFsdWU6dX0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcInBzUk5HQ0RlZmF1bHRUeXBlXCIsXCJkYXRhLXRlc3RpZFwiOlwicHNSTkdDRGVmYXVsdFR5cGVcIixpZDpcInBzUk5HQ0RlZmF1bHRUeXBlXCIsdmFsdWU6bnVsbCE9Zz9nOlwiXCJ9KSwoMCwkZS5qc3gpKFwiaW5wdXRcIix7dHlwZTpcImhpZGRlblwiLG5hbWU6XCJwc1JOR0NFbnRyb3B5XCIsXCJkYXRhLXRlc3RpZFwiOlwicHNSTkdDRW50cm9weVwiLGlkOlwicHNSTkdDRW50cm9weVwiLHZhbHVlOm19KSwoMCwkZS5qc3gpKFwiaW5wdXRcIix7dHlwZTpcImhpZGRlblwiLG5hbWU6XCJwc1JOR0NTTEtcIixcImRhdGEtdGVzdGlkXCI6XCJwc1JOR0NTTEtcIixpZDpcInBzUk5HQ1NMS1wiLHZhbHVlOmh9KSwoMCwkZS5qc3gpKFwiaW5wdXRcIix7dHlwZTpcImhpZGRlblwiLG5hbWU6XCJjYW5hcnlcIixcImRhdGEtdGVzdGlkXCI6XCJjYW5hcnlcIixpZDpcImNhbmFyeVwiLHZhbHVlOnR9KSwoMCwkZS5qc3gpKFwiaW5wdXRcIix7dHlwZTpcImhpZGRlblwiLG5hbWU6XCJjdHhcIixcImRhdGEtdGVzdGlkXCI6XCJjdHhcIixpZDpcImN0eFwiLHZhbHVlOnJ9KSwoMCwkZS5qc3gpKFwiaW5wdXRcIix7dHlwZTpcImhpZGRlblwiLG5hbWU6XCJocGdyZXF1ZXN0aWRcIixcImRhdGEtdGVzdGlkXCI6XCJocGdyZXF1ZXN0aWRcIixpZDpcImhwZ3JlcXVlc3RpZFwiLHZhbHVlOlwiXCJ9KSwoMCwkZS5qc3gpKFwiaW5wdXRcIix7dHlwZTpcImhpZGRlblwiLG5hbWU6byxcImRhdGEtdGVzdGlkXCI6XCJpMDMyN1wiLGlkOlwiaTAzMjdcIix2YWx1ZTppfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiUFBTWFwiLFwiZGF0YS10ZXN0aWRcIjpcIlBQU1hcIixpZDpcIlBQU1hcIix2YWx1ZTpwfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiTmV3VXNlclwiLFwiZGF0YS10ZXN0aWRcIjpcIk5ld1VzZXJcIixpZDpcIk5ld1VzZXJcIix2YWx1ZToxfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiRm91bmRNU0FzXCIsXCJkYXRhLXRlc3RpZFwiOlwiRm91bmRNU0FzXCIsaWQ6XCJGb3VuZE1TQXNcIix2YWx1ZTphfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiZnNwb3N0XCIsXCJkYXRhLXRlc3RpZFwiOlwiZnNwb3N0XCIsaWQ6XCJmc3Bvc3RcIix2YWx1ZTpmPzE6MH0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcImkyMVwiLFwiZGF0YS10ZXN0aWRcIjpcImkyMVwiLGlkOlwiaTIxXCIsdmFsdWU6MH0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcIkNvb2tpZURpc2Nsb3N1cmVcIixcImRhdGEtdGVzdGlkXCI6XCJDb29raWVEaXNjbG9zdXJlXCIsaWQ6XCJDb29raWVEaXNjbG9zdXJlXCIsdmFsdWU6Yj8xOjB9KSwoMCwkZS5qc3gpKFwiaW5wdXRcIix7dHlwZTpcImhpZGRlblwiLG5hbWU6XCJJc0ZpZG9TdXBwb3J0ZWRcIixcImRhdGEtdGVzdGlkXCI6XCJJc0ZpZG9TdXBwb3J0ZWRcIixpZDpcIklzRmlkb1N1cHBvcnRlZFwiLHZhbHVlOmw/MTowfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiaXNTaWdudXBQb3N0XCIsXCJkYXRhLXRlc3RpZFwiOlwiaXNTaWdudXBQb3N0XCIsaWQ6XCJpc1NpZ251cFBvc3RcIix2YWx1ZTowfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiaXNSZWNvdmVyeUF0dGVtcHRQb3N0XCIsXCJkYXRhLXRlc3RpZFwiOlwiaXNSZWNvdmVyeUF0dGVtcHRQb3N0XCIsaWQ6XCJpc1JlY292ZXJ5QXR0ZW1wdFBvc3RcIix2YWx1ZTowfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiaTEzXCIsXCJkYXRhLXRlc3RpZFwiOlwiaTEzXCIsaWQ6XCJpMTNcIix2YWx1ZTpzPzE6MH0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcImxvZ2luXCIsXCJkYXRhLXRlc3RpZFwiOlwibG9naW5cIixpZDpcImxvZ2luXCIsdmFsdWU6bn0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcImxvZ2luZm10XCIsXCJkYXRhLXRlc3RpZFwiOlwibG9naW5mbXRcIixpZDpcImxvZ2luZm10XCIsYXV0b0NvbXBsZXRlOlwiZGlzcGxheVVzZXJuYW1lXCIsdmFsdWU6eX0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcInR5cGVcIixcImRhdGEtdGVzdGlkXCI6XCJ0eXBlXCIsaWQ6XCJ0eXBlXCIsdmFsdWU6ZH0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcIkxvZ2luT3B0aW9uc1wiLFwiZGF0YS10ZXN0aWRcIjpcIkxvZ2luT3B0aW9uc1wiLGlkOlwiTG9naW5PcHRpb25zXCIsdmFsdWU6Y30pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcImxydFwiLFwiZGF0YS10ZXN0aWRcIjpcImxydFwiLGlkOlwibHJ0XCIsdmFsdWU6XCJcIn0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcImxydFBhcnRpdGlvblwiLFwiZGF0YS10ZXN0aWRcIjpcImxydFBhcnRpdGlvblwiLGlkOlwibHJ0UGFydGl0aW9uXCIsdmFsdWU6XCJcIn0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcImhpc1JlZ2lvblwiLFwiZGF0YS10ZXN0aWRcIjpcImhpc1JlZ2lvblwiLGlkOlwiaGlzUmVnaW9uXCIsdmFsdWU6XCJcIn0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcImhpc1NjYWxlVW5pdFwiLFwiZGF0YS10ZXN0aWRcIjpcImhpc1NjYWxlVW5pdFwiLGlkOlwiaGlzU2NhbGVVbml0XCIsdmFsdWU6XCJcIn0pXX0pfTtmdW5jdGlvbiBBQShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gVEEoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gVEEoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIFRBKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIEVBPWZ1bmN0aW9uKGUpe3ZhciB0PSRTKCksbj1mTy5pbnN0YW5jZSxyPW4ubG9zdEF1dGhlbnRpY2F0b3JVcmwsbz1uLnJlc2V0UGFzc3dvcmRQcmVmaWxsUGFyYW0saT1KdCgpLmRpc3BhdGNoU3RhdGVDaGFuZ2U7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49KDAsc3QuTmkpKHIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfSh7fSxvLGVuY29kZVVSSUNvbXBvbmVudCgoMCxzdC5meSkoZS5kaXNwbGF5VXNlcm5hbWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nKSkpLCEwKTtpKHt0eXBlOkx0LlNldFNob3dQcm9ncmVzc0luZGljYXRvcixwYXlsb2FkOiEwfSksdChuKX19LGpBPXtoZWFkaW5nOlwiQ2hlY2sgeW91ciB7MH0gYXBwXCIsaGVhZGluZ0dlbmVyaWNBcHBOYW1lOlwiQ2hlY2sgeW91ciBwaG9uZVwiLGRlc2NyaXB0aW9uRmFtaWxpYXJEZXZpY2U6XCJJbiB5b3VyIHswfSBhcHAgb24geW91ciB7MX0sIGFwcHJvdmUgdGhlIHJlcXVlc3QgdG8gc2lnbiBpbi5cIixkZXNjcmlwdGlvbkZhbWlsaWFyRGV2aWNlR2VuZXJpY0FwcE5hbWU6XCJJbiB5b3VyIE1pY3Jvc29mdCBhcHAgb24geW91ciB7MH0sIGFwcHJvdmUgdGhlIHJlcXVlc3QgdG8gc2lnbiBpbi5cIixkZXNjcmlwdGlvbkZhbWlsaWFyRGV2aWNlR2VuZXJpY0RldmljZTpcIkluIHlvdXIgezB9IGFwcCBvbiB5b3VyIG1vYmlsZSBkZXZpY2UsIGFwcHJvdmUgdGhlIHJlcXVlc3QgdG8gc2lnbiBpbi5cIixkZXNjcmlwdGlvbkZhbWlsaWFyRGV2aWNlR2VuZXJpY0FwcE5hbWVHZW5lcmljRGV2aWNlOlwiSW4geW91ciBNaWNyb3NvZnQgYXBwIG9uIHlvdXIgbW9iaWxlIGRldmljZSwgYXBwcm92ZSB0aGUgcmVxdWVzdCB0byBzaWduIGluLlwiLGRlc2NyaXB0aW9uVW5mYW1pbGlhckRldmljZTpcIkluIHlvdXIgezB9IGFwcCBvbiB5b3VyIHsxfSwgc2VsZWN0IHRoZSBudW1iZXIgc2hvd24gdG8gc2lnbiBpbi5cIixkZXNjcmlwdGlvblVuZmFtaWxpYXJEZXZpY2VHZW5lcmljQXBwTmFtZTpcIkluIHlvdXIgTWljcm9zb2Z0IGFwcCBvbiB5b3VyIHswfSwgc2VsZWN0IHRoZSBudW1iZXIgc2hvd24gdG8gc2lnbiBpbi5cIixkZXNjcmlwdGlvblVuZmFtaWxpYXJEZXZpY2VHZW5lcmljRGV2aWNlOlwiSW4geW91ciB7MH0gYXBwIG9uIHlvdXIgbW9iaWxlIGRldmljZSwgc2VsZWN0IHRoZSBudW1iZXIgc2hvd24gdG8gc2lnbiBpbi5cIixkZXNjcmlwdGlvblVuZmFtaWxpYXJEZXZpY2VHZW5lcmljQXBwTmFtZUdlbmVyaWNEZXZpY2U6XCJJbiB5b3VyIE1pY3Jvc29mdCBhcHAgb24geW91ciBtb2JpbGUgZGV2aWNlLCBzZWxlY3QgdGhlIG51bWJlciBzaG93biB0byBzaWduIGluLlwiLGxvc3RBcHBMaW5rVGV4dDpcIkkgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gbXkgezB9IGFwcFwiLGxvc3RBcHBMaW5rVGV4dEdlbmVyaWNBcHBOYW1lOlwiSSBkb24ndCBoYXZlIGFjY2VzcyB0byBteSBNaWNyb3NvZnQgYXBwXCIscHJpbWFyeUJ1dHRvbkxhYmVsOlwiVHJ5IGFnYWluXCIscmVxdWVzdERlbmllZEVycm9yOlwiV2Ugc2VudCBhIHNpZ24taW4gcmVxdWVzdCB0byB0aGUgTWljcm9zb2Z0IGFwcCB5b3UgdXNlIGZvciBhcHByb3Zpbmcgc2lnbi1pbiByZXF1ZXN0cywgYnV0IGl0IHdhc24ndCBhcHByb3ZlZC5cIixyZXF1ZXN0RGVuaWVkVGl0bGU6XCJSZXF1ZXN0IHdhcyBub3QgYXBwcm92ZWRcIixyZXF1ZXN0U2VuZEVycm9yOlwiV2UgY291bGRuJ3Qgc2VuZCBhIHJlcXVlc3QgdG8geW91ciBtb2JpbGUgZGV2aWNlIGF0IHRoaXMgdGltZS5cIixyZXF1ZXN0U2VuZEVycm9yVGl0bGU6XCJSZXF1ZXN0IHdhc24ndCBzZW50XCIscmVxdWVzdFRpbWVvdXRFcnJvcjpcIldlIHNlbnQgYSBzaWduLWluIHJlcXVlc3QgdG8gYSBNaWNyb3NvZnQgYXBwIHlvdSB1c2UgZm9yIGFwcHJvdmluZyBzaWduLWluIHJlcXVlc3RzLCBidXQgd2UgZGlkbid0IGdldCB5b3VyIGFwcHJvdmFsLlwiLHJlcXVlc3RUaW1lb3V0VGl0bGU6XCJSZXF1ZXN0IHRpbWVvdXRcIixyZXNlbmROb3RpZmljYXRpb25UZXh0OlwiVHJ5IGFnYWluIHRvIHNlbmQgYW5vdGhlciByZXF1ZXN0LlwiLHNlZUFsbERldmljZXNMaW5rVGV4dDpcIlNlZSBhbGwgdGhlIGRldmljZXMgdGhpcyB3YXMgc2VudCB0b1wifSxJQT17YWNjb3VudE1hbmFnZW1lbnRMaW5rVGV4dDpcIkRvbid0IHJlY29nbml6ZSBhIGRldmljZT8gR28gdG8geW91ciA8YWNjb3VudExpbms+TWljcm9zb2Z0IGFjY291bnQ8L2FjY291bnRMaW5rPiB0byBtYW5hZ2UgaG93IHlvdSByZWNlaXZlIHNpZ24taW4gcmVxdWVzdHMuXCIsYWNjb3VudE1hbmFnZW1lbnRMaW5rVGV4dEhvc3RlZDpcIkRvbid0IHJlY29nbml6ZSBhIGRldmljZT8gR28gdG8gPGJvbGRUZXh0PnswfTwvYm9sZFRleHQ+IHRvIG1hbmFnZSBob3cgeW91IHJlY2VpdmUgc2lnbi1pbiByZXF1ZXN0cy5cIixkZXNjcmlwdGlvbjpcIkFwcHMgYW5kIGRldmljZXMgdGhpcyB3YXMgc2VudCB0bzpcIixsaXN0SXRlbTpcInswfSBhcHAgb24gezF9XCIsbGlzdEl0ZW1HZW5lcmljQXBwTmFtZTpcIk1pY3Jvc29mdCBhcHAgb24gezB9XCIsbGlzdEl0ZW1HZW5lcmljRGV2aWNlOlwiezB9IGFwcCBvbiBtb2JpbGUgZGV2aWNlXCIsbGlzdEl0ZW1HZW5lcmljQXBwTmFtZUdlbmVyaWNEZXZpY2U6XCJNaWNyb3NvZnQgYXBwIG9uIG1vYmlsZSBkZXZpY2VcIixwcmltYXJ5QnV0dG9uTGFiZWw6XCJDbG9zZVwiLHRpdGxlOlwiRGV2aWNlcyB3ZSBzZW50IHRoaXMgcmVxdWVzdCB0b1wifTtmdW5jdGlvbiBMQShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gREEoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gREEoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIERBKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIE5BLFJBPTAsQkE9MSxVQT0yLEZBPTYsTUE9NztmdW5jdGlvbiB6QShlLHQpe3ZvaWQgMD09PXQmJih0PWUuY29uc3RydWN0b3IpO3ZhciBuPUVycm9yLmNhcHR1cmVTdGFja1RyYWNlO24mJm4oZSx0KX0hZnVuY3Rpb24oZSl7ZS5UcmFuc2ZlclRva2VuPVwiVFNGVFwiLGUuUmVtb3RlTmdjPVwiTkdDXCIsZS5SZW1vdGVDb25uZWN0PVwiUkNcIn0oTkF8fChOQT17fSkpO3ZhciBIQT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGU9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGUsdCl7ZS5fX3Byb3RvX189dH18fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbikmJihlW25dPXRbbl0pfSxlKHQsbil9O3JldHVybiBmdW5jdGlvbih0LG4pe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyhuKStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9ZSh0LG4pLHQucHJvdG90eXBlPW51bGw9PT1uP09iamVjdC5jcmVhdGUobik6KHIucHJvdG90eXBlPW4ucHJvdG90eXBlLG5ldyByKX19KCksVkE9KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcixvLGksYT10aGlzLmNvbnN0cnVjdG9yLGw9ZS5jYWxsKHRoaXMsdCxuKXx8dGhpcztyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGwsXCJuYW1lXCIse3ZhbHVlOmEubmFtZSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHI9bCxvPWEucHJvdG90eXBlLChpPU9iamVjdC5zZXRQcm90b3R5cGVPZik/aShyLG8pOnIuX19wcm90b19fPW8sekEobCksbH1IQSh0LGUpfShFcnJvciksZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixvPTAsaT10Lmxlbmd0aDtvPGk7bysrKSFyJiZvIGluIHR8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsbykpLHJbb109dFtvXSk7cmV0dXJuIGUuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0pO2Z1bmN0aW9uIFdBKGUsdCl7ZnVuY3Rpb24gbigpe2Zvcih2YXIgcj1bXSxvPTA7bzxhcmd1bWVudHMubGVuZ3RoO28rKylyW29dPWFyZ3VtZW50c1tvXTtpZighKHRoaXMgaW5zdGFuY2VvZiBuKSlyZXR1cm4gbmV3KG4uYmluZC5hcHBseShuLFZBKFt2b2lkIDBdLHIsITEpKSk7dC5hcHBseSh0aGlzLHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwibmFtZVwiLHt2YWx1ZTplLm5hbWV8fHQubmFtZSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGUuYXBwbHkodGhpcyxyKSx6QSh0aGlzLG4pfXJldHVybiB2b2lkIDA9PT10JiYodD1FcnJvciksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobix7cHJvdG90eXBlOnt2YWx1ZTpPYmplY3QuY3JlYXRlKHQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6bix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSl9fSl9dmFyIEdBPVdBKChmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcIlwiLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwiXCI7dGhpcy5jb2RlPWUsdGhpcy5tZXNzYWdlPVwiUmV0cnlhYmxlRXJyb3JcIi5jb25jYXQoZT9cIiBcIi5jb25jYXQoZSk6XCJcIikuY29uY2F0KHQ/XCIgXCIuY29uY2F0KHQpOlwiXCIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwibmFtZVwiLHt2YWx1ZTpcIlJldHJ5YWJsZUVycm9yXCJ9KX0pKSwkQT1XQSgoZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06XCJcIix0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIlwiO3RoaXMuY29kZT1lLHRoaXMubWVzc2FnZT1cIk5vblJldHJ5YWJsZUVycm9yXCIuY29uY2F0KGU/XCIgXCIuY29uY2F0KGUpOlwiXCIpLmNvbmNhdCh0P1wiIFwiLmNvbmNhdCh0KTpcIlwiKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcIm5hbWVcIix7dmFsdWU6XCJOb25SZXRyeWFibGVFcnJvclwifSl9KSk7ZnVuY3Rpb24gS0EoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBxQShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtLQShpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtLQShpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX19ZnVuY3Rpb24gUUEoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBYQShlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtRQShpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtRQShpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX19dmFyIFlBPWZ1bmN0aW9uKGUpe3ZhciB0PWUucG9sbGluZ1VybCxuPWUub25TZXNzaW9uQXBwcm92ZWQscj1lLm9uU2Vzc2lvblRpbWVvdXQsaT1lLm9uU2Vzc2lvbkRlbmllZCxhPXZvaWQgMD09PWk/ZnVuY3Rpb24oKXt0aHJvdyAkQShcIm5vdEltcGxlbWVudGVkXCIpfTppLGw9ZS5vblNlc3Npb25FcnJvcixzPXZvaWQgMD09PWw/cjpsLGM9ZS5vblNlc3Npb25WaXNpdGVkLHU9dm9pZCAwPT09Yz9mdW5jdGlvbigpe3Rocm93ICRBKFwibm90SW1wbGVtZW50ZWRcIil9OmMsZD1lLm1heFBvbGxpbmdFcnJvcnMsZj1lLnBvbGxpbmdJbnRlcnZhbE1zLHA9ZS5wb2xsaW5nVGltZW91dE1zLGc9ZS5zZXNzaW9uTG9va3VwS2V5LG09ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PygwLHN0Lk5pKShlLG4/e3Nsazp0LHNsa3Q6bn06e2NvZGU6dH0pOmV9KHQsZyxlLnNlc3Npb25Mb29rdXBLZXlUeXBlKSxoPWc/SlNPTi5zdHJpbmdpZnkoe0RldmljZUNvZGU6Z30pOm51bGwsYj1mdW5jdGlvbihlKXt2YXIgdD1lLnBvbGxpbmdJbnRlcnZhbE1zLG49dm9pZCAwPT09dD8xZTM6dCxyPWUubWF4UG9sbGluZ0Vycm9ycyxpPXZvaWQgMD09PXI/NTpyLGE9ZS5wb2xsaW5nVGltZW91dE1zLGw9dm9pZCAwPT09YT82ZTQ6YSxzPU1hdGguZmxvb3Iobi8xMCksYz1KdygpLHU9KDAsby51c2VSZWYpKCEwKSxkPSgwLG8udXNlUmVmKShudWxsKSxmPSgwLG8udXNlUmVmKShudWxsKSxwPWZ1bmN0aW9uKCl7dS5jdXJyZW50PSExfSxnPWZ1bmN0aW9uKCl7ZC5jdXJyZW50JiYoY2xlYXJUaW1lb3V0KGQuY3VycmVudCksZC5jdXJyZW50PW51bGwpLGYuY3VycmVudCYmKGNsZWFyVGltZW91dChmLmN1cnJlbnQpLGYuY3VycmVudD1udWxsKX07cmV0dXJue3N0YXJ0UG9sbGluZzpmdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7dmFyIG89MCxhPSExLG09ITE7dS5jdXJyZW50PSEwLGYuY3VycmVudD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe209ITB9KSxsKSxkLmN1cnJlbnQ9c2V0SW50ZXJ2YWwocUEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGwoKXt2YXIgcyxkO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obCl7Zm9yKDs7KXN3aXRjaChsLnByZXY9bC5uZXh0KXtjYXNlIDA6aWYodS5jdXJyZW50fHwoZygpLHQoKSksISgocz1KdygpKT49Yykpe2wubmV4dD0xNjticmVha31yZXR1cm4gYz1zK24sbC5wcmV2PTQsbC5uZXh0PTcsZSgpO2Nhc2UgNzpwKCksbC5uZXh0PTE1O2JyZWFrO2Nhc2UgMTA6bC5wcmV2PTEwLGwudDA9bC5jYXRjaCg0KSwoZD1sLnQwIGluc3RhbmNlb2YgR0EpJiZcIlJldHJ5YWJsZUVycm9yIHBlbmRpbmdcIiE9PWwudDAubWVzc2FnZSYmKG8rPTEpLCghZHx8bz49aSkmJihhPSEwLHAoKSk7Y2FzZSAxNTphJiZvPj1pPyhnKCkscigkQShcIm1heFJldHJ5YWJsZUVycm9yc1wiKSkpOmE/KGcoKSxyKCRBKFwidW5rbm93bkVycm9yXCIpKSk6bSYmKGcoKSxyKCRBKFwidGltZW91dFwiKSkpO2Nhc2UgMTY6Y2FzZVwiZW5kXCI6cmV0dXJuIGwuc3RvcCgpfX0pLGwsbnVsbCxbWzQsMTBdXSl9KSkpLHMpfSkpfSxzdG9wUG9sbGluZzpwfX0oe21heFBvbGxpbmdFcnJvcnM6ZCxwb2xsaW5nSW50ZXJ2YWxNczpmLHBvbGxpbmdUaW1lb3V0TXM6cH0pLHk9Yi5zdGFydFBvbGxpbmcsdj1iLnN0b3BQb2xsaW5nO2Z1bmN0aW9uIHcoKXtyZXR1cm4gdz1YQShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG87cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gdD1mdW5jdGlvbigpe3ZhciBlPVhBKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsKDAsYlMuTVcpKG0se2JvZHk6aH0pO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQsZS5hYnJ1cHQoXCJyZXR1cm5cIix0KTtjYXNlIDQ6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG89ZnVuY3Rpb24oKXt2YXIgZT1YQShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHQoKTtjYXNlIDI6aWYoKHI9ZS5zZW50KSYmdm9pZCAwIT09ci5BdXRob3JpemF0aW9uU3RhdGUpe2UubmV4dD01O2JyZWFrfXRocm93ICRBKFwibm9SZXNwb25zZVwiKTtjYXNlIDU6ZS50MD1yLkF1dGhvcml6YXRpb25TdGF0ZSxlLm5leHQ9ZS50MD09PVJBfHxlLnQwPT09TUE/ODplLnQwPT09VUE/OTplLnQwPT09RkE/MTE6ZS50MD09PUJBPzEzOihlLnQwLDE1KTticmVhaztjYXNlIDg6dGhyb3cgbmV3IEdBKFwicGVuZGluZ1wiKTtjYXNlIDk6cmV0dXJuIG4oKSxlLmFicnVwdChcInJldHVyblwiKTtjYXNlIDExOnJldHVybiByLkNvZGU/dShyLkNvZGUpOnMoKSxlLmFicnVwdChcInJldHVyblwiKTtjYXNlIDEzOnJldHVybiBhKCksZS5hYnJ1cHQoXCJyZXR1cm5cIik7Y2FzZSAxNTp0aHJvdyBuZXcgR0EoXCJpbnZhbGlkU2Vzc2lvblwiKTtjYXNlIDE2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxlLnByZXY9Mix2KCksZS5uZXh0PTYseShvKTtjYXNlIDY6ZS5uZXh0PTExO2JyZWFrO2Nhc2UgODplLnByZXY9OCxlLnQwPWUuY2F0Y2goMiksZS50MCBpbnN0YW5jZW9mICRBP3IoKTpzKCk7Y2FzZSAxMTpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMiw4XV0pfSkpKSx3LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm57c3RhcnRQb2xsaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzdG9wUG9sbGluZzp2fX07ZnVuY3Rpb24gWkEoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIEpBKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIEpBKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBKQShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBlVD1mdW5jdGlvbihlKXt2YXIgdD1JdC5kZWZhdWx0Lmluc3RhbmNlLG49dC5zaG93QnV0dG9ucyxyPXQucG9zdFVybCxpPWZPLmluc3RhbmNlLGE9aS5sb2dpbk1vZGUsbD1pLmxvc3RBdXRoZW50aWNhdG9yVXJsLHM9aS5yYXdRdWVyeVN0cmluZyxjPUp0KCkuZ2xvYmFsU3RhdGUsdT1jLmRlYnVnSW5mby5lcnJvckNvZGUsZD1jLnVzZXIsZj1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuZnJpZW5kbHlBcHBOYW1lLHA9SmUoKS5hdXRoU3RhdGUuZmxvd1Rva2VuVmFsdWUsZz1UTygpLG09Zy52aWV3U3RhdGUucmVtb3RlTmdjUGFyYW1zLGg9Zy5kaXNwYXRjaFN0YXRlQ2hhbmdlLGI9bS5zaG93QW5pbWF0ZWRHaWZXaGlsZVBvbGxpbmcseT1tLmRlZmF1bHRUeXBlLHY9bS5lbnRyb3B5LHc9bS5kZXZpY2VzLFM9bS5zZXNzaW9uSWRlbnRpZmllcixQPWUuY29tbW9uTG9naW5TdHJpbmdzLHg9ZS5wdXNoTm90aWZpY2F0aW9uc1ZpZXdTdHJpbmdzLE89eC5zZWVBbGxEZXZpY2VzTGlua1RleHQsXz14Lmxvc3RBcHBMaW5rVGV4dCxDPXgucHJpbWFyeUJ1dHRvbkxhYmVsLGs9eC5oZWFkaW5nLEE9eC5oZWFkaW5nR2VuZXJpY0FwcE5hbWUsVD14LnJlc2VuZE5vdGlmaWNhdGlvblRleHQsRT14Lmxvc3RBcHBMaW5rVGV4dEdlbmVyaWNBcHBOYW1lLGo9V08oYSxmLFApLEk9eXx8Y3QuUEEuUHVzaE5vdGlmaWNhdGlvbixMPXcubGVuZ3RoPjA/d1swXTp7bmFtZTpcIlwiLGFwcGxpY2F0aW9uOlwiXCJ9LEQ9KDAsc3QuWjcpKGssTC5hcHBsaWNhdGlvbiksTj0oMCxzdC5aNykoXyxMLmFwcGxpY2F0aW9uKTtMLmFwcGxpY2F0aW9ufHwoRD1BLE49RSk7dmFyIFI9WkEoKDAsby51c2VTdGF0ZSkoRCksMiksQj1SWzBdLFU9UlsxXSxGPVpBKCgwLG8udXNlU3RhdGUpKFwiXCIpLDIpLE09RlswXSx6PUZbMV0sSD1aQSgoMCxvLnVzZVN0YXRlKSghMSksMiksVj1IWzBdLFc9SFsxXSxHPVpBKCgwLG8udXNlU3RhdGUpKCF2fHwhIU0pLDIpLCQ9R1swXSxLPUdbMV0scT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1uLmRlc2NyaXB0aW9uRmFtaWxpYXJEZXZpY2UsaT1uLmRlc2NyaXB0aW9uRmFtaWxpYXJEZXZpY2VHZW5lcmljQXBwTmFtZSxhPW4uZGVzY3JpcHRpb25GYW1pbGlhckRldmljZUdlbmVyaWNEZXZpY2UsbD1uLmRlc2NyaXB0aW9uRmFtaWxpYXJEZXZpY2VHZW5lcmljQXBwTmFtZUdlbmVyaWNEZXZpY2Uscz1uLmRlc2NyaXB0aW9uVW5mYW1pbGlhckRldmljZSxjPW4uZGVzY3JpcHRpb25VbmZhbWlsaWFyRGV2aWNlR2VuZXJpY0FwcE5hbWUsdT1uLmRlc2NyaXB0aW9uVW5mYW1pbGlhckRldmljZUdlbmVyaWNEZXZpY2UsZD1uLmRlc2NyaXB0aW9uVW5mYW1pbGlhckRldmljZUdlbmVyaWNBcHBOYW1lR2VuZXJpY0RldmljZSxmPVwiXCIscD1yLm5hbWUsZz1yLmFwcGxpY2F0aW9uO3JldHVybiBlPT09Y3QuUEEuUHVzaE5vdGlmaWNhdGlvbiYmKGY9dD9yLm5hbWU/ci5hcHBsaWNhdGlvbj8oMCxzdC5aNykocyxnLHApOigwLHN0Llo3KShjLHApOnIuYXBwbGljYXRpb24/KDAsc3QuWjcpKHUsZyk6ZDpyLm5hbWU/ci5hcHBsaWNhdGlvbj8oMCxzdC5aNykobyxnLHApOigwLHN0Llo3KShpLHApOnIuYXBwbGljYXRpb24/KDAsc3QuWjcpKGEsZyk6bCksZn0oSSx2LGpBLEwpLFE9dy5sZW5ndGg+MSxYPSEhTXx8IWIsWT1IUygpJiZuLFo9ISFsLEo9amQoXCJnZW5lcmljX2FwcFwiLFwiZ2lmXCIpLGVlPXM/KDAsc3QuZkMpKHMscik6cix0ZT0oMCxvLnVzZVJlZikobnVsbCksbmU9KDAsby51c2VSZWYpKG51bGwpLHJlPWZ1bmN0aW9uKGUsdCl7dmFyIG49SnQoKS5kaXNwYXRjaFN0YXRlQ2hhbmdlO3JldHVybigwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbihyKXtlKHIpLHQmJm4oe3R5cGU6THQuSGlkZUJhY2tBcnJvd0J1dHRvbixwYXlsb2FkOnJ9KX0pLFtlLHQsbl0pfShXLFkpLG9lPWZ1bmN0aW9uKGUsdCxuLHIsaSxhLGwscyxjKXt2YXIgdT1jLnJlcXVlc3RUaW1lb3V0VGl0bGUsZD1jLnJlcXVlc3RUaW1lb3V0RXJyb3IsZj1jLnJlcXVlc3REZW5pZWRUaXRsZSxwPWMucmVxdWVzdERlbmllZEVycm9yLGc9SXQuZGVmYXVsdC5pbnN0YW5jZSxtPWcubWF4UG9sbGluZ0Vycm9ycyxoPWcucG9sbGluZ0ludGVydmFsTXMsYj1nLnBvbGxpbmdUaW1lb3V0TXMseT1nLnNlc3Npb25TdGF0ZVVybCx2PVlBKHtwb2xsaW5nVXJsOnksb25TZXNzaW9uQXBwcm92ZWQ6ZnVuY3Rpb24oKXt2YXIgZTthKFwiXCIpLHMoITApLG51bGw9PT0oZT1pLmN1cnJlbnQpfHx2b2lkIDA9PT1lfHxlLnN1Ym1pdCgpfSxvblNlc3Npb25EZW5pZWQ6ZnVuY3Rpb24oKXthKGYpLGwoKDAsc3QuWjcpKHAsci5kaXNwbGF5VXNlcm5hbWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nKSl9LG9uU2Vzc2lvblRpbWVvdXQ6ZnVuY3Rpb24oKXtlPT09Y3QuUEEuUHVzaE5vdGlmaWNhdGlvbiYmKGEodSksbCgoMCxzdC5aNykoZCxyLmRpc3BsYXlVc2VybmFtZS51bnNhZmVVbmVzY2FwZWRTdHJpbmcpKSl9LHNlc3Npb25Mb29rdXBLZXk6dCxzZXNzaW9uTG9va3VwS2V5VHlwZTpOQS5SZW1vdGVOZ2MsbWF4UG9sbGluZ0Vycm9yczptLHBvbGxpbmdJbnRlcnZhbE1zOmgscG9sbGluZ1RpbWVvdXRNczpifSkuc3RhcnRQb2xsaW5nO3JldHVybigwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbigpe2EobiksdigpfSksW2EsdixuXSl9KEksUyxELGQsbmUsVSx6LHJlLHgpLGllPWZ1bmN0aW9uKGUsdCxuLHIsaSxhLGwscyl7dmFyIGM9VE8oKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLHU9SmUoKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGQ9SXQuZGVmYXVsdC5pbnN0YW5jZS5nZXRPdGNKc29uVXJsLGY9cy5yZXF1ZXN0U2VuZEVycm9yLHA9cy5yZXF1ZXN0U2VuZEVycm9yVGl0bGUsZz0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7ZSYmdSh7dHlwZTpNZS5TZXRGbG93VG9rZW5WYWx1ZSxwYXlsb2FkOmV9KX0pLFt1XSksbT0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7dmFyIHQsbjtnKGUuZmxvd1Rva2VuKSxjKHt0eXBlOnVPLlNldFJlbW90ZU5nY1BhcmFtcyxwYXlsb2FkOntlbnRyb3B5Om51bGwhPT0odD1lLmRpc3BsYXlTaWduKSYmdm9pZCAwIT09dD90OlwiXCIsZGV2aWNlczpudWxsIT09KG49ZS5kZXZpY2VzKSYmdm9pZCAwIT09bj9uOltdfX0pLGwoITEpLHIoKX0pLFtjLHIsbCxnXSksaD0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7ZyhlLmZsb3dUb2tlbiksbCghMSksaShwKSxhKGYpfSksW2ksYSxsLGcsZixwXSk7cmV0dXJuKDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7Yyh7dHlwZTp1Ty5TZXRSZW1vdGVOZ2NQYXJhbXMscGF5bG9hZDp7ZW50cm9weTpcIlwiLGRldmljZXM6W119fSksbCghMCk7dmFyIHI9ZD9lOnQ7ZUEoe29uU3VjY2VzczptLG9uRmFpbHVyZTpoLGNhbmFyeUZsb3dUb2tlbjplLGNoYW5uZWw6b3QuYXV0aGVudGljYXRvcixmbG93VG9rZW46cixwcm9vZlR5cGU6SlAuVE9UUEF1dGhlbnRpY2F0b3JWMixwdXJwb3NlOnJ0LnJlbW90ZU5HQyx1c2VybmFtZTpuLnVzZXJuYW1lfSl9KSxbYyxlLGQsaCxtLHQsbi51c2VybmFtZSxsXSl9KHAsUyxkLG9lLFUseixyZSx4KSxhZT1mdW5jdGlvbihlLHQsbixyKXt2YXIgaT1UTygpLnZpZXdTdGF0ZS5yZW1vdGVOZ2NQYXJhbXMucmVxdWVzdFNlbnQsYT1MQSgoMCxvLnVzZVN0YXRlKSghMCksMiksbD1hWzBdLHM9YVsxXTtyZXR1cm4oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oKXtlKFwiXCIpLHQoXCJcIiksbD8oaT9yKCk6bigpLHMoITEpKTpuKCl9KSxbaSxyLGUsdCxzLGwsbl0pfShVLHosaWUsb2UpO3JldHVybntkZXZpY2VzOncsZGlzcGxheVNpZ246dixkaXNwbGF5U2lnblJlZjp0ZSxkb2N1bWVudFRpdGxlOmosZXJyb3I6TSxmb3JtUmVmOm5lLGdpZlVybDpKLGhhbmRsZVNlcnZlckVycm9yOmZ1bmN0aW9uKGUpe2goe3R5cGU6dU8uU2V0U2VydmVyRXJyb3JTaG93bixwYXlsb2FkOiEwfSkseihlKX0saXNSZXF1ZXN0UGVuZGluZzpWLGxvc3RBcHBBY2Nlc3NMaW5rVGV4dDpOLHBvbGxpbmdEZXNjcmlwdGlvbjpxLHBvc3RVcmw6ZWUscHJpbWFyeUJ1dHRvbkxhYmVsOkMscmVtb3RlTmdjVHlwZTpJLHJlc2VuZE5vdGlmaWNhdGlvblRleHQ6VCxzZWVBbGxEZXZpY2VzTGlua1RleHQ6TyxzZWVBbGxEZXZpY2VzTGlua0ZvY3VzOiQsc2VydmVyRXJyb3JDb2RlOnUsc2hvd0FuaW1hdGVkR2lmV2hpbGVQb2xsaW5nOmIsc2hvd0JhY2tBcnJvd0J1dHRvbjpZLHNob3dCdXR0b25zOm4sc2hvd1NlZUFsbERldmljZXNMaW5rOlEsc2hvd1NlZUFsbERldmljZXNMaW5rQmVsb3dHaWY6WCxzaG93TG9zdEFwcEFjY2Vzc0xpbms6WixzZXRJc1JlcXVlc3RQZW5kaW5nOlcsc2V0U2VlQWxsRGV2aWNlc0xpbmtGb2N1czpLLHNldHVwQW5kU3RhcnRQb2xsaW5nOmFlLHRpdGxlOkJ9fSx0VD1uZXcgTG0ucih7bWFuYWdlUHJvb2ZzVXJsOlwiaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL3Byb29mcy9tYW5hZ2VcIn0pO2Z1bmN0aW9uIG5UKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByVChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByVChlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gclQoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgb1Q9ZnVuY3Rpb24oZSl7cmV0dXJuKDAsJGUuanN4KShcImJcIix7Y2hpbGRyZW46ZX0pfSxpVD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49blQodCwxKVswXTtyZXR1cm4oMCwkZS5qc3gpKFwiYVwiLHtocmVmOmUsY2hpbGRyZW46bn0pfX0sYVQ9ZnVuY3Rpb24oZSl7dmFyIHQ9VW0uaW5zdGFuY2Usbj10LnVzZUNvbW1vblN0eWxlcyxyPXQudXNlUHVzaE5vdGlmaWNhdGlvbnNWaWV3U3R5bGVzLG89ZS5kZXZpY2VzLGk9ZS5vbkRpYWxvZ0Nsb3NlLGE9SUEuYWNjb3VudE1hbmFnZW1lbnRMaW5rVGV4dCxsPUlBLmRlc2NyaXB0aW9uLHM9SUEucHJpbWFyeUJ1dHRvbkxhYmVsLGM9SUEudGl0bGUsdT1JQS5hY2NvdW50TWFuYWdlbWVudExpbmtUZXh0SG9zdGVkLGQ9b1QsZj10VC5pbnN0YW5jZS5tYW5hZ2VQcm9vZnNVcmwscD1JdC5kZWZhdWx0Lmluc3RhbmNlLmlzSG9zdGVkLGc9cigpLG09bigpLGg9KDAsJGUuanN4KShSTyx7dGl0bGVJZDpcImRpYWxvZ0hlYWRlclwiLHRpdGxlOmN9KSxiPW8ubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdD1lLHI9KG49SUEpLmxpc3RJdGVtLG89bi5saXN0SXRlbUdlbmVyaWNBcHBOYW1lLGk9bi5saXN0SXRlbUdlbmVyaWNEZXZpY2UsYT1uLmxpc3RJdGVtR2VuZXJpY0FwcE5hbWVHZW5lcmljRGV2aWNlLGw9dC5hcHBsaWNhdGlvbiwocz10Lm5hbWUpP2w/KDAsc3QuWjcpKHIsbCxzKTooMCxzdC5aNykobyxzKTpsPygwLHN0Llo3KShpLGwpOmE7dmFyIHQsbixyLG8saSxhLGwsc30pKSx5PSgwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2cobS5yb3csbS50ZXh0Qm9keSksY2hpbGRyZW46bH0pLCgwLCRlLmpzeCkoXCJ1bFwiLHtjbGFzc05hbWU6Zy5saXN0SXRlbXMsY2hpbGRyZW46Yi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybigwLCRlLmpzeCkoXCJsaVwiLHtjaGlsZHJlbjplfSxlKX0pKX0pLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKG0ucm93LG0udGV4dEJvZHkpLGNoaWxkcmVuOnA/KDAsJGUuanN4KShidyx7dGV4dDooMCxzdC5aNykodSxmKSxlbWJlZGRlZEJpbmRpbmdzOntib2xkVGV4dDpkfX0pOigwLCRlLmpzeCkoYncse3RleHQ6YSxlbWJlZGRlZEJpbmRpbmdzOnthY2NvdW50TGluazpmdW5jdGlvbihlKXtyZXR1cm4oMCwkZS5qc3gpKFwiYVwiLHtpZDpcImFjY291bnRNYW5hZ2VtZW50TGlua1wiLGhyZWY6Zix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub3JlZmVycmVyXCIsY2hpbGRyZW46ZVswXX0pfX19KX0pXX0pLHY9KDAsJGUuanN4KShVXyx7aGFzRm9jdXM6ITAsbGFiZWw6cyxpc1ByaW1hcnk6ITAsb25DbGljazppfSk7cmV0dXJuKDAsJGUuanN4KShYXyx7aGVhZGVyQ29tcG9uZW50OmgsZGVzY3JpcHRpb25Db21wb25lbnQ6eSxmb290ZXJDb21wb25lbnQ6dn0pfTtmdW5jdGlvbiBsVChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gc1QoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/bFQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtjVChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6bFQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gY1QoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciB1VD1mdW5jdGlvbigpe3ZhciBlPVVtLmluc3RhbmNlLHQ9ZS51c2VDb21tb25TdHlsZXMsbj1lLnVzZVB1c2hOb3RpZmljYXRpb25zVmlld1N0eWxlcyxyPWVUKHtwdXNoTm90aWZpY2F0aW9uc1ZpZXdTdHJpbmdzOmpBLGNvbW1vbkxvZ2luU3RyaW5nczpwQ30pLGk9ci5kZXZpY2VzLGE9ci5kaXNwbGF5U2lnbixsPXIuZGlzcGxheVNpZ25SZWYscz1yLmRvY3VtZW50VGl0bGUsYz1yLmVycm9yLHU9ci5mb3JtUmVmLGQ9ci5naWZVcmwsZj1yLmhhbmRsZVNlcnZlckVycm9yLHA9ci5pc1JlcXVlc3RQZW5kaW5nLGc9ci5sb3N0QXBwQWNjZXNzTGlua1RleHQsbT1yLnByaW1hcnlCdXR0b25MYWJlbCxoPXIucG9sbGluZ0Rlc2NyaXB0aW9uLGI9ci5wb3N0VXJsLHk9ci5yZW1vdGVOZ2NUeXBlLHY9ci5yZXNlbmROb3RpZmljYXRpb25UZXh0LHc9ci5zZWVBbGxEZXZpY2VzTGlua1RleHQsUz1yLnNlcnZlckVycm9yQ29kZSxQPXIuc2VlQWxsRGV2aWNlc0xpbmtGb2N1cyx4PXIuc2V0SXNSZXF1ZXN0UGVuZGluZyxPPXIuc2V0U2VlQWxsRGV2aWNlc0xpbmtGb2N1cyxfPXIuc2V0dXBBbmRTdGFydFBvbGxpbmcsQz1yLnNob3dBbmltYXRlZEdpZldoaWxlUG9sbGluZyxrPXIuc2hvd0JhY2tBcnJvd0J1dHRvbixBPXIuc2hvd0J1dHRvbnMsVD1yLnNob3dTZWVBbGxEZXZpY2VzTGluayxFPXIuc2hvd1NlZUFsbERldmljZXNMaW5rQmVsb3dHaWYsaj1yLnNob3dMb3N0QXBwQWNjZXNzTGluayxJPXIudGl0bGUsTD12XyhwQyksRD1MLmJyYW5kaW5nRGVzY3JpcHRpb24sTj1MLmJyYW5kaW5nRGVzY3JpcHRpb25JZCxSPUwucmVuZGVyQnJhbmRpbmdEZXNjcmlwdGlvbixCPWZ1bmN0aW9uKGUpe3ZhciB0PUFBKCgwLG8udXNlU3RhdGUpKCExKSwyKSxuPXRbMF0scj10WzFdO3JldHVybntzZWVBbGxEZXZpY2VzTGlua09uQ2xpY2s6ZnVuY3Rpb24oKXtyKCEwKSxlKCExKX0sb25EaWFsb2dDbG9zZTpmdW5jdGlvbigpe3IoITEpLGUoITApfSxzaG93RGlhbG9nOm59fShPKSxVPUIub25EaWFsb2dDbG9zZSxGPUIuc2VlQWxsRGV2aWNlc0xpbmtPbkNsaWNrLE09Qi5zaG93RGlhbG9nLHo9ZnVuY3Rpb24oKXt2YXIgZSx0PUl0LmRlZmF1bHQuaW5zdGFuY2Usbj10LmNvbnRleHQscj10LmNhbmFyeVRva2VuVmFsdWUsbz10LmZsb3dUb2tlbk5hbWUsaT10LnNob3dDb29raWVCYW5uZXIsYT10LnVuYXV0aGVudGljYXRlZFNlc3Npb25JZCxsPWZPLmluc3RhbmNlLHM9bC5kZWZhdWx0TG9naW5PcHRpb25zLGM9bC5mb3VuZE1zYXMsdT1sLmlzRmlkb1N1cHBvcnRlZEhpbnQsZD1sLnBvc3RlZEZvcmNlU2lnbkluLGY9bC5yYW5kb21CbG9iLHA9bC51c2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sLGc9SnQoKS5nbG9iYWxTdGF0ZS51c2VyLG09VE8oKS52aWV3U3RhdGUucmVtb3RlTmdjUGFyYW1zLGg9bS5kZWZhdWx0VHlwZSxiPW0uZW50cm9weSx5PW0uc2Vzc2lvbklkZW50aWZpZXIsdj1KZSgpLmF1dGhTdGF0ZS5mbG93VG9rZW5WYWx1ZSx3PW54KG51bGw9PT0oZT1nLnVzZXJuYW1lKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS51bnNhZmVVbmVzY2FwZWRTdHJpbmcpLFM9Zy5kaXNwbGF5VXNlcm5hbWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nLFA9RGkodSxwKSx4PXM9PT1jdC5wdC5yZW1lbWJlclB3ZCxPPXg/Y3QucHQucmVtZW1iZXJQd2Q6Y3QucHQubm90aGluZ0NoZWNrZWQsXz1jdC5nRS5yZW1vdGVOR0M7cmV0dXJue2xvZ2luUG9zdFByb3BzOntjYW5hcnk6cixjbGVhbnNlZFVzZXJuYW1lOncsY29udGV4dDpuLGZsb3dUb2tlbk5hbWU6byxmbG93VG9rZW5WYWx1ZTp2LGZvdW5kTXNhczpjLGlzRmlkb1N1cHBvcnRlZDpQLGlzS21zaUNoZWNrZWQ6eCxsb2dpbk9wdGlvbjpPLHBhZ2luYXRlZFN0YXRlOm9QLHBvc3RUeXBlOl8scG9zdGVkRm9yY2VTaWduSW46ZCxyYW5kb21CbG9iOmYsc2hvd0Nvb2tpZUJhbm5lcjppLGRpc3BsYXlVc2VybmFtZTpTLHJuZ2NEZWZhdWx0VHlwZTpofHxjdC5QQS5QdXNoTm90aWZpY2F0aW9uLHJuZ2NFbnRyb3B5OmIscm5nY1Nlc3Npb25JZGVudGlmaWVyOnl9LHVuYXV0aGVudGljYXRlZFNlc3Npb25JZDphLHJuZ2NTZXNzaW9uSWRlbnRpZmllcjp5fX0oKSxIPXoubG9naW5Qb3N0UHJvcHMsVj16LnJuZ2NTZXNzaW9uSWRlbnRpZmllcixXPXoudW5hdXRoZW50aWNhdGVkU2Vzc2lvbklkLEc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89XCJwdXNoTm90aWZpY2F0aW9uc1RpdGxlXCIsaT1cImVycm9yRGVzY3JpcHRpb25cIixhPVwicG9sbGluZ0Rlc2NyaXB0aW9uXCIsbD1cImRpc3BsYXlTaWduXCIscz1lP286XCJcIjtzKz10P1wiIFwiLmNvbmNhdChuKTpcIlwiLHMrPXI/XCIgXCIuY29uY2F0KGkpOlwiXCI7dmFyIGM9ZT9vOlwiXCI7cmV0dXJuIGMrPXQ/XCIgXCIuY29uY2F0KG4pOlwiXCIse2Rlc2NyaXB0aW9uSWQ6YSxkaXNwbGF5U2lnbklkOmwsZXJyb3JJZDppLHRpdGxlSWQ6byxpbml0aWFsRm9jdXNFbGVtZW50QXJpYURlc2NyaWJlZEJ5OmMrPXI/XCIgXCIuY29uY2F0KGkpOlwiIFwiLmNvbmNhdChhLFwiIFwiKS5jb25jYXQobCkscHJpbWFyeUJ1dHRvbkFyaWFEZXNjcmliZWRCeTpzfX0oSSxSLE4sYyksJD1HLmRlc2NyaXB0aW9uSWQsSz1HLmRpc3BsYXlTaWduSWQscT1HLmVycm9ySWQsUT1HLnRpdGxlSWQsWD1HLmluaXRpYWxGb2N1c0VsZW1lbnRBcmlhRGVzY3JpYmVkQnksWT1HLnByaW1hcnlCdXR0b25BcmlhRGVzY3JpYmVkQnksWj0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZS51c2VyLEo9KDAsby51c2VDb250ZXh0KShBTykudmlld1N0YXRlLnNlcnZlckVycm9yU2hvd24sZWU9RUEoWiksdGU9U18oKSxuZT10ZS5zaG93U3dpdGNoVG9FdmljdGVkQ3JlZFBpY2tlcixyZT10ZS5zaG93Q3JlZGVudGlhbFN3aXRjaENvbnRlbnQsb2U9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT1UTygpLnZpZXdTdGF0ZS5jcmVkZW50aWFscy5hdmFpbGFibGVDcmVkZW50aWFscyxhPXtjcmVkZW50aWFsVHlwZTokUC5SZW1vdGVOR0N9LGw9ISh0JiYhZXx8bykscz1sP3I6XCJcIjtyZXR1cm57c291cmNlVmlld0lkOlR0LlB1c2hOb3RpZmljYXRpb25zLGF2YWlsYWJsZUNyZWRlbnRpYWxzOmksY3VycmVudENyZWRlbnRpYWw6YSxzZXRSZXF1ZXN0UGVuZGluZ0ZsYWc6bixzaG93Rm9yZ290VXNlcm5hbWU6ITEsaGFzRm9jdXM6bCxsaW5rQXJpYURlc2NyaWJlZEJ5OnMsc2hvdWxkVXBkYXRlT3RjQ3JlZGVudGlhbDohMH19KGMsYSx4LFgsVCk7KDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe2EmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09bHx8bnVsbD09PShlPWwuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuZm9jdXMoKX0pLGhwKX0pLFthLGxdKSxmayhUdC5QdXNoTm90aWZpY2F0aW9ucyxFdC5Mb2dpbix7c2hvd0JhY2tCdXR0b25PbkFjdGl2ZVZpZXc6a30pLGFrKHMpO3ZhciBpZT10KCksYWU9bigpLGxlPWVfKHBDLFMpO1RTKChmdW5jdGlvbigpe2xlJiYhSj9mKGxlKTpfKCl9KSk7dmFyIHNlPSgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmllLmRpc3BsYXlTaWduLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJzcGFuXCIse1wiZGF0YS10ZXN0aWRcIjpcImRpc3BsYXlTaWduXCIsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6WCxyZWY6bCx0YWJJbmRleDotMSxpZDpLLGNoaWxkcmVuOmF9KX0pLGNlPVQmJigwLCRlLmpzeCkoX2sse2NoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmllLnJvdyxcImRhdGEtdGVzdGlkXCI6RT9cInNlZUFsbERldmljZXNMaW5rQmVsb3dHaWZcIjpcInNlZUFsbERldmljZXNMaW5rQWJvdmVHaWZcIixjaGlsZHJlbjooMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6aWUuZm9ybUdyb3VwLGNoaWxkcmVuOlsoMCwkZS5qc3gpKHRDLHt0ZXh0Oncsb25DbGljazpGLGhhc0ZvY3VzOlAsYXJpYURlc2NyaWJlZEJ5Olh9KSxNJiYoMCwkZS5qc3gpKGFULHtvbkRpYWxvZ0Nsb3NlOlUsZGV2aWNlczppfSldfSl9KX0pLHVlPSgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmllLnNlY3Rpb24sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2coaWUucm93LGllLnRleHRCb2R5KSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiaW1nXCIse3JvbGU6XCJwcmVzZW50YXRpb25cIixcImRhdGEtdGVzdGlkXCI6XCJnaWZJbmZvXCIsc3JjOmQsYWx0OlwiXCIsY2xhc3NOYW1lOlNnKGllLmNlbnRlckJsb2NrLGFlLmF1dGhlbnRpY2F0b3JJbWFnZSl9KX0pfSksZGU9KDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOmllLnNlY3Rpb24sY2hpbGRyZW46W2EmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKGllLnNlY3Rpb24sYWUucHVsbExlZnQpLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmllLnRleHRCb2R5LGNoaWxkcmVuOnNlfSl9KSwoMCwkZS5qc3gpKFwiZGl2XCIse3JvbGU6XCJhbGVydFwiLFwiYXJpYS1saXZlXCI6XCJhc3NlcnRpdmVcIixcImFyaWEtYXRvbWljXCI6XCJ0cnVlXCIsaWQ6JCxjbGFzc05hbWU6U2coaWUudGV4dEJsb2NrQm9keSxpZS5vdmVyRmxvd0hpZGRlbixpZS5mb3JtR3JvdXAsYT9hZS5kZXNjcmlwdGlvblBhZGRpbmc6XCJcIiksY2hpbGRyZW46aH0pLGNlLHVlXX0pLGZlPSgwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6aWUuc2VjdGlvbixjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhpZS5yb3csaWUudGV4dEJvZHkpLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7cm9sZTpcImFsZXJ0XCIsXCJhcmlhLWxpdmVcIjpcImFzc2VydGl2ZVwiLFwiYXJpYS1hdG9taWNcIjpcInRydWVcIixpZDokLGNsYXNzTmFtZTpTZyhpZS50ZXh0QmxvY2tCb2R5LGllLm92ZXJGbG93SGlkZGVuKSxjaGlsZHJlbjpofSl9KX0pLGEmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmllLnNlY3Rpb24sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2coaWUucm93LGllLnRleHRCb2R5LGllLmRpc3BsYXlTaWduQ29udGFpbmVyKSxjaGlsZHJlbjpzZX0pfSldfSkscGU9KDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOmllLnNlY3Rpb24sY2hpbGRyZW46WygwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTppZS5mb3JtR3JvdXAsY2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7aWQ6cSxjbGFzc05hbWU6U2coaWUucm93LGllLnRleHRCb2R5LGllLnRleHRCbG9ja0JvZHksaWUuYWxlcnRFcnJvciksY2hpbGRyZW46Y30pLHk9PT1jdC5QQS5QdXNoTm90aWZpY2F0aW9uJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhpZS5yb3csaWUudGV4dEJvZHksaWUudGV4dEJsb2NrQm9keSksY2hpbGRyZW46dn0pXX0pLEMmJnVlXX0pLGdlPSgwLCRlLmpzeHMpKFwiZGl2XCIse2NoaWxkcmVuOltFJiZjZSwoMCwkZS5qc3hzKShfayx7Y2hpbGRyZW46W3JlJiYoMCwkZS5qc3gpKFBBLHtjcmVkZW50aWFsU3dpdGNoUHJvcHM6b2Usc2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXI6bmV9KSxqJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTppZS5yb3csY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6aWUuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkodEMse3RleHQ6ZyxvbkNsaWNrOmVlfSl9KX0pXX0pXX0pLG1lPUM/ZGU6ZmU7cmV0dXJuKDAsJGUuanN4cykoXCJmb3JtXCIse25hbWU6XCJmMVwiLGlkOlwiaTAyODFcIixcImRhdGEtdGVzdGlkXCI6XCJyZW1vdGVOZ2NGb3JtXCIsbm9WYWxpZGF0ZTohMCxzcGVsbENoZWNrOlwiZmFsc2VcIixtZXRob2Q6XCJwb3N0XCIsYXV0b0NvbXBsZXRlOlwiZmFsc2VcIixyZWY6dSxhY3Rpb246YixjaGlsZHJlbjpbKDAsJGUuanN4KShSTyx7dGl0bGVJZDpRLHRpdGxlOkl9KSxSJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhpZS5yb3csaWUudGV4dEJvZHkpLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7aWQ6TixjbGFzc05hbWU6aWUud3JhcENvbnRlbnQsY2hpbGRyZW46RH0pfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwic2xrXCIsdmFsdWU6VixcImRhdGEtdGVzdGlkXCI6XCJzbGtcIn0pLCgwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcInVhaWRcIix2YWx1ZTpXLFwiZGF0YS10ZXN0aWRcIjpcInVhaWRcIn0pLCgwLCRlLmpzeCkoa0Esc1Qoe30sSCkpLHAmJigwLCRlLmpzeCkodlMse2NoaWxkcmVuOigwLCRlLmpzeCkoeVMse30pfSksIXAmJmM/cGU6IXAmJm1lLCFwJiZnZSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTppZS53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46IXAmJmMmJkEmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmllLmJ1dHRvbk1hcmdpbixjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTppZS5yb3csY2hpbGRyZW46KDAsJGUuanN4KShGXyx7Y2hpbGRyZW46KDAsJGUuanN4KShVXyx7aXNQcmltYXJ5OiEwLGJ1dHRvbklkOlwicHJpbWFyeUJ1dHRvblwiLGxhYmVsOm0sYXJpYURlc2NyaWJlZEJ5Olksb25DbGljazpffSl9KX0pfSl9KV19KX0sZFQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jaGlsZHJlbixuPWUuZGVzY3JpcHRpb25JZCxyPWUuZGVzY3JpcHRpb25DbGFzcyxvPWUuZW1iZWRkZWRCaW5kaW5ncyxpPWUuZGF0YVRlc3RJZDtpZihvJiZcInN0cmluZ1wiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJFbWJlZGRlZCBiaW5kaW5ncyBtdXN0IGJlIHVzZWQgd2l0aCBhIHN0cmluZ1wiKTt2YXIgYT0oMCxVbS5pbnN0YW5jZS51c2VDb21tb25TdHlsZXMpKCksbD1vJiZcInN0cmluZ1wiPT10eXBlb2YgdD8oMCwkZS5qc3gpKGJ3LHtlbWJlZGRlZEJpbmRpbmdzOm8sdGV4dDp0fSk6dDtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhhLnJvdyxhLnRleHRCb2R5KSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2lkOm4sXCJkYXRhLXRlc3RpZFwiOmksY2xhc3NOYW1lOlNnKGEudGV4dEJsb2NrQm9keSxhLm5vTWFyZ2luVG9wLHIpLGNoaWxkcmVuOmx9KX0pfSxmVD1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLmJvaWxlclBsYXRlVGV4dCxyPSgwLFVtLmluc3RhbmNlLnVzZUNvbW1vblN0eWxlcykoKSxvPVNnKHIucG9zaXRpb25CdXR0b25zLG4/ci5pbnB1dENvbnRhaW5lcldpdGhCb2lsZXJQbGF0ZTpyLmlucHV0Q29udGFpbmVyV2l0aG91dEJvaWxlclBsYXRlKTtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcImlucHV0Q29udGFpbmVyXCIsY2xhc3NOYW1lOm8sY2hpbGRyZW46dH0pfSxwVD1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1mTy5pbnN0YW5jZS5pc1JlbW90ZUNvbm5lY3RTaWdudXA7ci5wcmV2ZW50RGVmYXVsdCgpLG8/ZSgpOnQoVHQuUmVtb3RlQ29ubmVjdENhbmFyeVZhbGlkYXRpb24sbil9LGdUPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbz16UygpO3JldHVybntyZWRpcmVjdDooZT1mTy5pbnN0YW5jZSx0PWUuc2lnbnVwVXJsLG49ZS5zaWdudXBVcmxQb3N0UGFyYW1zLHI9RWgoKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGZ1bmN0aW9uKCl7cih7dHlwZTpTaC5TdWJtaXRQb3N0UmVkaXJlY3QscGF5bG9hZDp7dXJsOnQscG9zdFBhcmFtczpuLHN1Ym1pdEZvcm06ITB9fSl9KSxuYXZpZ2F0b3I6byxvblN1Ym1pdEhhbmRsZXI6cFR9fSxtVD17ZG9jdW1lbnRUaXRsZTpcIlNpZ24gaW4gdG8geW91ciBNaWNyb3NvZnQgYWNjb3VudFwiLHRpdGxlOlwiQXJlIHlvdSB0cnlpbmcgdG8gc2lnbiBpbiB0byB0aGUgezB9IGFwcD9cIixkZXNjcmlwdGlvbjpcIk9ubHkgY29udGludWUgaWYgeW91J3JlIHNpZ25pbmcgaW50byBhIGRldmljZSB0aGF0IGlzIGRpc3BsYXlpbmcgdGhpcyBjb2RlOlwiLGNhbmNlbExhYmVsOlwiQ2FuY2VsXCIsbmV4dExhYmVsOlwiTmV4dFwifSxoVD1mdW5jdGlvbihlKXt2YXIgdD1JdC5kZWZhdWx0Lmluc3RhbmNlLG49dC5hbGxvd0NhbmNlbCxyPXQuY2FuY2VsVXJsLG89VW0uaW5zdGFuY2UudXNlQ29tbW9uU3R5bGVzLGk9Zk8uaW5zdGFuY2UsYT1pLnJlbW90ZUNvbm5lY3RBcHBOYW1lLGw9aS5yZW1vdGVDb25uZWN0VXNlckNvZGUscz1tVC5kb2N1bWVudFRpdGxlLGM9bVQuZGVzY3JpcHRpb24sdT1tVC5jYW5jZWxMYWJlbCxkPW1ULm5leHRMYWJlbCxmPW1ULnRpdGxlLnJlcGxhY2UoXCJ7MH1cIixhKSxwPWUubmV4dFZpZXc7ZmsoVHQuUmVtb3RlQ29ubmVjdENhbmFyeVZhbGlkYXRpb24sRXQuTG9naW4se3Nob3dJZGVudGl0eUJhbm5lcjohMH0pLGFrKHMpO3ZhciBnPW8oKSxtPWdUKCksaD1tLnJlZGlyZWN0LGI9bS5uYXZpZ2F0b3IseT1tLm9uU3VibWl0SGFuZGxlcjtyZXR1cm4oMCwkZS5qc3hzKShcImZvcm1cIix7bmFtZTpcInJlbW90ZUNvbm5lY3RDYW5hcnlWYWxpZGF0aW9uRm9ybVwiLFwiZGF0YS10ZXN0aWRcIjpcInJlbW90ZUNvbm5lY3RDYW5hcnlWYWxpZGF0aW9uRm9ybVwiLG5vVmFsaWRhdGU6ITAsc3BlbGxDaGVjazpcImZhbHNlXCIsbWV0aG9kOlwicG9zdFwiLGF1dG9Db21wbGV0ZTpcImZhbHNlXCIsb25TdWJtaXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHkoaCxiLHAsZSl9LGNoaWxkcmVuOlsoMCwkZS5qc3gpKFJPLHt0aXRsZUlkOlwicmVtb3RlQ29ubmVjdENhbmFyeVZhbGlkYXRpb25UaXRsZVwiLHRpdGxlOmZ9KSwoMCwkZS5qc3gpKGRULHtkZXNjcmlwdGlvbklkOlwicmVtb3RlQ29ubmVjdENhbmFyeVZhbGlkYXRpb25EZXNjcmlwdGlvblwiLGNoaWxkcmVuOmN9KSwoMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcInVzZXJDb2RlXCIsY2xhc3NOYW1lOmcuZGlzcGxheVNpZ24sY2hpbGRyZW46bH0pLCgwLCRlLmpzeCkoZlQse2NoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmcud2luQnV0dG9uUGluQm90dG9tLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmcucm93LGNoaWxkcmVuOigwLCRlLmpzeHMpKEZfLHtjaGlsZHJlbjpbbiYmciYmKDAsJGUuanN4KShVXyx7YnV0dG9uSWQ6XCJjYW5jZWxCdXR0b25cIixsYWJlbDp1LGlzUHJpbWFyeTohMSx0eXBlOlwiYnV0dG9uXCIsYXJpYUxhYmVsOnV9KSwoMCwkZS5qc3gpKFVfLHtidXR0b25JZDpcIm5leHRCdXR0b25cIixsYWJlbDpkLGlzUHJpbWFyeTohMCx0eXBlOlwic3VibWl0XCIsYXJpYUxhYmVsOmR9KV19KX0pfSl9KV19KX07ZnVuY3Rpb24gYlQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHlUKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2JUKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dlQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmJUKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHZUKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgd1Q9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdWJ0aXRsZSxuPWUuZGVzY3JpcHRpb24scj1lLmRlc2NyaXB0aW9uQ2xhc3Msbz1lLmRlc2NyaXB0aW9uSWQsaT1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuZnJpZW5kbHlBcHBOYW1lLGE9Zk8uaW5zdGFuY2UuYnJlYWtCcmFuZGluZ1NpZ25pblN0cmluZyxsPXlUKHlUKHt9LGUpLHt9LHtzdWJ0aXRsZTp0fHwkTyhpLGEscEMpfSk7cmV0dXJuKDAsJGUuanN4cykoJGUuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFJPLHlUKHt9LGwpKSxuJiYoMCwkZS5qc3gpKGRULHtkZXNjcmlwdGlvbklkOm8sZGVzY3JpcHRpb25DbGFzczpyLGNoaWxkcmVuOm59KV19KX0sU1Q9ZnVuY3Rpb24oKXt2YXIgZT1mTy5pbnN0YW5jZSx0PWUuZmVkVXJsLG49ZS5zaWdudXBVcmwscj15XygpLG89JFMoKSxpPXt9O2lmKHIpe2kucmVzZXRQYXNzd29yZExpbms9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuPW5UKHQsMSlbMF07cmV0dXJuKDAsJGUuanN4KSh0Qyx7dGV4dDpuLG9uQ2xpY2s6ZX0pfX0oKGZ1bmN0aW9uKCl7cmV0dXJuIG8ociwhMCl9KSl9cmV0dXJuIHQmJihpLmZlZGVyYXRlZExpbms9aVQodCkpLG4mJihpLnNpZ251cExpbms9aVQobikpLGl9O2Z1bmN0aW9uIFBUKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB4VChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB4VChlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24geFQoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgT1Q9ZnVuY3Rpb24oZSl7dmFyIHQ9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUuZGVidWdJbmZvLmVycm9yQ29kZSxuPSgwLG8udXNlQ29udGV4dCkoQU8pLHI9bi52aWV3U3RhdGUuc2VydmVyRXJyb3JTaG93bixpPW4uZGlzcGF0Y2hTdGF0ZUNoYW5nZSxhPWVfKGUsdCksbD0hIWEmJiFyLHM9U1QoKSxjPVwiXCI7bCYmKGM9KDAsJGUuanN4KShidyx7dGV4dDphLGVtYmVkZGVkQmluZGluZ3M6c30pKTt2YXIgdT1QVCgoMCxvLnVzZVN0YXRlKShsKSwxKVswXSxkPVBUKCgwLG8udXNlU3RhdGUpKGMpLDEpWzBdO3JldHVybiBUUygoZnVuY3Rpb24oKXt1JiZpKHt0eXBlOnVPLlNldFNlcnZlckVycm9yU2hvd24scGF5bG9hZDohMH0pfSkpLHtzaG93U2VydmVyRXJyb3I6dSxzZXJ2ZXJFcnJvcjpkfX0sX1Q9ZnVuY3Rpb24oZSx0KXt2YXIgbj1PVChlKSxyPW4uc2hvd1NlcnZlckVycm9yLG89bi5zZXJ2ZXJFcnJvcjtUUygoZnVuY3Rpb24oKXtyJiZ0KG8pfSkpfSxDVD1mdW5jdGlvbigpe3ZhciBlPSgwLG8udXNlQ29udGV4dCkoWnQpLmRpc3BhdGNoU3RhdGVDaGFuZ2U7cmV0dXJuKDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKHQpe3JldHVybiBlKHt0eXBlOkx0LkhpZGVCYWNrQXJyb3dCdXR0b24scGF5bG9hZDohdH0pfSksW2VdKX0sa1Q9ZnVuY3Rpb24oKXt2YXIgZT1mTy5pbnN0YW5jZSx0PWUuaXNTY29vYmUsbj1lLm9mZmxpbmVBY2NvdW50VmlzaWJsZSxyPWUuaXNPb2JlLG89ZS5wb3N0ZWRGb3JjZVNpZ25JbixpPWUubG9ja1VzZXJuYW1lLGE9ZS5pc092ZXJUaGVTaG91bGRlcjtyZXR1cm4gZnVuY3Rpb24oZSl7SngodCxuLHIsbyxpLGEsZSl9fSxBVD1mdW5jdGlvbihlKXtpZihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTt0LmhyZWY9ZTt2YXIgbj10Lm9yaWdpbjtyZXR1cm4gbnx8KG49XCJcIi5jb25jYXQodC5wcm90b2NvbCxcIi8vXCIpLmNvbmNhdCh0Lmhvc3RuYW1lKS5jb25jYXQodC5wb3J0P1wiOlwiLmNvbmNhdCh0LnBvcnQpOlwiXCIpKSxufXJldHVyblwiXCJ9LFRUPWZ1bmN0aW9uKGUsdCl7dmFyIG49QVQoZSk7cmV0dXJuIEFUKHQpPT09bn07ZnVuY3Rpb24gRVQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGpUKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP0VUKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7SVQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOkVUKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIElUKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBMVChlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uIERUKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe0xUKGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe0xUKGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfX12YXIgTlQ9ZnVuY3Rpb24oKXt2YXIgZT16UygpO3JldHVybiBmdW5jdGlvbigpe3ZhciB0PURUKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KG4scixvKXt2YXIgaTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmk9bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkIT09b30pKSxyKHt0eXBlOnVPLlVwZGF0ZUNyZWRlbnRpYWxzLHBheWxvYWQ6e3Nlc3Npb25zOml9fSksMD09PWkubGVuZ3RoJiZlKFR0LkFjY291bnRQaWNrZXIsVHQuVXNlcm5hbWUpO2Nhc2UgMzpjYXNlXCJlbmRcIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpO3JldHVybiBmdW5jdGlvbihlLG4scil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX07ZnVuY3Rpb24gUlQoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgQlQ9ZnVuY3Rpb24oKXt2YXIgZSx0PWZPLmluc3RhbmNlLG49dC5sb2dvdXRVcmwscj10LmZvcmdldFVybCxpPSgwLG8udXNlQ29udGV4dCkoQU8pLGE9aS52aWV3U3RhdGUuY3JlZGVudGlhbHMsbD1pLmRpc3BhdGNoU3RhdGVDaGFuZ2Uscz0oZT1OVCgpLGZ1bmN0aW9uKCl7dmFyIHQ9RFQocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQobixyLG8pe3ZhciBpLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihpPW4uZGF0YSxhPXIsIShcIm1zYUZvcmdldE1lXCI9PT1pLm1lc3NhZ2VUeXBlJiZpLmZvcmdvdFVzZXJ8fGkuZm9yZ290VXNlcikpe3QubmV4dD03O2JyZWFrfXJldHVybiB0Lm5leHQ9NSxlKHIsbyxpLnNlc3Npb25JZCk7Y2FzZSA1OnQubmV4dD05O2JyZWFrO2Nhc2UgNzphPXIubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PWkuc2Vzc2lvbklkP2pUKGpUKHt9LGUpLHt9LHtpc1NpZ25lZEluOiExfSk6ZX0pKSxvKHt0eXBlOnVPLlVwZGF0ZUNyZWRlbnRpYWxzLHBheWxvYWQ6e3Nlc3Npb25zOmF9fSk7Y2FzZSA5OmNhc2VcImVuZFwiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSx0PShlPXJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciBvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYodCYmKFRUKG4sdC5vcmlnaW4pfHxUVChyLHQub3JpZ2luKSkpe2UubmV4dD0yO2JyZWFrfXJldHVybiBlLmFicnVwdChcInJldHVyblwiKTtjYXNlIDI6aWYoIShvPXQuZGF0YSl8fCFvLnNlc3Npb25JZCl7ZS5uZXh0PTY7YnJlYWt9cmV0dXJuIGUubmV4dD02LHModCxhLnNlc3Npb25zLGwpO2Nhc2UgNjpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSksZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtSVChpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtSVChpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfTtmdW5jdGlvbiBVVChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gRlQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBNVD1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZTtyZXR1cm4gdCYmKHI9KDAsc3QuTmkpKHIsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/VVQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtGVChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6VVQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHtzZXNzaW9uSWQ6ZW5jb2RlVVJJQ29tcG9uZW50KHQpfSxuP3tzaG91bGRGb3JnZXRVc2VyOm4udG9TdHJpbmcoKX06e30pLCEwKSkscn0selQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS51c2VyLG49ZS5yZXF1ZXN0SXNQZW5kaW5nLHI9ZS5zZXRSZXF1ZXN0SXNQZW5kaW5nLGk9ZS5zZXRIYXNFcnJvcixhPWUub25GYWlsdXJlLGw9ZS5vblN1Y2Nlc3Mscz1lLmVycm9yT25QdWJsaWNJZGVudGlmaWVyLGM9dm9pZCAwIT09cyYmcyx1PWUuY2hhbm5lbCxkPWUucHVycG9zZSxmPWUucHJvb2ZUeXBlLHA9ZS5wcm9vZkRhdGEsZz1lLnByb29mQ29uZmlybWF0aW9uLG09ZS5pc0VuY3J5cHRlZCxoPWUuc2Vzc2lvbklkZW50aWZpZXIsYj1lLmNoYWxsZW5nZVNvbHV0aW9uLHk9ZS5waG9uZVJlcE1ldGFkYXRhLHY9ZS5jaGFsbGVuZ2VUeXBlLHc9ZS5jaGFsbGVuZ2VJZCxTPWUudGVsZW1ldHJ5Q2FsbGJhY2ssUD0oMCxvLnVzZUNvbnRleHQpKFplKSx4PVAuYXV0aFN0YXRlLmZsb3dUb2tlblZhbHVlLE89UC5kaXNwYXRjaFN0YXRlQ2hhbmdlLF89KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe08oe3R5cGU6TWUuU2V0Rmxvd1Rva2VuVmFsdWUscGF5bG9hZDplfSl9KSxbT10pLEM9KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuZmxvd1Rva2VuO3QmJl8odCkscighMSksaSYmaSghMCksYSYmYShlKX0pLFtfLHIsaSxhXSksaz0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmZsb3dUb2tlbixvPWUucmVzcG9uc2UsaT0hKG51bGw9PT0odD1vLlNhc1BhcmFtcyl8fHZvaWQgMD09PXR8fCF0LlN1Y2Nlc3MpO2MmJiFpP0Moe2Zsb3dUb2tlbjpuLHJlc3BvbnNlQm9keTpvfSk6KG4mJl8obikscighMSksbCYmbChlKSl9KSxbYyxDLGwsXyxyXSk7cmV0dXJuKDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7bnx8KHIoITApLGVBKHtmbG93VG9rZW46eCx1c2VybmFtZTp0LnVzZXJuYW1lLG9uU3VjY2VzczprLG9uRmFpbHVyZTpDLGNhbmFyeUZsb3dUb2tlbjp4LGNoYW5uZWw6dSxwdXJwb3NlOmQscHJvb2ZUeXBlOmYscHJvb2ZEYXRhOnAscHJvb2ZDb25maXJtYXRpb246Zyxpc0VuY3J5cHRlZDptLHNlc3Npb25JZGVudGlmaWVyOmgsY2hhbGxlbmdlU29sdXRpb246YixjaGFsbGVuZ2VUeXBlOnYsY2hhbGxlbmdlSWQ6dyxwaG9uZVJlcE1ldGFkYXRhOnksdGVsZW1ldHJ5Q2FsbGJhY2s6U30pKX0pLFtuLHIseCx0LnVzZXJuYW1lLGssQyx1LGQsZixwLGcsbSxoLGIsdix3LHksU10pfTtmdW5jdGlvbiBIVChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gVlQoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gVlQoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIFZUKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIFdUPWZ1bmN0aW9uKCl7dmFyIGU9KDAsby51c2VDb250ZXh0KShadCksdD1lLmRpc3BhdGNoU3RhdGVDaGFuZ2Usbj1lLmdsb2JhbFN0YXRlLnVzZXIscj0oMCxvLnVzZUNvbnRleHQpKEFPKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGk9bV8oKSxhPXpTKCksbD1mXygpLHM9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpUdC5Vc2VybmFtZSxpPSgwLG8udXNlQ29udGV4dCkoQU8pLmRpc3BhdGNoU3RhdGVDaGFuZ2UsYT16UygpLGw9SFQoKDAsby51c2VTdGF0ZSkoITEpLDIpLHM9bFswXSxjPWxbMV0sdT1mdW5jdGlvbihlKXtpKHt0eXBlOnVPLlNldFJlbW90ZUxvZ2luUG9sbGluZ1BhcmFtcyxwYXlsb2FkOntvbmVUaW1lQ29kZTplLnVzZXJDb2RlLGRldmljZUlkZW50aWZpZXI6ZS5zZXNzaW9uTG9va3VwS2V5fX0pLGEocixUdC5SZW1vdGVMb2dpblBvbGxpbmcpfSxkPXtjaGFubmVsOmUscHVycG9zZTp0LHByb29mVHlwZTpKUC5EZXZpY2VJZCxzZXRSZXF1ZXN0SXNQZW5kaW5nOmMscmVxdWVzdElzUGVuZGluZzpzLHVzZXI6bixvblN1Y2Nlc3M6dX07cmV0dXJuIHpUKGQpfShudWxsLHJ0Lnhib3hSZW1vdGVDb25uZWN0LG4pO3JldHVybiBmdW5jdGlvbihlLG4sbyxjLHUpe3N3aXRjaChuLmFjdGlvbil7Y2FzZSBteC5TaG93RXJyb3I6bi5lcnJvciYmdShuLmVycm9yKTticmVhaztjYXNlIG14LlN3aXRjaFZpZXc6dmFyIGQsZixwLGcsbTtpZihuLnNoYXJlZERhdGEpdCh7dHlwZTpMdC5TZXRVc2VyLHBheWxvYWQ6e3VzZXJuYW1lOm8sZGlzcGxheVVzZXJuYW1lOmN9fSkscih7dHlwZTp1Ty5TZXRMb2NhdGlvbixwYXlsb2FkOm4uc2hhcmVkRGF0YS5sb2NhdGlvbn0pLHIoe3R5cGU6dU8uU2V0UmVtb3RlTmdjUGFyYW1zLHBheWxvYWQ6bi5zaGFyZWREYXRhLnJlbW90ZU5nY1BhcmFtc3x8a08ucmVtb3RlTmdjUGFyYW1zfSksbnVsbCE9PShkPW4uc2hhcmVkRGF0YS5maWRvUGFyYW1zKSYmdm9pZCAwIT09ZCYmZC5BbGxvd0xpc3QmJnIoe3R5cGU6dU8uU2V0Rmlkb0FsbG93TGlzdCxwYXlsb2FkOm4uc2hhcmVkRGF0YS5maWRvUGFyYW1zLkFsbG93TGlzdH0pLHIoe3R5cGU6dU8uVXBkYXRlQ3JlZGVudGlhbHMscGF5bG9hZDp7cHJlZmVycmVkQ3JlZGVudGlhbDpuLnNoYXJlZERhdGEucHJlZmVycmVkQ3JlZGVudGlhbCxhdmFpbGFibGVDcmVkZW50aWFsczpuLnNoYXJlZERhdGEuYXZhaWxhYmxlQ3JlZGVudGlhbHMsb3RjQ3JlZGVudGlhbDpuLnNoYXJlZERhdGEub3RjQ3JlZGVudGlhbCxldmljdGVkQ3JlZGVudGlhbHM6bi5zaGFyZWREYXRhLmV2aWN0ZWRDcmVkZW50aWFscyx1c2VFdmljdGVkQ3JlZGVudGlhbHM6bi5zaGFyZWREYXRhLnVzZUV2aWN0ZWRDcmVkZW50aWFsc319KSxyKHt0eXBlOnVPLlNldElkcFJlZGlyZWN0RGF0YSxwYXlsb2FkOnt1cmw6bnVsbD09PShmPW4udmlld1BhcmFtcyl8fHZvaWQgMD09PWY/dm9pZCAwOmYuaWRwUmVkaXJlY3RVcmwscG9zdFBhcmFtczpudWxsPT09KHA9bi52aWV3UGFyYW1zKXx8dm9pZCAwPT09cD92b2lkIDA6cC5pZHBSZWRpcmVjdFBvc3RQYXJhbXMscHJvdmlkZXI6bnVsbD09PShnPW4udmlld1BhcmFtcyl8fHZvaWQgMD09PWc/dm9pZCAwOmcuaWRwUmVkaXJlY3RQcm92aWRlcn19KSxyKHt0eXBlOnVPLlNldEhhc0lkcERpc2FtYmlnRXJyb3IscGF5bG9hZDoobnVsbD09PShtPW4udmlld1BhcmFtcyl8fHZvaWQgMD09PW0/dm9pZCAwOm0uaGFzSWRwRGlzYW1iaWdFcnJvcil8fCExfSkscih7dHlwZTp1Ty5TZXRSZW1vdGVMb2dpblBvbGxpbmdQYXJhbXMscGF5bG9hZDpuLnNoYXJlZERhdGEucmVtb3RlTG9naW5Qb2xsaW5nUGFyYW1zfHxrTy5yZW1vdGVMb2dpblBvbGxpbmdQYXJhbXN9KTtpZihuLnZpZXdJZD09PVR0LkZpZG8pe3ZhciBoLGIseT1udWxsPT09KGg9bi5zaGFyZWREYXRhKXx8dm9pZCAwPT09aHx8bnVsbD09PShiPWguZmlkb1BhcmFtcyl8fHZvaWQgMD09PWI/dm9pZCAwOmIuQWxsb3dMaXN0LHY9e3VzZXJuYW1lOm99O3kmJih2LmNyZWRlbnRpYWxzSnNvbj15KSxpKHYpfWVsc2Ugbi52aWV3SWQ9PT1UdC5SZW1vdGVMb2dpblBvbGxpbmc/cygpOmEoZSxBdyhuLnZpZXdJZCkpO2JyZWFrO2Nhc2UgbXguUmVkaXJlY3Q6bChuLnJlZGlyZWN0VXJsfHxcIlwiLG4ucmVkaXJlY3RQb3N0UGFyYW1zLG4uaXNJZHBSZWRpcmVjdCl9fX07ZnVuY3Rpb24gR1QoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgJFQ9ZnVuY3Rpb24oKXt2YXIgZT0oMCxvLnVzZUNvbnRleHQpKFplKS5hdXRoU3RhdGUuZmxvd1Rva2VuVmFsdWUsdD1JdC5kZWZhdWx0Lmluc3RhbmNlLnJlc2V0UGFzc3dvcmRVcmwsbj1mTy5pbnN0YW5jZSxyPW4uYWxsb3dlZElkZW50aXRpZXMsaT1uLmlzRmlkb1N1cHBvcnRlZEhpbnQsYT1uLmdjdEZlZGVyYXRpb25GbGFncyxsPW4uaXNGZWRlcmF0aW9uRGlzYWJsZWQscz1uLmlzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZCxjPW4uaXNSZW1vdGVOR0NTdXBwb3J0ZWQsdT1uLmlzT3RjTG9naW5EaXNhYmxlZCxkPW4uZ2V0Q3JlZGVudGlhbFR5cGVVcmwsZj1uLnBvc3RQcm9vZlR5cGUscD1uLnNob3dTaWdudXAsZz1uLnNpZ251cFVybCxtPW4uZmVkUXMsaD1uLmNoYW5nZVBhc3N3b3JkVXJsLGI9bi5pbXByb3ZlUGhvbmVEaXNhbWJpZ3VhdGlvbix5PW4uc2lnbnVwVXJsUG9zdFBhcmFtcyx2PW4udXNlUmVzZXRQYXNzd29yZFVybEZvclBhc3N3b3JkUmVxdWlyZWRFcnJvcix3PW4udXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbCxTPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZS5vdGhlcklkcFJlZGlyZWN0VXJsLFA9RGkoaSx3KSx4PVdUKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4sbz0obj1yZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbihvLGkpe3ZhciB3O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLE54KHthbGxvd2VkSWRlbnRpdGllczpyLHVuc2FmZVVzZXJuYW1lOm8sZmxvd1Rva2VuOmUsaXNGaWRvU3VwcG9ydGVkOlAsY291bnRyeTpcIlwiLGdjdEZlZGVyYXRpb25GbGFnczphfHwwLGlzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZDpzLGlzRmVkZXJhdGlvbkRpc2FibGVkOmwsaXNSZW1vdGVOR0NTdXBwb3J0ZWQ6YyxvdGNsb2dpbmRpc2FsbG93ZWQ6dSxnZXRDcmVkZW50aWFsVHlwZVVybDpkLG90aGVySWRwUmVkaXJlY3RVcmw6UyxmZWRRczptfSx7Y2hhbmdlUGFzc3dvcmRVcmw6aCxpbXByb3ZlUGhvbmVEaXNhbWJpZ3VhdGlvbjpiLHBvc3RQcm9vZlR5cGU6ZixyZXNldFBhc3N3b3JkVXJsOnQsc2hvd1NpZ251cDpwLHNpZ251cFVybDpnLHNpZ251cFVybFBvc3RQYXJhbXM6eSx1c2VSZXNldFBhc3N3b3JkVXJsRm9yUGFzc3dvcmRSZXF1aXJlZEVycm9yOnZ9LHtjaGVja0N1cnJlbnRJZHBPbmx5OiEwfSk7Y2FzZSAyOnc9bi5zZW50LHgoVHQuQWNjb3VudFBpY2tlcix3LG54KG8pLG8saSk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPW4uYXBwbHkoZSx0KTtmdW5jdGlvbiBhKGUpe0dUKGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe0dUKGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8uYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX07ZnVuY3Rpb24gS1QoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHFUKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHFUKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBxVChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFFUKGUsdCxuLHIsbyxpLGEpe3RyeXt2YXIgbD1lW2ldKGEpLHM9bC52YWx1ZX1jYXRjaChjKXtyZXR1cm4gdm9pZCBuKGMpfWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gWFQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGEoZSl7UVQoaSxyLG8sYSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7UVQoaSxyLG8sYSxsLFwidGhyb3dcIixlKX1hKHZvaWQgMCl9KSl9fXZhciBZVD1mdW5jdGlvbigpe3ZhciBlPWZPLmluc3RhbmNlLHQ9ZS5sb2dvdXRVcmwsbj1lLmZvcmdldFVybCxyPWUudXNlRm9yZ2V0VXNlcklmcmFtZSxpPSEwLGE9XCJcIixsPSgwLG8udXNlQ29udGV4dCkoQU8pLHM9bC52aWV3U3RhdGUuY3JlZGVudGlhbHMsYz1sLmRpc3BhdGNoU3RhdGVDaGFuZ2UsdT1mdW5jdGlvbigpe3ZhciBlPU5UKCksdD1mdW5jdGlvbigpe3ZhciB0PVhUKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KG4scixvLGksYSxsLHMpe3ZhciBjLHU7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpjPWEuZm9yZ2V0RmFpbHVyZUVycm9yVGV4dCx1PSgwLHN0Lk5pKShuLHtzZXNzaW9uSWQ6ZW5jb2RlVVJJQ29tcG9uZW50KHN8fFwiXCIpfSwhMCksKDAsYlMuVTIpKHUse2hlYWRlcnM6e1wiQ29udGVudC10eXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PXV0Zi04XCJ9LHRpbWVvdXQ6M2U0fSkudGhlbigoZnVuY3Rpb24oKXtlKHIsbyxzKX0pLChmdW5jdGlvbigpe2koKDAsc3QuWjcpKGMsbHx8XCJcIikpfSkpO2Nhc2UgMzpjYXNlXCJlbmRcIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpO3JldHVybiBmdW5jdGlvbihlLG4scixvLGksYSxsKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO3JldHVybiB0fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPVhUKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKG8sbCxkLGYscCxnKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKFwiZm9yZ2V0XCIhPT1vKXtlLm5leHQ9MTA7YnJlYWt9aWYocil7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGk9ITEsZS5uZXh0PTUsdShuLHMuc2Vzc2lvbnMsYyxsLGYsZyxwKTtjYXNlIDU6ZS5uZXh0PTg7YnJlYWs7Y2FzZSA3OmE9TVQobixwKTtjYXNlIDg6ZS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6XCJzaWdub3V0XCI9PT1vP2E9TVQodCxwKTpcInNpZ25vdXRGb3JnZXRcIj09PW8mJihhPU1UKHQscCwhMCkpO2Nhc2UgMTE6aSYmZChhKTtjYXNlIDEyOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbixyLG8saSxhKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSxaVD17YWNjb3VudFBpY2tlclRpdGxlOlwiUGljayBhbiBhY2NvdW50XCIsYWxyZWFkeVNpZ25lZEluVGV4dDpcIlNpZ25lZCBpblwiLHVzZUFub3RoZXJBY2NvdW50VGV4dDpcIlVzZSBhbm90aGVyIGFjY291bnRcIixzaWduT3V0VGV4dDpcIlNpZ24gb3V0XCIsc2lnbk91dEFuZEZvcmdldFRleHQ6XCJTaWduIG91dCBhbmQgZm9yZ2V0XCIsZm9yZ2V0VGV4dDpcIkZvcmdldFwiLHNpZ25JbldpdGhBY2NvdW50QXJpYUxhYmVsOlwiU2lnbiBpbiB3aXRoIHswfVwiLGZvcmdldEZhaWx1cmVFcnJvclRleHQ6XCJUaGVyZSB3YXMgYW4gaXNzdWUgZm9yZ2V0dGluZyB7MH0uIFBsZWFzZSB0cnkgYWdhaW4uXCIsb3B0aW9uc01lbnVBcmlhTGFiZWw6XCJPcGVuIG1lbnVcIn0sSlQ9ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLmFsbG93Q2FuY2VsLHQ9VW0uaW5zdGFuY2Usbj10LnVzZUNvbW1vblN0eWxlcyxyPXQudXNlU3RhdGljQ29tbW9uU3R5bGVzLGk9dC51c2VUaWxlU3R5bGVzLGE9KDAsby51c2VDb250ZXh0KShBTykudmlld1N0YXRlLmNyZWRlbnRpYWxzLGw9WlQuYWNjb3VudFBpY2tlclRpdGxlO2ZrKFR0LkFjY291bnRQaWNrZXIsRXQuTG9naW4se3Nob3dJZGVudGl0eUJhbm5lcjohMX0pLGZ1bmN0aW9uKCl7dmFyIGU9IUhTKCksdD1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcixuPUNUKCkscj1rVCgpO1RTKChmdW5jdGlvbigpe2UmJnQ9PT1jdC5vRi5XaW4xMU9vYmVGYWJyaWMmJnIoKGZ1bmN0aW9uKGUpe24oZSl9KSl9KSl9KCkscigpO3ZhciBzPW4oKSxjPWkoKSx1PU9fKCksZD1CVCgpO1RTKChmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixkKSxmdW5jdGlvbigpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGQpfX0pKTt2YXIgZj1mdW5jdGlvbihlLHQpe3ZhciBuLHI9Zk8uaW5zdGFuY2UsaT1yLnByb3RvY29sUmVmcmVzaFVybCxhPXIudXBncmFkZVJlZGlyZWN0V2l0aFVzZXJuYW1lVXJsLGw9dC5hbHJlYWR5U2lnbmVkSW5UZXh0LHM9dC51c2VBbm90aGVyQWNjb3VudFRleHQsYz10LnNpZ25PdXRUZXh0LHU9dC5zaWduT3V0QW5kRm9yZ2V0VGV4dCxkPXQuZm9yZ2V0VGV4dCxmPXQuc2lnbkluV2l0aEFjY291bnRBcmlhTGFiZWwscD10Lm9wdGlvbnNNZW51QXJpYUxhYmVsLGc9elMoKSxtPSRTKCksaD0kVCgpLGI9WVQoKSx5PUtUKCgwLG8udXNlU3RhdGUpKFwiXCIpLDIpLHY9eVswXSx3PXlbMV0sUz1LVCgoMCxvLnVzZVN0YXRlKShcIlwiKSwyKSxQPVNbMF0seD1TWzFdLE89KDAsby51c2VDb250ZXh0KShadCkuZGlzcGF0Y2hTdGF0ZUNoYW5nZSxfPWZ1bmN0aW9uKGUpe3coZSl9LEM9W107cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXt2YXIgbyxzLGcseSx2PVwiXCI7ZS5pc1NpZ25lZEluJiZlLmlkPyh2PSgwLHN0Lk5pKShpLHtzZXNzaW9uaWQ6ZS5pZH0pLG49ZnVuY3Rpb24oKXtyZXR1cm4gbSh2LCEwKX0pOiFlLmlzU2lnbmVkSW4mJmE/KHY9YSxuPWZ1bmN0aW9uKCl7cmV0dXJuIG0odiwhMCl9KTpuPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIGgoKG51bGw9PT0odD1lLm5hbWUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnVuc2FmZVVuZXNjYXBlZFN0cmluZyl8fFwiXCIsXyl9LEMucHVzaCh7bWFpblRleHQ6KGUuaXNTaWduZWRJbj9udWxsPT09KG89ZS5mdWxsTmFtZSl8fHZvaWQgMD09PW8/dm9pZCAwOm8udW5zYWZlVW5lc2NhcGVkU3RyaW5nOm51bGw9PT0ocz1lLmRpc3BsYXlOYW1lKXx8dm9pZCAwPT09cz92b2lkIDA6cy51bnNhZmVVbmVzY2FwZWRTdHJpbmcpfHxcIlwiLGhlbHBUZXh0OmUuaXNTaWduZWRJbiYmZS5mdWxsTmFtZT9udWxsPT09KGc9ZS5kaXNwbGF5TmFtZSl8fHZvaWQgMD09PWc/dm9pZCAwOmcudW5zYWZlVW5lc2NhcGVkU3RyaW5nOlwiXCIsc3ViVGV4dDplLmlzU2lnbmVkSW4/bDpcIlwiLGltYWdlOnt1cmxzOmZifSxvcHRpb25zTWVudUJ1dHRvbjp7YXJpYUxhYmVsOnAsaWNvbjp7dXJsczpwYn0sbWVudUl0ZW1MaXN0Olt7aXRlbUlkOlwiRm9yZ2V0TGlua1wiLGl0ZW1UZXh0OmQsb25DbGljazpmdW5jdGlvbigpe3ZhciBuO3JldHVybiBiKFwiZm9yZ2V0XCIsdyx4LHQsZS5pZCxudWxsPT09KG49ZS5kaXNwbGF5TmFtZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4udW5zYWZlVW5lc2NhcGVkU3RyaW5nKX0saXNWaXNpYmxlOiFlLmlzU2lnbmVkSW4mJnZvaWQgMCE9PWUuaWQsaGFzRm9jdXM6IWUuaXNTaWduZWRJbn0se2l0ZW1JZDpcIlNpZ25PdXRMaW5rXCIsaXRlbVRleHQ6YyxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGIoXCJzaWdub3V0XCIsdyx4LHQsZS5pZCl9LGlzVmlzaWJsZTplLmlzU2lnbmVkSW4mJnZvaWQgMCE9PWUuaWQsaGFzRm9jdXM6ZS5pc1NpZ25lZElufSx7aXRlbUlkOlwiU2lnbk91dEFuZEZvcmdldExpbmtcIixpdGVtVGV4dDp1LG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYihcInNpZ25vdXRGb3JnZXRcIix3LHgsdCxlLmlkKX0saXNWaXNpYmxlOmUuaXNTaWduZWRJbn1dLG1lbnVUZXN0SWQ6XCJtZW51XCIuY29uY2F0KHIpfSxhcmlhTGFiZWw6KDAsc3QuWjcpKGYsKG51bGw9PT0oeT1lLmZ1bGxOYW1lKXx8dm9pZCAwPT09eT92b2lkIDA6eS51bnNhZmVVbmVzY2FwZWRTdHJpbmcpfHxcIlwiKSxvbkNsaWNrOm59KX0pKSxDLnB1c2goe21haW5UZXh0OnMsaW1hZ2U6e3VybHM6ZGJ9LGFyaWFMYWJlbDpzLG9uQ2xpY2s6ZnVuY3Rpb24oKXtPKHt0eXBlOkx0LlNldFVzZXIscGF5bG9hZDp7dXNlcm5hbWU6e30sZGlzcGxheVVzZXJuYW1lOnt9fX0pLGcoVHQuQWNjb3VudFBpY2tlcixUdC5Vc2VybmFtZSl9fSkse2FjY291bnRQaWNrZXJMaXN0OkMsZXJyb3I6dixzZXRFcnJvcjp3LGlGcmFtZVNvdXJjZTpQfX0oYS5zZXNzaW9ucyxaVCkscD1mLmFjY291bnRQaWNrZXJMaXN0LGc9Zi5lcnJvcixtPWYuc2V0RXJyb3IsaD1mLmlGcmFtZVNvdXJjZTtyZXR1cm4gX1QocEMsbSksKDAsJGUuanN4cykoXCJkaXZcIix7Y2hpbGRyZW46WygwLCRlLmpzeCkod1Qse3RpdGxlSWQ6XCJhY2NvdW50UGlja2VyVGl0bGVcIix0aXRsZTpsfSksZyYmKDAsJGUuanN4KShNayx7aWQ6XCJhY2NvdW50UGlja2VyRXJyb3JcIixjbGFzc05hbWU6U2coYy50aWxlRXJyb3Iscy5hbGVydEVycm9yKSxjaGlsZHJlbjpnfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6ZT9zLnBvc2l0aW9uQnV0dG9uc1dpdGhCb3R0b21NYXJnaW46dm9pZCAwLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnMucm93LGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnMuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkoQ2sse2FyaWFMYWJlbGxlZEJ5OmwsYXJpYURlc2NyaWJlZEJ5OmwsdGlsZUxpc3Q6cH0pfSl9KX0pLGUmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnMucm93LGNoaWxkcmVuOigwLCRlLmpzeCkoRl8se2N1c3RvbUNzczpzLm5vTWFyZ2luQm90dG9tLGNoaWxkcmVuOigwLCRlLmpzeCkoVV8se2J1dHRvbklkOlwiYmFja0J1dHRvblwiLGxhYmVsOlwiQmFja1wiLGlzUHJpbWFyeTohMSxvbkNsaWNrOnV9KX0pfSksaCYmKDAsJGUuanN4KShcImlmcmFtZVwiLHtzdHlsZTp7dmlzaWJpbGl0eTpcImhpZGRlblwiLHdpZHRoOlwiMHB4XCIsaGVpZ2h0OlwiMHB4XCIsZGlzcGxheTpcIm5vbmVcIn0sc3JjOmgsdGl0bGU6XCJhY2NvdW50UGlja2VySWZyYW1lXCIsaWQ6XCJhY2NvdW50UGlja2VySWZyYW1lSWRcIixcImRhdGEtdGVzdGlkXCI6XCJhY2NvdW50UGlja2VySWZyYW1lVGVzdElkXCJ9KV19KX07ZnVuY3Rpb24gZUUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHRFKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHRFKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB0RShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBuRT1mdW5jdGlvbihlKXt2YXIgdD1lLmxpc3RJdGVtcyxuPWUuY2xhc3NOYW1lLHI9ZS5pc09yZGVyZWQsbz12b2lkIDAhPT1yJiZyLGk9T2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWVFKGUsMiksbj10WzBdLHI9dFsxXTtyZXR1cm4oMCwkZS5qc3gpKFwibGlcIix7aWQ6bixjaGlsZHJlbjpyfSxuKX0pKTtyZXR1cm4gbz8oMCwkZS5qc3gpKFwib2xcIix7Y2xhc3NOYW1lOm4sY2hpbGRyZW46aS5sZW5ndGg+MD9pOm51bGx9KTooMCwkZS5qc3gpKFwidWxcIix7Y2xhc3NOYW1lOm4sY2hpbGRyZW46aS5sZW5ndGg+MD9pOm51bGx9KX07ZnVuY3Rpb24gckUoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIG9FKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3JFKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aUUoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnJFKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGlFKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgYUU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5oaWRkZW5Gb3JtSW5wdXRzO3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwiaGlkZGVuSW5wdXRzXCIsY2hpbGRyZW46dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybigwLG8uY3JlYXRlRWxlbWVudCkoXCJpbnB1dFwiLG9FKG9FKHt9LGUpLHt9LHtrZXk6ZS5pZHx8ZS5uYW1lLHR5cGU6XCJoaWRkZW5cIn0pKX0pKX0pfSxsRT1mdW5jdGlvbihlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5mb3JtLHI9bi5uYW1lLG89bi5kYXRhVGVzdElkLGk9bi5tZXRob2QsYT1uLm9uU3VibWl0LGw9bi5hY3Rpb24scz1uLmhpZGRlbkZvcm1JbnB1dHMsYz1uLnJlZix1PW4uY2xhc3NOYW1lO3JldHVybigwLCRlLmpzeHMpKFwiZm9ybVwiLHtuYW1lOnIsXCJkYXRhLXRlc3RpZFwiOm8sbm9WYWxpZGF0ZTohMCxzcGVsbENoZWNrOlwiZmFsc2VcIixtZXRob2Q6aXx8XCJwb3N0XCIsYXV0b0NvbXBsZXRlOlwiZmFsc2VcIixvblN1Ym1pdDphLGFjdGlvbjpsLHRhcmdldDpcIl90b3BcIixyZWY6YyxjbGFzc05hbWU6dSxjaGlsZHJlbjpbdCxzJiYoMCwkZS5qc3gpKGFFLHtoaWRkZW5Gb3JtSW5wdXRzOnN9KV19KX07ZnVuY3Rpb24gc0UoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGNFKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3NFKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dUUoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnNFKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHVFKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgZEU9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmNoaWxkcmVuLHI9ZS5wcmltYXJ5QnV0dG9uLGk9ZS5zZWNvbmRhcnlCdXR0b24sYT1lLnRpdGxlLGw9ZS5kZXNjcmlwdGlvbixzPWUuaW1hZ2UsYz1lLmZvcm0sdT1lLnJvd0NsYXNzTmFtZSxkPXZvaWQgMD09PXU/XCJcIjp1LGY9ZS5hcHBseUFyaWFMaXZlLHA9dm9pZCAwIT09ZiYmZixnPSgwLFVtLmluc3RhbmNlLnVzZUNvbW1vblN0eWxlcykoKTtsJiYodD1sIGluc3RhbmNlb2YgQXJyYXk/bDpbbF0pO3ZhciBtPSgwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbcCYmYSYmKDAsJGUuanN4KShcImRpdlwiLHtcImFyaWEtbGl2ZVwiOlwicG9saXRlXCIsXCJkYXRhLXRlc3RpZFwiOlwidGl0bGVBcmlhTGl2ZVwiLGNoaWxkcmVuOigwLCRlLmpzeCkoUk8sY0Uoe30sYSkpfSksIXAmJmEmJigwLCRlLmpzeCkoUk8sY0Uoe30sYSkpLHMmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmcuaW1hZ2VDZW50ZXIsY2hpbGRyZW46KDAsJGUuanN4KShTYixjRSh7fSxzKSl9KSx0JiZ0Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsby5jcmVhdGVFbGVtZW50KShkVCxjRShjRSh7fSxlKSx7fSx7a2V5OmUuZGVzY3JpcHRpb24udG9TdHJpbmcoKX0pLGUuZGVzY3JpcHRpb24pfSkpLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKGcucm93LGQpLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmcudGV4dEJsb2NrQm9keSxjaGlsZHJlbjpufSl9KSwocnx8aSkmJigwLCRlLmpzeCkoZlQse2NoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmcud2luQnV0dG9uUGluQm90dG9tLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmcucm93LGNoaWxkcmVuOigwLCRlLmpzeHMpKEZfLHtjaGlsZHJlbjpbaSYmKDAsJGUuanN4KShVXyxjRSh7fSxpKSksciYmKDAsJGUuanN4KShVXyxjRSh7aXNQcmltYXJ5OiEwfSxyKSldfSl9KX0pfSldfSk7cmV0dXJuIGM/KDAsJGUuanN4KShsRSx7Zm9ybTpjLGNoaWxkcmVuOm19KTptfTtmdW5jdGlvbiBmRShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gcEUoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gcEUoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHBFKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIGdFLG1FPXt0aXRsZTpcIkxldCdzIHNldCB1cCB5b3VyIGNoaWxkJ3MgTWljcm9zb2Z0IGFjY291bnRcIixkZXNjcmlwdGlvbjpcIk9uY2UgeW91IGhhdmUgc2V0IHVwIHRoZWlyIGFjY291bnQsIHlvdXIgY2hpbGQgd2lsbCBiZSBhZGRlZCB0byB5b3VyIGZhbWlseSBncm91cC5cIixsaXN0VGl0bGU6XCJCZW5lZml0cyBvZiBhIEZhbWlseSBncm91cFwiLGNoaWxkQWNjb3VudERlc2NyaXB0aW9uOlwiQSBjaGlsZCBhY2NvdW50IGVuYWJsZXMgeW91IHRvIGVuZm9yY2UgcGFyZW50YWwgY29udHJvbHMgYW5kIGltcG9zZSB1c2FnZSBsaW1pdHMgZm9yIHRoaXMgZGV2aWNlIGZvciByZWFzb25zIG9mIHByaXZhY3kgYW5kIHNhZmV0eS5cIixhY2NvdW50TWFuYWdlbWVudEJlbmVmaXQ6XCJNYW5hZ2UgdGhlaXIgYWNjb3VudCBhbmQgcHJpdmFjeSBzZXR0aW5ncy5cIixzYWZldHlCZW5lZml0OlwiU2V0IHVwIGRpZ2l0YWwgc2FmZXR5IGZlYXR1cmVzIGxpa2UgY29udGVudCBmaWx0ZXJzIGFuZCBzY3JlZW4gdGltZSBhY3Jvc3MgV2luZG93cywgWGJveCwgYW5kIEFuZHJvaWQgZGV2aWNlcy5cIixyZXZpZXdCZW5lZml0OlwiUmV2aWV3IGFuZCBhcHByb3ZlIGZyaWVuZHMgdGhleSdyZSBhbGxvd2VkIHRvIGdhbWUgd2l0aCBvbmxpbmUuXCJ9LGhFPWZ1bmN0aW9uKCl7dmFyIGU9VW0uaW5zdGFuY2UsdD1lLnVzZUNvbW1vblN0eWxlcyxuPWUudXNlU3RhdGljQ29tbW9uU3R5bGVzLHI9ZS51c2VCZW5lZml0c1ZpZXdTdHlsZXMsaT1mdW5jdGlvbigpe3ZhciBlPUl0LmRlZmF1bHQuaW5zdGFuY2UsdD1lLmFjdGl2ZUZsYXZvcixuPWUudGVsZW1ldHJ5LHI9SnQoKSxpPXIuZ2xvYmFsU3RhdGUsYT1pLmFjdGl2ZVZpZXcsbD1pLmFjdGl2ZUZsb3cscz1pLnVzZXJGbG93VHlwZSxjPXIuZGlzcGF0Y2hTdGF0ZUNoYW5nZSx1PVJ0KG4se2FjdGl2ZVZpZXc6YSxhY3RpdmVGbG93OmwsYWN0aXZlRmxhdm9yOnR9KS5sb2dVc2VyQWN0aW9uLGQ9elMoKSxmPWZFKCgwLG8udXNlU3RhdGUpKCEwKSwyKSxwPWZbMF0sZz1mWzFdO3JldHVybiBUUygoZnVuY3Rpb24oKXtzPT09Y3QuWTYuQ2hpbGQmJmcoITEpfSkpLHtvbkNsaWNrTmV4dEhhbmRsZXI6ZnVuY3Rpb24oKXt1KHthY3Rpb25OYW1lOk1TLkJlbmVmaXRzVmlld05leHRDbGlja2VkfSksYyh7dHlwZTpMdC5TZXRVc2VyRmxvd1R5cGUscGF5bG9hZDpjdC5ZNi5QYXJlbnQudG9TdHJpbmcoKX0pLGMoe3R5cGU6THQuQmVnaW5OYXZpZ2F0ZSxzb3VyY2U6VHQuQmVuZWZpdHMsZGVzdGluYXRpb246VHQuVXNlcm5hbWUsZGlzcGxheU9wdGlvbnM6e25hdmlnYXRpb25EaXJlY3Rpb246XCJmb3J3YXJkXCJ9fSksZChUdC5CZW5lZml0cyxBdyhUdC5Vc2VybmFtZSkpfSxvbkNsaWNrQmFja0hhbmRsZXI6ZnVuY3Rpb24oKXt1KHthY3Rpb25OYW1lOk1TLkJlbmVmaXRzVmlld0JhY2tDbGlja2VkfSksYyh7dHlwZTpMdC5TZXRVc2VyRmxvd1R5cGUscGF5bG9hZDpjdC5ZNi5Vbmtub3duLnRvU3RyaW5nKCl9KSxkKFR0LkJlbmVmaXRzLC0xKX0sc2hvd0JhY2tCdXR0b246cH19KCksYT1pLm9uQ2xpY2tOZXh0SGFuZGxlcixsPWkub25DbGlja0JhY2tIYW5kbGVyLHM9aS5zaG93QmFja0J1dHRvbixjPW1FLnRpdGxlLHU9bUUuZGVzY3JpcHRpb24sZD1tRS5saXN0VGl0bGUsZj1tRS5jaGlsZEFjY291bnREZXNjcmlwdGlvbixwPW1FLmFjY291bnRNYW5hZ2VtZW50QmVuZWZpdCxnPW1FLnNhZmV0eUJlbmVmaXQsbT1tRS5yZXZpZXdCZW5lZml0O24oKTt2YXIgaD10KCksYj1yKCkseT1IUygpO2ZrKFR0LkJlbmVmaXRzLEV0LkxvZ2luLHtzaG93QmFja0J1dHRvbk9uQWN0aXZlVmlldzp5LHNob3dJZGVudGl0eUJhbm5lcjohMX0pLGFrKGMpO3ZhciB2PXt9O3JldHVyblt7dXJsczpnYixkZXNjcmlwdGlvbjpwfSx7dXJsczpiYixkZXNjcmlwdGlvbjpnfSx7dXJsczphYixkZXNjcmlwdGlvbjptfV0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXt2W1wiYmVuZWZpdFwiLmNvbmNhdCh0KV09KDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOmIuY2hpbGRBY2NvdW50QmVuZWZpdCxjaGlsZHJlbjpbKDAsJGUuanN4KShTYix7dXJsczplLnVybHMsY2xhc3NOYW1lOmIuYmVuZWZpdEljb24sZGF0YVRlc3RJZDpcImJlbmVmaXRJY29uXCIuY29uY2F0KHQpfSksKDAsJGUuanN4KShkVCx7ZGVzY3JpcHRpb25DbGFzczpiLmJlbmVmaXREZXNjcmlwdGlvbixjaGlsZHJlbjplLmRlc2NyaXB0aW9ufSldfSl9KSksKDAsJGUuanN4KShkRSx7dGl0bGU6e3RpdGxlOmMsdGl0bGVJZDpcImJlbmVmaXRzVGl0bGVcIn0scHJpbWFyeUJ1dHRvbjp7bGFiZWw6cEMubmV4dEJ1dHRvbix0eXBlOlwic3VibWl0XCIsb25DbGljazphLGhhc0ZvY3VzOiEwfSxzZWNvbmRhcnlCdXR0b246cz97bGFiZWw6cEMuYmFja0J1dHRvbix0eXBlOlwiYnV0dG9uXCIsb25DbGljazpsfTp2b2lkIDAsaW1hZ2U6e3VybHM6Y2IsZGF0YVRlc3RJZDpcInBlb3BsZVNoaWVsZFwiLHJvbGU6XCJwcmVzZW50YXRpb25cIn0sZGVzY3JpcHRpb246e2Rlc2NyaXB0aW9uOnUsZGVzY3JpcHRpb25JZDpcImFkZFRvRmFtaWx5R3JvdXBcIn0sYXBwbHlBcmlhTGl2ZTohMCxjaGlsZHJlbjooMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6Yi5iZW5lZml0cyxpZDpcIkJlbmVmaXRzTGlzdFwiLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFJPLHt0aXRsZTpkLHRpdGxlSWQ6XCJsaXN0VGl0bGVcIn0pLCgwLCRlLmpzeCkobkUse2NsYXNzTmFtZTpiLmxpc3RCZW5lZml0cyxsaXN0SXRlbXM6dn0pLCgwLCRlLmpzeCkoZFQse2Rlc2NyaXB0aW9uSWQ6XCJjaGlsZEFjY291bnREZXNjcmlwdGlvblwiLGRlc2NyaXB0aW9uQ2xhc3M6aC5zdWJUZXh0LGNoaWxkcmVuOmZ9KV19KX0pfTshZnVuY3Rpb24oZSl7ZS5Tc29BcnRpZmFjdEV4cGlyZWREdWVUb0NvbmRpdGlvbmFsQWNjZXNzPVwiNzAwNDRcIn0oZ0V8fChnRT17fSkpO3ZhciBiRT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz1WTygpLGk9ZS5jb25maXJtU2VuZERlc2NyaXB0aW9uT3RjQVNMUCxhPWUuY29uZmlybVNlbmREZXNjcmlwdGlvbk90Y0VtYWlsLGw9ZS5jb25maXJtU2VuZERlc2NyaXB0aW9uT3RjRm9yY2VTaWduaW4scz1lLmNvbmZpcm1TZW5kRGVzY3JpcHRpb25QaG9uZURpc2FtYmlnLGM9ZS5jb25maXJtU2VuZERlc2NyaXB0aW9uUmVtb3RlTmdjLHU9ZS5jb25maXJtU2VuZERlc2NyaXB0aW9uUmVtb3RlTmdjQVNMUCxkPWUuY29uZmlybVNlbmREZXNjcmlwdGlvblJlbW90ZU5nY0ZvcmNlU2lnbmluO3JldHVybiB0PT09JFAuUmVtb3RlTkdDP3I9PT1nRS5Tc29BcnRpZmFjdEV4cGlyZWREdWVUb0NvbmRpdGlvbmFsQWNjZXNzP3U6bz9kOmM6cj09PWdFLlNzb0FydGlmYWN0RXhwaXJlZER1ZVRvQ29uZGl0aW9uYWxBY2Nlc3M/aTpvP2w6bj9hOnN9LHlFPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5wcmVmZXJyZWRDcmVkZW50aWFsLHI9ZS5vdGNDcmVkZW50aWFsLG89bnVsbDtpZihmdW5jdGlvbihlKXtyZXR1cm4gdHguaW5jbHVkZXMoZSl9KG4pfHwobz1uZXcgRXJyb3IoXCJwcmVmZXJyZWRDcmVkZW50aWFsIChcIi5jb25jYXQobixcIikgaXMgbm90IGEgc3VwcG9ydGVkIHR5cGVcIikpKSxuIT09JFAuT25lVGltZUNvZGV8fGZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lJiZcInByb29mXCJpbiBlJiZ2b2lkIDAhPT1lLnByb29mJiZcImRpc3BsYXlcImluIGUucHJvb2Z9KHIpfHwobz1uZXcgRXJyb3IoXCJvdGNDcmVkZW50aWFsIGlzIG5vdCBkZWZpbmVkIGNvcnJlY3RseSBmb3IgdGhlIHByZWZlcnJlZENyZWRlbnRpYWwsIE9uZVRpbWVDb2RlXCIpKSxvKXRocm93IEloLnQubG9nRXhjZXB0aW9uKG8sdCxcIkludmFsaWRPdGNDcmVkZW50aWFsRXJyb3JcIiksby5pc0xvZ2dlZD0hMCxvO3JldHVybiBlfSx2RT17fTt2RVskUC5GaWRvXT0yLHZFWyRQLlJlbW90ZU5HQ109Myx2RVskUC5QYXNzd29yZF09NCx2RVskUC5MaW5rZWRJbl09Nix2RVskUC5HaXRIdWJdPTgsdkVbJFAuT25lVGltZUNvZGVdPTEyLHZFWyRQLk9mZmxpbmVBY2NvdW50XT05Nzt2YXIgd0U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jcmVkZW50aWFsVHlwZSxuPWUucHJvb2Y7cmV0dXJuIHQ9PT0kUC5PbmVUaW1lQ29kZSYmKG51bGw9PW4/dm9pZCAwOm4udHlwZSk9PT1KUC5FbWFpbD8xMTp2RVt0XX0sU0U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jcmVkZW50aWFsVHlwZT09PSRQLk9uZVRpbWVDb2RlP2UucHJvb2YudHlwZTpWUCh0LnVzZXJuYW1lLnVuc2FmZVVuZXNjYXBlZFN0cmluZyk/SlAuRW1haWw6SlAuU01TfSxQRT1mdW5jdGlvbihlKXtyZXR1cm4gZT09PUpQLkVtYWlsP290LmVtYWlsQWRkcmVzczpvdC5tb2JpbGVTbXN9O2Z1bmN0aW9uIHhFKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBPRShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBPRShlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gT0UoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgX0U9ZnVuY3Rpb24oZSx0KXt2YXIgbj14RSgoMCxvLnVzZVN0YXRlKSghMSksMikscj1uWzBdLGk9blsxXSxhPXhFKCgwLG8udXNlU3RhdGUpKCExKSwyKSxsPWFbMF0scz1hWzFdLGM9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUudXNlcix1PXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcy5mcmllbmRseUFwcE5hbWUsZD1lLmN1cnJlbnRDcmVkZW50aWFsLGY9ZS5wcmVmZXJyZWRDcmVkZW50aWFsLHA9Zk8uaW5zdGFuY2UubG9naW5Nb2RlLGc9SXQuZGVmYXVsdC5pbnN0YW5jZS5zaG93QnV0dG9ucyxtPSFIUygpLGg9bl8obSksYj1TRShkLGMpLHk9KDAsby51c2VTdGF0ZSkoZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNvbmZpcm1TZW5kRGVzY3JpcHRpb25SZW1vdGVOZ2NDb250aW51ZVNpZ25pbixyPWUuY29uZmlybVNlbmREZXNjcmlwdGlvblJlbW90ZU5nY1NlbmROb3RpZmljYXRpb24sbz1lLnRmYVNlbmRDb2RlQnV0dG9uVGV4dCxpPWZPLmluc3RhbmNlLnJpc2t5U2lnbkluO3JldHVybiB0PT09JFAuUmVtb3RlTkdDP2k/bjpyOm99KHQuY29uZmlybVNlbmRWaWV3U3RyaW5ncyxmKSksdj14RSh5LDIpLHc9dlswXSxTPXZbMV0sUD1mdW5jdGlvbihlLHQsbixyLGksYSl7dmFyIGw9YS5jb25maXJtU2VuZERlc2NyaXB0aW9uT3RjU2VuZEVycm9yRW1haWwscz1hLmNvbmZpcm1TZW5kRGVzY3JpcHRpb25PdGNTZW5kRXJyb3IsYz1pPT09SlAuRW1haWwsdT0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZS5kZWJ1Z0luZm8uZXJyb3JDb2RlO3JldHVybiBlLmNyZWRlbnRpYWxUeXBlPT09JFAuT25lVGltZUNvZGU/cj9jP2w6czooMCxzdC5aNykoYkUoYSx0LGMsdSksZS5wcm9vZi5kaXNwbGF5KTooMCxzdC5aNykoYkUoYSx0LGMsdSksKDAsc3QuVHApKG4uZGlzcGxheVVzZXJuYW1lLnVuc2FmZVVuZXNjYXBlZFN0cmluZykpfShkLGYsYyxsLGIsdC5jb25maXJtU2VuZFZpZXdTdHJpbmdzKTtyZXR1cm57c2hvd0NoYW5nZVVzZXJMaW5rOmgsYnV0dG9uVGV4dDp3LHNldEJ1dHRvblRleHQ6UyxoYXNFcnJvcjpsLHNldEhhc0Vycm9yOnMsZGVzY3JpcHRpb246UCxkb2N1bWVudFRpdGxlOldPKHAsdSx0LmNvbW1vbkxvZ2luU3RyaW5ncykscmVxdWVzdElzUGVuZGluZzpyLHNldFJlcXVlc3RJc1BlbmRpbmc6aSxzaG93QnV0dG9uOmcmJiFyfX0sQ0U9ZnVuY3Rpb24oKXt2YXIgZT1KdCgpLmRpc3BhdGNoU3RhdGVDaGFuZ2U7cmV0dXJue3Nob3dQcm9ncmVzc0luZGljYXRvcjooMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oKXtyZXR1cm4gZSh7dHlwZTpMdC5TZXRTaG93UHJvZ3Jlc3NJbmRpY2F0b3IscGF5bG9hZDohMH0pfSksW2VdKSxoaWRlUHJvZ3Jlc3NJbmRpY2F0b3I6KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7cmV0dXJuIGUoe3R5cGU6THQuU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yLHBheWxvYWQ6ITF9KX0pLFtlXSl9fSxrRT1mdW5jdGlvbihlLHQpe3ZhciBuPWUuYXZhaWxhYmxlQ3JlZGVudGlhbHMscj1lLmN1cnJlbnRDcmVkZW50aWFsLGk9ZS5wcmVmZXJyZWRDcmVkZW50aWFsLGE9ZS5wcm9vZlR5cGUsbD1lLnNldEJ1dHRvblRleHQscz1lLnNldEhhc0Vycm9yLGM9ZS51c2VyLHU9dC5uZXh0QnV0dG9uLGQ9SXQuZGVmYXVsdC5pbnN0YW5jZS5hY3RpdmVGbGF2b3IsZj0oMCxvLnVzZUNvbnRleHQpKFplKSxwPWYuYXV0aFN0YXRlLmZsb3dUb2tlblZhbHVlLGc9Zi5kaXNwYXRjaFN0YXRlQ2hhbmdlLG09Q0UoKSxoPW0uc2hvd1Byb2dyZXNzSW5kaWNhdG9yLGI9bS5oaWRlUHJvZ3Jlc3NJbmRpY2F0b3IseT16UygpLHY9bkEociksdz1yQShyLG4pP3J0Lm5vUGFzc3dvcmQ6cnQub3RjTG9naW4sUz1mdW5jdGlvbihlLHQpe3JldHVybiBlLmNyZWRlbnRpYWxUeXBlPT09JFAuT25lVGltZUNvZGU/ZS5wcm9vZi5kYXRhOm54KHQuZGlzcGxheVVzZXJuYW1lLnVuc2FmZVVuZXNjYXBlZFN0cmluZyl9KHIsYyksUD12P3RBKHIsYSk6dm9pZCAwLHg9KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe2coe3R5cGU6TWUuU2V0Rmxvd1Rva2VuVmFsdWUscGF5bG9hZDplfSl9KSxbZ10pLE89YUEoKSxfPWlBKCksQz0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7dmFyIHQ9XyhlKTtlLmZsb3dUb2tlbiYmeChlLmZsb3dUb2tlbikscyghMCksbCh1KSxiKCksdCYmeShUdC5Db25maXJtU2VuZCxBdyhUdC5DaGFsbGVuZ2UpKX0pLFtfLHMsbCx1LHgseSxiXSksaz0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmZsb3dUb2tlbixyPWUucmVzcG9uc2Usbz0hKG51bGw9PT0odD1yLlNhc1BhcmFtcyl8fHZvaWQgMD09PXR8fCF0LlN1Y2Nlc3MpO2khPT0kUC5QdWJsaWNJZGVudGlmaWVyQ29kZXx8bz8obiYmeChuKSxiKCkseShUdC5Db25maXJtU2VuZCxUdC5PbmVUaW1lQ29kZSkpOkMoe2Zsb3dUb2tlbjpuLHJlc3BvbnNlQm9keTpyfSl9KSxbaSxDLHgseSxiXSk7cmV0dXJuKDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7aCgpLGVBKHtjaGFubmVsOlBFKGEpLGZsb3dUb2tlbjpwLHByb29mVHlwZTphLHB1cnBvc2U6dyx1c2VybmFtZTpjLmRpc3BsYXlVc2VybmFtZSxpc0VuY3J5cHRlZDp2LHByb29mRGF0YTpTLHByb29mQ29uZmlybWF0aW9uOlAsb25TdWNjZXNzOmssb25GYWlsdXJlOkMsY2hhbGxlbmdlVmlld1N1cHBvcnRlZDpvQShkKSx0ZWxlbWV0cnlDYWxsYmFjazpPfSl9KSxbcCxhLHcsdixTLFAsZCxjLGssQyxoLE9dKX0sQUU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNldEhhc0Vycm9yLHI9ZS5zZXRCdXR0b25UZXh0LGk9ZS5yZXF1ZXN0SXNQZW5kaW5nLGE9ZS5zZXRSZXF1ZXN0SXNQZW5kaW5nLGw9ZS5jcmVkZW50aWFscyxzPXpTKCksYz0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZS51c2VyLHU9bC5hdmFpbGFibGVDcmVkZW50aWFscyxkPWwucHJlZmVycmVkQ3JlZGVudGlhbCxmPWwuY3VycmVudENyZWRlbnRpYWwscD1TRShmLGMpLGc9d18oVHQuQ29uZmlybVNlbmQpLG09ZnVuY3Rpb24oZSx0KXt2YXIgbj1rRShlLHQpLHI9elMoKSxvPWUucHJlZmVycmVkQ3JlZGVudGlhbDtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLG89PT0kUC5SZW1vdGVOR0M/cihUdC5Db25maXJtU2VuZCxUdC5QdXNoTm90aWZpY2F0aW9ucyk6bigpfX0oe2F2YWlsYWJsZUNyZWRlbnRpYWxzOnUsY3VycmVudENyZWRlbnRpYWw6ZixwcmVmZXJyZWRDcmVkZW50aWFsOmQscHJvb2ZUeXBlOnAscmVxdWVzdElzUGVuZGluZzppLHNldEJ1dHRvblRleHQ6cixzZXRIYXNFcnJvcjpuLHNldFJlcXVlc3RJc1BlbmRpbmc6YSx1c2VyOmN9LHQpO3JldHVybntvbkNsaWNrUHJpbWFyeUJ1dHRvbjptLG5hdmlnYXRlVG9QaG9uZURpc2FtYmlnOmZ1bmN0aW9uKCl7cyhUdC5Db25maXJtU2VuZCxUdC5QaG9uZURpc2FtYmlndWF0aW9uKX0sc2VsZWN0QWNjb3VudDpnfX07ZnVuY3Rpb24gVEUoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEVFKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1RFKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7akUoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlRFKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGpFKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgSUU9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksYT1mdW5jdGlvbigpe3ZhciBlPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZS5jcmVkZW50aWFscyx0PW5uKCksbj0oMCxvLnVzZU1lbW8pKChmdW5jdGlvbigpe3JldHVybiB5RShlLHQpfSksW2UsdF0pLHI9bi5hdmFpbGFibGVDcmVkZW50aWFscyxpPW4uZXZpY3RlZENyZWRlbnRpYWxzLGE9bi5wcmVmZXJyZWRDcmVkZW50aWFsLGw9bi5vdGNDcmVkZW50aWFsO3JldHVybnthdmFpbGFibGVDcmVkZW50aWFsczpyLGN1cnJlbnRDcmVkZW50aWFsOmE9PT0kUC5PbmVUaW1lQ29kZT9sOntjcmVkZW50aWFsVHlwZTphfSxldmljdGVkQ3JlZGVudGlhbHM6aSxwcmVmZXJyZWRDcmVkZW50aWFsOmF9fSgpLGw9X0UoYSxlKSxzPWwuYnV0dG9uVGV4dCxjPWwuZGVzY3JpcHRpb24sdT1sLnJlcXVlc3RJc1BlbmRpbmcsZD1sLmRvY3VtZW50VGl0bGUsZj1sLnNob3dDaGFuZ2VVc2VyTGluayxwPWwuc2hvd0J1dHRvbixnPWwuc2V0QnV0dG9uVGV4dCxtPWwuc2V0SGFzRXJyb3IsaD1sLnNldFJlcXVlc3RJc1BlbmRpbmcsYj1BRSh7Y3JlZGVudGlhbHM6YSxyZXF1ZXN0SXNQZW5kaW5nOnUsc2V0QnV0dG9uVGV4dDpnLHNldEhhc0Vycm9yOm0sc2V0UmVxdWVzdElzUGVuZGluZzpofSxlLmNvbW1vbkxvZ2luU3RyaW5ncyk7cmV0dXJuIEVFKEVFKEVFKHt9LGEpLHt9LHtidXR0b25UZXh0OnMsZGVzY3JpcHRpb246Yyxkb2N1bWVudFRpdGxlOmQscmVxdWVzdElzUGVuZGluZzp1LHNldFJlcXVlc3RJc1BlbmRpbmc6aCxzaG93QnV0dG9uOnAsc2hvd0NoYW5nZVVzZXJMaW5rOmZ9LGIpLHt9LHtoZWFkZXJUZXh0Oih0PWZPLmluc3RhbmNlLG49dC5hcHBCcmFuZGVkU2lnbkluSGVhZGVyLHI9dC5kZWZhdWx0U2lnbkluSGVhZGVyLGk9dC5sb2dpblN0cmluZ3NWYXJpYW50LEdPKGkscixuKSl9KX0sTEU9e2NoYW5nZVVzZXJMaW5rVGV4dDpcIlNpZ24gaW4gd2l0aCBhIGRpZmZlcmVudCBNaWNyb3NvZnQgYWNjb3VudFwiLGNvbmZpcm1TZW5kRGVzY3JpcHRpb25SZW1vdGVOZ2NBU0xQOlwiWW91ciBvcmdhbml6YXRpb25hbCBwb2xpY3kgcmVxdWlyZXMgeW91IHRvIHNpZ24gaW4gYWdhaW4gYWZ0ZXIgYSBjZXJ0YWluIHRpbWUgcGVyaW9kLiBXZSdsbCBzZW5kIGEgcmVxdWVzdCB0byB5b3VyIHBob25lIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LlwiLGNvbmZpcm1TZW5kRGVzY3JpcHRpb25SZW1vdGVOZ2NGb3JjZVNpZ25pbjpcIkJlY2F1c2UgeW91J3JlIGFjY2Vzc2luZyBzZW5zaXRpdmUgaW5mbyBmb3IgezB9LCB3ZSdsbCBzZW5kIGEgcmVxdWVzdCB0byB5b3VyIHBob25lIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LlwiLGNvbmZpcm1TZW5kRGVzY3JpcHRpb25SZW1vdGVOZ2M6XCJXZSdsbCBzZW5kIGEgc2lnbi1pbiByZXF1ZXN0IHRvIHlvdXIgcGhvbmUgdG8gc2lnbiBpbiB3aXRoIHswfS5cIixjb25maXJtU2VuZERlc2NyaXB0aW9uT3RjQVNMUDpcIllvdXIgb3JnYW5pemF0aW9uYWwgcG9saWN5IHJlcXVpcmVzIHlvdSB0byBzaWduIGluIGFnYWluIGFmdGVyIGEgY2VydGFpbiB0aW1lIHBlcmlvZC4gV2UnbGwgc2VuZCBhIGNvZGUgdG8gezB9IHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LlwiLGNvbmZpcm1TZW5kRGVzY3JpcHRpb25PdGNGb3JjZVNpZ25pbjpcIkJlY2F1c2UgeW91J3JlIGFjY2Vzc2luZyBzZW5zaXRpdmUgaW5mbywgd2UnbGwgc2VuZCBhIGNvZGUgdG8gezB9IHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LlwiLGNvbmZpcm1TZW5kRGVzY3JpcHRpb25PdGNFbWFpbDpcIldlJ2xsIHNlbmQgYSBjb2RlIHRvIHswfSB0byBzaWduIHlvdSBpbi5cIixjb25maXJtU2VuZERlc2NyaXB0aW9uUGhvbmVEaXNhbWJpZzpcIldlJ2xsIHNlbmQgYSBjb2RlIHRvIHswfSB0byBzaWduIHlvdSBpbi4gPHBob25lRGlzYW1iaWdMaW5rPlRoaXMgaXNuJ3QgbXkgbnVtYmVyPC9waG9uZURpc2FtYmlnTGluaz5cIixjb25maXJtU2VuZERlc2NyaXB0aW9uUmVtb3RlTmdjQ29udGludWVTaWduaW46XCJDb250aW51ZSBzaWduIGluXCIsY29uZmlybVNlbmREZXNjcmlwdGlvblJlbW90ZU5nY1NlbmROb3RpZmljYXRpb246XCJTZW5kIG5vdGlmaWNhdGlvblwiLHRmYVNlbmRDb2RlQnV0dG9uVGV4dDpcIlNlbmQgY29kZVwiLGNvbmZpcm1TZW5kRGVzY3JpcHRpb25PdGNTZW5kRXJyb3JFbWFpbDpcIldlIGNvdWxkbid0IHNlbmQgYSBjb2RlIHRvIHlvdXIgZW1haWwgYXQgdGhpcyB0aW1lLiBUcnkgYWdhaW4gbGF0ZXIuXCIsY29uZmlybVNlbmREZXNjcmlwdGlvbk90Y1NlbmRFcnJvcjpcIldlIGNvdWxkbid0IHNlbmQgYSBjb2RlIHRvIHlvdXIgcGhvbmUgYXQgdGhpcyB0aW1lLiBUcnkgYWdhaW4gbGF0ZXIuXCJ9LERFPWZ1bmN0aW9uKCl7dmFyIGU9VW0uaW5zdGFuY2UsdD1lLnVzZUNvbW1vblN0eWxlcyxuPWUudXNlU3RhdGljQ29tbW9uU3R5bGVzLHI9SUUoe2NvbW1vbkxvZ2luU3RyaW5nczpwQyxjb25maXJtU2VuZFZpZXdTdHJpbmdzOkxFfSksbz1yLmF2YWlsYWJsZUNyZWRlbnRpYWxzLGk9ci5jdXJyZW50Q3JlZGVudGlhbCxhPXIuZGVzY3JpcHRpb24sbD1yLmJ1dHRvblRleHQscz1yLm5hdmlnYXRlVG9QaG9uZURpc2FtYmlnLGM9ci5vbkNsaWNrUHJpbWFyeUJ1dHRvbix1PXIuc2VsZWN0QWNjb3VudCxkPXIuc2V0UmVxdWVzdElzUGVuZGluZyxmPXIucHJlZmVycmVkQ3JlZGVudGlhbCxwPXIuZG9jdW1lbnRUaXRsZSxnPXIuc2hvd0NoYW5nZVVzZXJMaW5rLG09ci5zaG93QnV0dG9uLGg9ci5oZWFkZXJUZXh0O2ZrKFR0LkNvbmZpcm1TZW5kLEV0LkxvZ2luKSxhayhwKSxuKCk7dmFyIGI9dCgpLHk9KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Yi5mb3JtR3JvdXAsXCJkYXRhLXRlc3RpZFwiOlwiY29uZmlybS1zZW5kLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2coYi5yb3csYi50ZXh0Qm9keSxiLnRleHRCbG9ja0JvZHkpLGNoaWxkcmVuOigwLCRlLmpzeCkoYncse3RleHQ6YSxlbWJlZGRlZEJpbmRpbmdzOntwaG9uZURpc2FtYmlnTGluazpmdW5jdGlvbihlKXtyZXR1cm4oMCwkZS5qc3gpKHRDLHt0ZXh0OmVbMF0sb25DbGljazpzfSl9fX0pfSl9KSx2PVNfKCksdz12LnNob3dTd2l0Y2hUb0V2aWN0ZWRDcmVkUGlja2VyLFM9di5zaG93Q3JlZGVudGlhbFN3aXRjaENvbnRlbnQsUD17YXZhaWxhYmxlQ3JlZGVudGlhbHM6byxjdXJyZW50Q3JlZGVudGlhbDppLHNldFJlcXVlc3RQZW5kaW5nRmxhZzpkLHNvdXJjZVZpZXdJZDpUdC5Db25maXJtU2VuZCxzaG91bGRVcGRhdGVPdGNDcmVkZW50aWFsOiEwfSx4PSgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmIuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkodEMse3RleHQ6TEUuY2hhbmdlVXNlckxpbmtUZXh0LG9uQ2xpY2s6dX0pfSksTz1mPT09JFAuUmVtb3RlTkdDfHxnP3ZvaWQgMDpiLm5vTWFyZ2luQm90dG9tLF89XCJjb25maXJtU2VuZFRpdGxlXCI7cmV0dXJuKDAsJGUuanN4cykoXCJmb3JtXCIse25vVmFsaWRhdGU6ITAsc3BlbGxDaGVjazpcImZhbHNlXCIsYXV0b0NvbXBsZXRlOlwiZmFsc2VcIixvblN1Ym1pdDpjLGNoaWxkcmVuOlsoMCwkZS5qc3gpKHdULHt0aXRsZUlkOl8sdGl0bGU6aH0pLHksKDAsJGUuanN4KShmVCx7Y2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Yi5yb3csY2hpbGRyZW46KDAsJGUuanN4cykoX2sse2NoaWxkcmVuOltTJiYoMCwkZS5qc3gpKFBBLHtjcmVkZW50aWFsU3dpdGNoUHJvcHM6UCxzaG93U3dpdGNoVG9FdmljdGVkQ3JlZFBpY2tlcjp3fSksZyYmeF19KX0pfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Yi53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46bSYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Yi5yb3csY2hpbGRyZW46KDAsJGUuanN4KShGXyx7Y3VzdG9tQ3NzOk8sY2hpbGRyZW46KDAsJGUuanN4KShVXyx7bGFiZWw6bCxpc1ByaW1hcnk6ITAsaGFzRm9jdXM6ITAsdHlwZTpcInN1Ym1pdFwiLGFyaWFEZXNjcmliZWRCeTpffSl9KX0pfSldfSl9O2Z1bmN0aW9uIE5FKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBSRShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBSRShlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gUkUoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgQkU9ZnVuY3Rpb24oZSl7dmFyIHQ9KDAsby51c2VDb250ZXh0KShadCkuZGlzcGF0Y2hTdGF0ZUNoYW5nZSxuPWZPLmluc3RhbmNlLHI9bi5pc09vYmUsaT1uLm5vTG9zc0F2ZXJzaW9uO3JldHVybiBmdW5jdGlvbigpe2UmJnQoe3R5cGU6THQuU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yLHBheWxvYWQ6ITB9KSxlTyhyLGkpfX0sVUU9ZnVuY3Rpb24oZSl7dmFyIHQ9elMoKSxuPWZ1bmN0aW9uKGUpe3ZhciB0PUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLG49KDAsby51c2VDb250ZXh0KShadCkscj1uLmdsb2JhbFN0YXRlLnVzZXIsaT1uLmRpc3BhdGNoU3RhdGVDaGFuZ2UsYT0oMCxvLnVzZUNvbnRleHQpKEFPKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGw9KDAsby51c2VDb250ZXh0KShaZSkscz1sLmF1dGhTdGF0ZS5mbG93VG9rZW5WYWx1ZSxjPWwuZGlzcGF0Y2hTdGF0ZUNoYW5nZSx1PWUuc2Vzc2lvbkV4cGlyZWRFcnJvcixkPWUuc2VuZEZhaWxlZEVycm9yLGY9elMoKSxwPWFBKCksZz1pQSgpO3JldHVybigwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbihlLG4pe3ZhciBvPWUucHJvb2YsbD1vLmlzRW5jcnlwdGVkLG09R2soby50eXBlKSxoPXt1c2VybmFtZTpyLnVzZXJuYW1lLHByb29mRGF0YTpvLmRhdGEscHJvb2ZUeXBlOm8udHlwZSxwdXJwb3NlOm8uaXNOb3BhP3J0Lm5vUGFzc3dvcmQ6cnQub3RjTG9naW4sZmxvd1Rva2VuOnMsaXNFbmNyeXB0ZWQ6bCxjaGFubmVsOm0sb25TdWNjZXNzOmZ1bmN0aW9uKHQpe3QuZmxvd1Rva2VuJiZjKHt0eXBlOk1lLlNldEZsb3dUb2tlblZhbHVlLHBheWxvYWQ6dC5mbG93VG9rZW59KSxpKHt0eXBlOkx0LlNldFNob3dQcm9ncmVzc0luZGljYXRvcixwYXlsb2FkOiExfSksYSh7dHlwZTp1Ty5VcGRhdGVDcmVkZW50aWFscyxwYXlsb2FkOntvdGNDcmVkZW50aWFsOntjcmVkZW50aWFsVHlwZTokUC5PbmVUaW1lQ29kZSxwcm9vZjplLnByb29mfX19KSxmKFR0LkNyZWRlbnRpYWxQaWNrZXIsQXcoVHQuT25lVGltZUNvZGUpKX0sb25GYWlsdXJlOmZ1bmN0aW9uKHQpe3ZhciByPWcodCk7dC5mbG93VG9rZW4mJmMoe3R5cGU6TWUuU2V0Rmxvd1Rva2VuVmFsdWUscGF5bG9hZDp0LmZsb3dUb2tlbn0pLGkoe3R5cGU6THQuU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yLHBheWxvYWQ6ITF9KSx0Lm90Y1N0YXR1cz09PWx0LmZ0RXJyb3I/bih1KTpyPyhhKHt0eXBlOnVPLlVwZGF0ZUNyZWRlbnRpYWxzLHBheWxvYWQ6e290Y0NyZWRlbnRpYWw6e2NyZWRlbnRpYWxUeXBlOiRQLk9uZVRpbWVDb2RlLHByb29mOmUucHJvb2Z9fX0pLGYoVHQuQ3JlZGVudGlhbFBpY2tlcixBdyhUdC5DaGFsbGVuZ2UpKSk6bihkKX0sY2hhbGxlbmdlVmlld1N1cHBvcnRlZDpvQSh0KSx0ZWxlbWV0cnlDYWxsYmFjazpwfTtsJiYoaC5wcm9vZkNvbmZpcm1hdGlvbj10QShlLG8udHlwZSkpLGVBKGgpfSksW3IudXNlcm5hbWUscyx0LHAsaSxhLGYsYyxnLHUsZF0pfShlKSxyPSgwLG8udXNlQ29udGV4dCkoWnQpLmRpc3BhdGNoU3RhdGVDaGFuZ2UsaT0oMCxvLnVzZUNvbnRleHQpKEFPKS5kaXNwYXRjaFN0YXRlQ2hhbmdlO3JldHVybiBmdW5jdGlvbihlLG8pe28oXCJcIiksZS5wcm9vZi5jbGVhckRpZ2l0cz8oaSh7dHlwZTp1Ty5VcGRhdGVDcmVkZW50aWFscyxwYXlsb2FkOntvdGNDcmVkZW50aWFsOntjcmVkZW50aWFsVHlwZTokUC5PbmVUaW1lQ29kZSxwcm9vZjplLnByb29mfX19KSx0KFR0LkNyZWRlbnRpYWxQaWNrZXIsQXcoVHQuUHJvb2ZDb25maXJtYXRpb24pKSk6KHIoe3R5cGU6THQuU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yLHBheWxvYWQ6ITB9KSxuKGUsbykpfX0sRkU9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGksYSxsPW4uY3JlZGVudGlhbFBpY2tlclN0cmluZ3Mscz1uLmNvbW1vbkxvZ2luU3RyaW5ncyxjPWwuZ2l0aHViQXJpYUxhYmVsLHU9bC5naXRodWJCdXR0b25MYWJlbCxkPWwubGlua2VkaW5MYWJlbCxmPWwubWljcm9zb2Z0QXBwTGFiZWwscD1sLm9mZmxpbmVBY2NvdW50TGFiZWwsZz1sLm9uZVRpbWVDb2RlRW1haWxMYWJlbCxtPWwub25lVGltZUNvZGVTTVNMYWJlbCxoPWwub25lVGltZUNvZGVWb2ljZUxhYmVsLGI9bC5wYXNzd29yZExhYmVsLHk9bC5wZXJzb25hbEFjY291bnRzT25seUhlbHBUZXh0LHY9Z18ocywhMCksdz12LmZpZG9MaW5rVGV4dCxTPXYuZmlkb0ltYWdlLFA9elMoKSx4PVVFKGwpLE89QkUoITApLF89ISgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZS5jcmVkZW50aWFscy51c2VFdmljdGVkQ3JlZGVudGlhbHMsQz1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcixrPWZPLmluc3RhbmNlLEE9ay5hbGxvd2VkSWRlbnRpdGllcyxUPWsuZ2l0aHViRmVkVXJsLEU9ay5saW5rZWRJbkZlZFVybCxqPWsuc2hvd09mZmxpbmVBY2NvdW50LEk9KGk9JFMoKSxhPUp0KCkuZGlzcGF0Y2hTdGF0ZUNoYW5nZSxmdW5jdGlvbihlKXthKHt0eXBlOkx0LlNldFNob3dQcm9ncmVzc0luZGljYXRvcixwYXlsb2FkOiEwfSksaShlKX0pLEw9ZS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFlLnByb29mfHxlLnByb29mLmlzRGVmYXVsdD09PV99KSk7aiYmQz09PWN0Lm9GLldpbjExT29iZUZhYnJpYyYmTC5wdXNoKHtjcmVkZW50aWFsVHlwZTokUC5PZmZsaW5lQWNjb3VudH0pLEwuc29ydCgoZnVuY3Rpb24oZSx0KXt2YXIgbj13RShlKSxyPXdFKHQpO3JldHVybiBuJiZyP24tcjowfSkpO3ZhciBEPVtdO3JldHVybiBMLmZvckVhY2goKGZ1bmN0aW9uKGUpe3N3aXRjaChlLmNyZWRlbnRpYWxUeXBlKXtjYXNlICRQLkZpZG86RC5wdXNoKHttYWluVGV4dDp3LGltYWdlOlMsYXJpYUxhYmVsOncsb25DbGljazp0fSk7YnJlYWs7Y2FzZSAkUC5SZW1vdGVOR0M6RC5wdXNoKHttYWluVGV4dDpmLGltYWdlOnt1cmxzOmVifSxhcmlhTGFiZWw6ZixvbkNsaWNrOmZ1bmN0aW9uKCl7UChUdC5DcmVkZW50aWFsUGlja2VyLEF3KFR0LlB1c2hOb3RpZmljYXRpb25zKSl9fSk7YnJlYWs7Y2FzZSAkUC5QYXNzd29yZDpELnB1c2goe21haW5UZXh0OmIsaW1hZ2U6e3VybHM6c2J9LGFyaWFMYWJlbDpiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtQKFR0LkNyZWRlbnRpYWxQaWNrZXIsQXcoVHQuUGFzc3dvcmQpKX19KTticmVhaztjYXNlICRQLkxpbmtlZEluOkQucHVzaCh7bWFpblRleHQ6ZCxoZWxwVGV4dDpBPT09SFA/eTp2b2lkIDAsaW1hZ2U6e3VybHM6bmJ9LGFyaWFMYWJlbDpkLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gSShFKX19KTticmVhaztjYXNlICRQLkdpdEh1YjpELnB1c2goe21haW5UZXh0OnUsaGVscFRleHQ6QT09PUhQP3k6dm9pZCAwLGltYWdlOnt1cmxzOnRifSxhcmlhTGFiZWw6YyxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIEkoVCl9fSk7YnJlYWs7Y2FzZSAkUC5PbmVUaW1lQ29kZTp2YXIgbj1lLG89bi5wcm9vZjtvLnR5cGU9PT1KUC5FbWFpbD9ELnB1c2goe21haW5UZXh0OmcsaW1hZ2U6e3VybHM6UWh9LGFyaWFMYWJlbDpnLG9uQ2xpY2s6ZnVuY3Rpb24oKXt4KG4scil9LG1haW5UZXh0UmVwbGFjZVZhbHVlOm8uZGlzcGxheSxhcmlhTGFiZWxSZXBsYWNlVmFsdWU6by5kaXNwbGF5fSk6by50eXBlPT09SlAuU01TP0QucHVzaCh7bWFpblRleHQ6bSxpbWFnZTp7dXJsczpoYn0sYXJpYUxhYmVsOm0sb25DbGljazpmdW5jdGlvbigpe3gobixyKX0sbWFpblRleHRSZXBsYWNlVmFsdWU6by5kaXNwbGF5LGFyaWFMYWJlbFJlcGxhY2VWYWx1ZTpvLmRpc3BsYXl9KTpvLnR5cGU9PT1KUC5Wb2ljZSYmRC5wdXNoKHttYWluVGV4dDpoLGltYWdlOnt1cmxzOlZofSxhcmlhTGFiZWw6aCxvbkNsaWNrOmZ1bmN0aW9uKCl7eChuLHIpfSxtYWluVGV4dFJlcGxhY2VWYWx1ZTpvLmRpc3BsYXksYXJpYUxhYmVsUmVwbGFjZVZhbHVlOm8uZGlzcGxheX0pO2JyZWFrO2Nhc2UgJFAuT2ZmbGluZUFjY291bnQ6RC5wdXNoKHttYWluVGV4dDpwLGltYWdlOnt1cmxzOmliLGRhdGFUZXN0SWQ6XCJvZmZsaW5lLWFjY291bnQtaW1nXCJ9LG9uQ2xpY2s6TyxhcmlhTGFiZWw6cH0pfX0pKSxEfSxNRT17Z2l0aHViQXJpYUxhYmVsOlwiTGVhcm4gbW9yZSBhYm91dCBzaWduaW5nIGluIHdpdGggR2l0SHViXCIsZ2l0aHViQnV0dG9uTGFiZWw6XCJTaWduIGluIHdpdGggR2l0SHViXCIsbGlua2VkaW5MYWJlbDpcIlNpZ24gaW4gd2l0aCBMaW5rZWRJblwiLG1pY3Jvc29mdEFwcExhYmVsOlwiQXBwcm92ZSBhIHJlcXVlc3QgdXNpbmcgbXkgTWljcm9zb2Z0IGFwcFwiLG9mZmxpbmVBY2NvdW50TGFiZWw6XCJPZmZsaW5lIGFjY291bnRcIixvbmVUaW1lQ29kZUVtYWlsTGFiZWw6XCJFbWFpbCB7MH1cIixvbmVUaW1lQ29kZVNNU0xhYmVsOlwiVGV4dCB7MH1cIixvbmVUaW1lQ29kZVZvaWNlTGFiZWw6XCJDYWxsIHswfVwiLHBhc3N3b3JkTGFiZWw6XCJVc2UgbXkgcGFzc3dvcmRcIixwZXJzb25hbEFjY291bnRzT25seUhlbHBUZXh0OlwiUGVyc29uYWwgYWNjb3VudHMgb25seVwiLHJlbW90ZU5nY0xhYmVsOlwiQXBwcm92ZSBhIHJlcXVlc3Qgb24gbXkgTWljcm9zb2Z0IEF1dGhlbnRpY2F0b3IgYXBwXCIsc2Vzc2lvbkV4cGlyZWRFcnJvcjpcIldlIGNvdWxkbid0IHNlbmQgdGhlIGNvZGUuIFBsZWFzZSByZWZyZXNoIHlvdXIgYnJvd3NlciBhbmQgdHJ5IGFnYWluLlwiLHNlbmRGYWlsZWRFcnJvcjpcIldlIGNvdWxkbid0IHNlbmQgdGhlIGNvZGUuIFBsZWFzZSB0cnkgYWdhaW4uXCIsY3JlZFBpY2tlclRpdGxlOlwiQ2hvb3NlIGEgd2F5IHRvIHNpZ24gaW5cIn0sekU9ZnVuY3Rpb24oKXt2YXIgZT1VbS5pbnN0YW5jZSx0PWUudXNlQ29tbW9uU3R5bGVzLG49ZS51c2VTdGF0aWNDb21tb25TdHlsZXMscj1lLnVzZVRpbGVTdHlsZXMsaT1mdW5jdGlvbihlKXt2YXIgdD1lLmNyZWRlbnRpYWxQaWNrZXJTdHJpbmdzLmNyZWRQaWNrZXJUaXRsZSxuPWUuY29tbW9uTG9naW5TdHJpbmdzLmJhY2tCdXR0b24scj0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZS51c2VyLnVzZXJuYW1lLGk9KDAsby51c2VDb250ZXh0KShBTykudmlld1N0YXRlLmNyZWRlbnRpYWxzLmF2YWlsYWJsZUNyZWRlbnRpYWxzLGE9bV8oKSxsPU5FKCgwLG8udXNlU3RhdGUpKFwiXCIpLDIpO3JldHVybnthdmFpbGFibGVDcmVkZW50aWFsczppLGJhY2tMYWJlbDpuLHJlZGlyZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIGEoe3VzZXJuYW1lOm54KHIudW5zYWZlVW5lc2NhcGVkU3RyaW5nKX0pfSx0aXRsZTp0LGVycm9yOmxbMF0sc2V0RXJyb3I6bFsxXX19KHtjb21tb25Mb2dpblN0cmluZ3M6cEMsY3JlZGVudGlhbFBpY2tlclN0cmluZ3M6TUV9KSxhPWkuYXZhaWxhYmxlQ3JlZGVudGlhbHMsbD1pLmJhY2tMYWJlbCxzPWkucmVkaXJlY3QsYz1pLnRpdGxlLHU9aS5zZXRFcnJvcixkPWkuZXJyb3I7ZmsoVHQuQ3JlZGVudGlhbFBpY2tlcixFdC5Mb2dpbik7dmFyIGY9T18oKTtuKCk7dmFyIHA9dCgpLGc9cigpLG09RkUoYSxzLHtjb21tb25Mb2dpblN0cmluZ3M6cEMsY3JlZGVudGlhbFBpY2tlclN0cmluZ3M6TUV9LHUpO3JldHVybiBfVChwQyx1KSwoMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLCRlLmpzeCkoUk8se3RpdGxlSWQ6XCJjcmVkZW50aWFsUGlja2VyVGl0bGVcIix0aXRsZTpjfSksZCYmKDAsJGUuanN4KShNayx7aWQ6XCJlcnJvclRleHRcIixcImFyaWEtcmVsZXZhbnRcIjpcInRleHRcIixcImFyaWEtYXRvbWljXCI6XCJ0cnVlXCIsY2xhc3NOYW1lOlNnKHAucm93LHAudGV4dEJvZHkscC50ZXh0QmxvY2tCb2R5LGcudGlsZUVycm9yLHAuYWxlcnRFcnJvciksY2hpbGRyZW46ZH0pLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnAuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkoQ2sse2FyaWFMYWJlbGxlZEJ5OlwiZXJyb3JUZXh0IFwiLmNvbmNhdChjKSxhcmlhRGVzY3JpYmVkQnk6Yyx0aWxlTGlzdDptfSl9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpwLndpbkJ1dHRvblBpbkJvdHRvbSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpwLmJ1dHRvbk1hcmdpbixjaGlsZHJlbjooMCwkZS5qc3gpKEZfLHtjaGlsZHJlbjooMCwkZS5qc3gpKFVfLHtidXR0b25JZDpcImJhY2tCdXR0b25cIixsYWJlbDpsLGlzUHJpbWFyeTohMSxhcmlhTGFiZWw6bCxvbkNsaWNrOmZ9KX0pfSl9KV19KX0sSEU9e2FjY291bnRVbmF2YWlsYWJsZVRpdGxlOlwiQWNjb3VudCBVbmF2YWlsYWJsZVwiLGxvY2tvdXRSZWFzb25JbmNvcnJlY3RQYXNzd29yZFRvb01hbnlUaW1lczpcIlNvbWVvbmUgZW50ZXJlZCB0aGUgd3JvbmcgcGFzc3dvcmQgdG9vIG1hbnkgdGltZXMuXCIsbG9ja291dFJlYXNvbk9yZ0FjY291bnROb3RSZWFkeTpcIklmIHlvdSBzaWduZWQgdXAgZm9yIHRoaXMgYWNjb3VudCB0aHJvdWdoIGFuIG9yZ2FuaXphdGlvbiwgeW91IG1pZ2h0IG5vdCBiZSBhYmxlIHRvIHVzZSBpdCB5ZXQuXCIscmVzZXRQYXNzd29yZExpbmtUZXh0OlwiUmVzZXQgeW91ciBwYXNzd29yZFwiLHJlbWFpblNpZ25lZEluVGV4dDpcIlJlbWFpbiBzaWduZWQgaW4gd2l0aCB0aGlzIGFjY291bnQuXCIsYWxyZWFkeVNpZ25lZEluVGl0bGU6XCJZb3UncmUgYWxyZWFkeSBzaWduZWQgaW4uXCIsaW52aXRlQmxvY2tlZEVycm9yOlwiU29ycnksIHlvdSBjYW4ndCB1c2UgeW91ciB7MH0gYWNjb3VudCB0byBzaWduIGluIGhlcmUuXCIsc2VydmljZUJsb2NrZWRFcnJvcjpcIlNvcnJ5LCB3ZSBjYW4ndCBzaWduIHlvdSBpbiBoZXJlIHdpdGggeW91ciB7MH0gYWNjb3VudC5cIixpZHBGYWlsZWRHZW5lcmljRXJyb3I6XCJZb3VyIG9yZ2FuaXphdGlvbiBjb3VsZCBub3Qgc2lnbiB5b3UgaW4gdG8gdGhpcyBzZXJ2aWNlLlwiLGlkcEZhaWxlZEVycm9yOlwiezB9IGNvdWxkIG5vdCBzaWduIHlvdSBpbiBoZXJlLlwiLGxvY2tvdXRUaXRsZTpcIlNpZ24taW4gaXMgYmxvY2tlZFwiLGdlbmVyaWNFcnJvclRpdGxlOlwiU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIGNhbid0IHNpZ24geW91IGluIHJpZ2h0IG5vdy4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIixsb2Nrb3V0QW5vdGhlcklkVGV4dDpcIlNpZ24gaW4gdXNpbmcgYW5vdGhlciBNaWNyb3NvZnQgYWNjb3VudFwiLHN3aXRjaFVzZXJTaWduT3V0VGhlblNpZ25JbjpcIlNpZ24gb3V0IGFuZCBzaWduIGluIHdpdGggYSBkaWZmZXJlbnQgYWNjb3VudC5cIixzd2l0Y2hVc2VyRGlmZmVyZW50SWQ6XCJTaWduIGluIHdpdGggYSBkaWZmZXJlbnQgTWljcm9zb2Z0IGFjY291bnRcIixiaW5kRmFpbGVkQWxyZWFkeUJvdW5kRGVzY1NhbXN1bmc6XCJUaGlzIE1pY3Jvc29mdCBhY2NvdW50IGlzIGFscmVhZHkgY29ubmVjdGVkIHRvIGEgU2Ftc3VuZyBhY2NvdW50LiBZb3UgY2FuIG9ubHkgY29ubmVjdCBvbmUgTWljcm9zb2Z0IGFjY291bnQgdG8gb25lIFNhbXN1bmcgYWNjb3VudC4gVG8gcmVtb3ZlIHRoZSBjdXJyZW50IFNhbXN1bmcgYWNjb3VudCwgZ28gdG8geW91ciA8bWFuYWdlQ3JlZHNVcmw+TWljcm9zb2Z0IGFjY291bnQgc2V0dGluZ3M8L21hbmFnZUNyZWRzVXJsPi5cIixsb2Nrb3V0RGVzYzpcIlNpZ24taW4gd2l0aCA8Ym9sZFRleHQ+ezB9PC9ib2xkVGV4dD4gaXMgYmxvY2tlZCBmb3Igb25lIG9mIHRoZXNlIHJlYXNvbnM6XCJ9LFZFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQmJlZQKHQpPygwLHN0Llo3KShlLEtQKHQsITEsITApKTplfSxXRT1mdW5jdGlvbihlLHQsbixyKXt2YXIgbz0hbnx8IXI7c3dpdGNoKHQpe2Nhc2UgQlA6cmV0dXJuXCJcIjtjYXNlIHhQOmNhc2UgTFA6Y2FzZSBJUDpyZXR1cm4gZS5hbHJlYWR5U2lnbmVkSW5UaXRsZTtjYXNlIFBQOnJldHVybiBWRShlLmludml0ZUJsb2NrZWRFcnJvcixuKTtjYXNlIE9QOnJldHVybiBWRShlLnNlcnZpY2VCbG9ja2VkRXJyb3Isbik7Y2FzZSBfUDpyZXR1cm4gbz9lLmlkcEZhaWxlZEdlbmVyaWNFcnJvcjpmdW5jdGlvbihlLHQpe3JldHVybiB0PygwLHN0Llo3KShlLHQpOmV9KGUuaWRwRmFpbGVkRXJyb3Iscik7Y2FzZSBTUDpjYXNlIGpQOmNhc2UgRVA6cmV0dXJuIGUubG9ja291dFRpdGxlO2RlZmF1bHQ6cmV0dXJuIGUuZ2VuZXJpY0Vycm9yVGl0bGV9fSxHRT1mdW5jdGlvbihlKXt2YXIgdD0oMCxvLnVzZVJlZikobnVsbCk7cmV0dXJuKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe2UmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09dHx8bnVsbD09PShlPXQuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuZm9jdXMoKX0pLGhwKX0pLFtlXSksdH0sJEU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21tb25Mb2dpblN0cmluZ3Msbj1lLmVycm9yVmlld1N0cmluZ3Mscj1uLnJlbWFpblNpZ25lZEluVGV4dCxpPW4ucmVzZXRQYXNzd29yZExpbmtUZXh0LGE9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUuZGVidWdJbmZvLmVycm9yQ29kZSxsPXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcy5mcmllbmRseUFwcE5hbWUscz1JdC5kZWZhdWx0Lmluc3RhbmNlLGM9cy5lcnJvclRleHQsdT1zLm1hbmFnZUNyZWRzVXJsLGQ9cy5wb3N0VXNlcm5hbWUsZj1zLnJlc2V0UGFzc3dvcmRVcmwscD1zLnNpZ25JblVzZXJuYW1lLGc9cy5zd2l0Y2hVc2VyVXJsLG09Zk8uaW5zdGFuY2UsaD1tLmZlZFBhcnRuZXJOYW1lLGI9bS5sb2dpbk1vZGUseT1tLmxvZ2luU3RyaW5nc1ZhcmlhbnQsdj1tLmRlZmF1bHRTaWduSW5IZWFkZXIsdz1tLmFwcEJyYW5kZWRTaWduSW5IZWFkZXIsUz1tLnN0YXlTaWduSW5VcmwsUD1cImxvZ2luSGVhZGVyXCIseD1cImlkVERfRXJyb3JcIixPPVdPKGIsbCx0KSxfPWI9PT1CUCxDPWZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIHQ/ZS5hY2NvdW50VW5hdmFpbGFibGVUaXRsZTpHTyhuLHIsbyl9KEhFLF8seSx2LHcpLGs9Yj09PXZQfHxiPT09a1B8fGI9PT1UUCxBPWI9PT14UHx8Yj09PUxQfHxiPT09SVAsVD1cIlwiO2t8fChUPUE/cDpkLnVuc2FmZVVuZXNjYXBlZFN0cmluZ3x8cCk7dmFyIEU9V0UoSEUsYixULGgpLGo9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZuPT09TVAuUFBfRV9JRFBfQklORElOR19FWElTVFNfU0FNU1VORz9lLmJpbmRGYWlsZWRBbHJlYWR5Qm91bmREZXNjU2Ftc3VuZzp0fShIRSxjLGEpLEk9Yj09PVNQfHxiPT09alB8fGI9PT1FUCxMPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj8oMCxzdC5aNykoZS5sb2Nrb3V0RGVzYyx0KTp0fShIRSxULEkpLEQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0P2UubG9ja291dEFub3RoZXJJZFRleHQ6bj9lLnN3aXRjaFVzZXJTaWduT3V0VGhlblNpZ25JbjplLnN3aXRjaFVzZXJEaWZmZXJlbnRJZH0oSEUsSSxBKSxOPWE9PT1NUC5QUF9FX0lEUF9CSU5ESU5HX0VYSVNUU19TQU1TVU5HLFI9XCJcIi5jb25jYXQoUCxcIiBcIikuY29uY2F0KHgpO3JldHVybntkb2N1bWVudFRpdGxlOk8sbGlnaHRib3hUaXRsZTpDLGxpZ2h0Ym94VGl0bGVJZDpQLGxvZ2luTW9kZUVycm9yRGVzYzpFLGxvZ2luTW9kZUVycm9yRGVzY0lkOngsZXJyb3JDb2RlRGVzY3JpcHRpb246aix1c2VybmFtZURlc2NyaXB0aW9uOkwsaXNCaW5kRmFpbGVkTW9kZTpfLGlzR2VuZXJpY0Vycm9yTW9kZTprLGlzU3dpdGNoVXNlck1vZGU6QSxpc0hpcExvY2tlZE1vZGU6SSxtYW5hZ2VDcmVkc0xpbms6e3JlZjpHRSghMCksaWQ6XCJtYW5hZ2VDcmVkc1VybFwiLGFyaWFEZXNjcmliZWRCeTpSLGhyZWY6dSx0ZXh0OlwiXCJ9LHJlc2V0UGFzc3dvcmRMaW5rOntyZWY6R0UoIU4mJkkpLGlkOlwiaTEwMTFcIixhcmlhRGVzY3JpYmVkQnk6IU4mJkk/Ujp2b2lkIDAsaHJlZjpmLHRleHQ6aX0sc3RheVNpZ25Jbkxpbms6e3JlZjpHRSghTiYmIUkmJkEpLGlkOlwiaTEwNTJcIixhcmlhRGVzY3JpYmVkQnk6Tnx8SXx8IUE/dm9pZCAwOlIsaHJlZjpTLHRleHQ6cn0sc3dpdGNoVXNlckxpbms6e3JlZjpHRSghTiYmIUkmJiFBKSxpZDpcImkxMDUxXCIsYXJpYURlc2NyaWJlZEJ5Ok58fEl8fEE/dm9pZCAwOlIsaHJlZjpnLHRleHQ6RH19fSxLRT1vLmZvcndhcmRSZWYoKGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jaGlsZHJlbixyPWUuaWQsbz1lLmFyaWFEZXNjcmliZWRCeSxpPWUuaHJlZjtyZXR1cm4oMCwkZS5qc3gpKFwiYVwiLHtyZWY6dCxpZDpyLFwiYXJpYS1kZXNjcmliZWRieVwiOm8saHJlZjppLGNoaWxkcmVuOm59KX0pKSxxRT1mdW5jdGlvbigpe3ZhciBlPVVtLmluc3RhbmNlLHQ9ZS51c2VDb21tb25TdHlsZXMsbj1lLnVzZVN0YXRpY0NvbW1vblN0eWxlcyxyPSRFKHtjb21tb25Mb2dpblN0cmluZ3M6cEMsZXJyb3JWaWV3U3RyaW5nczpIRX0pLG89ci5kb2N1bWVudFRpdGxlLGk9ci5saWdodGJveFRpdGxlLGE9ci5saWdodGJveFRpdGxlSWQsbD1yLmxvZ2luTW9kZUVycm9yRGVzYyxzPXIubG9naW5Nb2RlRXJyb3JEZXNjSWQsYz1yLmVycm9yQ29kZURlc2NyaXB0aW9uLHU9ci51c2VybmFtZURlc2NyaXB0aW9uLGQ9ci5pc0JpbmRGYWlsZWRNb2RlLGY9ci5pc0dlbmVyaWNFcnJvck1vZGUscD1yLmlzU3dpdGNoVXNlck1vZGUsZz1yLmlzSGlwTG9ja2VkTW9kZSxtPXIubWFuYWdlQ3JlZHNMaW5rLGg9ci5yZXNldFBhc3N3b3JkTGluayxiPXIuc3RheVNpZ25JbkxpbmsseT1yLnN3aXRjaFVzZXJMaW5rLHY9SEUubG9ja291dFJlYXNvbkluY29ycmVjdFBhc3N3b3JkVG9vTWFueVRpbWVzLHc9SEUubG9ja291dFJlYXNvbk9yZ0FjY291bnROb3RSZWFkeSxTPW9ULFA9dCgpO2ZrKFR0LkVycm9yLEV0LkxvZ2luKSxhayhvKSxuKCk7dmFyIHgsTyxfLEMsayxBPShPPSh4PW0pLnJlZixfPXguaWQsQz14LmFyaWFEZXNjcmliZWRCeSxrPXguaHJlZixmdW5jdGlvbihlKXtyZXR1cm4oMCwkZS5qc3gpKEtFLHtyZWY6TyxpZDpfLGFyaWFEZXNjcmliZWRCeTpDLGhyZWY6ayxjaGlsZHJlbjplfSl9KTtyZXR1cm4oMCwkZS5qc3hzKSgkZS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLCRlLmpzeCkod1Qse3RpdGxlSWQ6YSx0aXRsZTppLHNob3dTdWJ0aXRsZTohZH0pLCgwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpQLnRleHRCbG9ja0JvZHksY2hpbGRyZW46W2wmJigwLCRlLmpzeCkoTWsse2lkOnMsY2xhc3NOYW1lOlNnKFAudGV4dEJvZHksUC5lcnJvciksY2hpbGRyZW46bH0pLGMmJigwLCRlLmpzeCkoTWsse2lkOlwiZXJyb3JfSW5mb1wiLGNsYXNzTmFtZTpTZyhQLnRleHRCb2R5LFAuZXJyb3IpLGNoaWxkcmVuOigwLCRlLmpzeCkoYncse3RleHQ6YyxlbWJlZGRlZEJpbmRpbmdzOnttYW5hZ2VDcmVkc1VybDpBfX0pfSksdSYmKDAsJGUuanN4KShcImRpdlwiLHtpZDpcInVzZXJuYW1lXCIsY2xhc3NOYW1lOlNnKFAucm93LFAudGV4dEJvZHkpLGNoaWxkcmVuOigwLCRlLmpzeCkoYncse3RleHQ6dSxlbWJlZGRlZEJpbmRpbmdzOntib2xkVGV4dDpTfX0pfSksZyYmKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKFAucm93LFAudGV4dEJvZHkpLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpQLmZvcm1Hcm91cCxjaGlsZHJlbjp2fSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6UC5mb3JtR3JvdXAsY2hpbGRyZW46d30pXX0pXX0pLCFmJiYoMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6UC5yb3csY2hpbGRyZW46W2cmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlAuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJhXCIse3JlZjpoLnJlZixpZDpoLmlkLFwiYXJpYS1kZXNjcmliZWRieVwiOmguYXJpYURlc2NyaWJlZEJ5LGhyZWY6aC5ocmVmLGNoaWxkcmVuOmgudGV4dH0pfSkscCYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6UC5mb3JtR3JvdXAsY2hpbGRyZW46KDAsJGUuanN4KShcImFcIix7cmVmOmIucmVmLGlkOmIuaWQsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6Yi5hcmlhRGVzY3JpYmVkQnksaHJlZjpiLmhyZWYsY2hpbGRyZW46Yi50ZXh0fSl9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpQLmZvcm1Hcm91cCxjaGlsZHJlbjooMCwkZS5qc3gpKFwiYVwiLHtyZWY6eS5yZWYsaWQ6eS5pZCxcImFyaWEtZGVzY3JpYmVkYnlcIjp5LmFyaWFEZXNjcmliZWRCeSxocmVmOnkuaHJlZixjaGlsZHJlbjp5LnRleHR9KX0pXX0pXX0pfSxRRT1mdW5jdGlvbihlKXt2YXIgdD1lLmVycm9yTWVzc2FnZSxuPXZvaWQgMD09PXQ/XCJcIjp0LHI9ISFuLG89ZS5zaG93RXJyb3JNZXNzYWdlLGk9dm9pZCAwPT09bz9yOm8sYT1lLmRpc3BsYXlFcnJvclN0eWxpbmc7cmV0dXJue3Nob3dFcnJvck1lc3NhZ2U6aSxkaXNwbGF5RXJyb3JTdHlsaW5nOnZvaWQgMD09PWE/aSYmcjphLGVycm9yTWVzc2FnZTpufX07ZnVuY3Rpb24gWEUoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFlFKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIFlFKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBZRShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBaRT0yMDAsSkU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZCxuPWUubmFtZSxyPWUucGxhY2Vob2xkZXIsaT1lLnR5cGUsYT1lLnZhbHVlLGw9dm9pZCAwPT09YT9cIlwiOmEscz1lLm1heExlbmd0aCxjPXZvaWQgMD09PXM/MTIwOnMsdT1lLmhhc0ZvY3VzLGQ9dm9pZCAwIT09dSYmdSxmPWUuaGFzSW5pdGlhbEZvY3VzLHA9dm9pZCAwPT09Zj9kOmYsZz1lLmRpc3BsYXlFcnJvclN0eWxpbmcsbT12b2lkIDAhPT1nJiZnLGg9ZVtcImFyaWEtcmVxdWlyZWRcIl0sYj1lW1wiYXJpYS1kZXNjcmliZWRieVwiXSx5PWVbXCJhcmlhLWxhYmVsXCJdLHY9ZVtcImFyaWEtbGFiZWxsZWRieVwiXSx3PWUuZGlzYWJsZWQsUz12b2lkIDAhPT13JiZ3LFA9ZS5jdXN0b21Dc3MseD1lLmF1dG9Db21wbGV0ZSxPPWUuYXV0b0NvcnJlY3QsXz1lLmF1dG9DYXBpdGFsaXplLEM9ZS5vbkNoYW5nZSxrPXZvaWQgMD09PUM/ZnVuY3Rpb24oKXt9OkMsQT1lLm9uRm9jdXMsVD12b2lkIDA9PT1BP2Z1bmN0aW9uKCl7fTpBLEU9ZS5vbkJsdXIsaj12b2lkIDA9PT1FP2Z1bmN0aW9uKCl7fTpFLEk9ZS5vbktleVVwLEw9dm9pZCAwPT09ST9mdW5jdGlvbigpe306SSxEPWUudXNlQm9yZGVyU3R5bGluZyxOPXZvaWQgMCE9PUQmJkQsUj1lLm1pbixCPWUubWF4LFU9ZS5lbGVtZW50UmVmLEY9KDAsby51c2VSZWYpKG51bGwpO1UmJihGPVUpO3ZhciBNPVhFKCgwLG8udXNlU3RhdGUpKCExKSwyKSx6PU1bMF0sSD1NWzFdLFY9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLmFjY2VudENvbG9ycy5wcmltYXJ5QnV0dG9uRGVmYXVsdENvbG9yLFc9VWQsRz1NZCwkPVZ8fHpkLEs9SGQscT1YRSgoMCxvLnVzZVN0YXRlKShwPyQ6VyksMiksUT1xWzBdLFg9cVsxXTtUUygoZnVuY3Rpb24oKXtwJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciBlLHQ7bnVsbD09PShlPUYpfHx2b2lkIDA9PT1lfHxudWxsPT09KHQ9ZS5jdXJyZW50KXx8dm9pZCAwPT09dHx8dC5mb2N1cygpfSksWkUpfSkpLCgwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtpZihkKXt2YXIgZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3ZhciBlLHQ7bnVsbD09PShlPUYpfHx2b2lkIDA9PT1lfHxudWxsPT09KHQ9ZS5jdXJyZW50KXx8dm9pZCAwPT09dHx8dC5mb2N1cygpfSksWkUpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQoZSl9fXJldHVybiBmdW5jdGlvbigpe319KSxbZF0pLCgwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXt2YXIgZT1XO20/ZT1LOmQ/ZT0kOnomJihlPUcpLFgoZSl9KSxbSyxkLCQseixHLFcsbV0pO3ZhciBZPU4mJiFVP3tib3JkZXJDb2xvcjpRfTp2b2lkIDA7cmV0dXJuKDAsJGUuanN4KShcImlucHV0XCIse3JlZjpGLGlkOnQsXCJkYXRhLXRlc3RpZFwiOnQsbmFtZTpuLHBsYWNlaG9sZGVyOnIsdHlwZTppLHZhbHVlOmwsbWF4TGVuZ3RoOmMsZGlzYWJsZWQ6UyxcImFyaWEtcmVxdWlyZWRcIjpoLFwiYXJpYS1sYWJlbFwiOnksXCJhcmlhLWxhYmVsbGVkYnlcIjp2LFwiYXJpYS1kZXNjcmliZWRieVwiOmIsY2xhc3NOYW1lOlAsYXV0b0NvbXBsZXRlOngsYXV0b0NvcnJlY3Q6TyxhdXRvQ2FwaXRhbGl6ZTpfLG9uQ2hhbmdlOmssb25CbHVyOmosb25Gb2N1czpULG9uTW91c2VPdmVyOmZ1bmN0aW9uKCl7cmV0dXJuIEgoITApfSxvbk1vdXNlT3V0OmZ1bmN0aW9uKCl7cmV0dXJuIEgoITEpfSxvbktleVVwOkwsc3R5bGU6WSxtaW46UixtYXg6Qn0pfSxlaj1bXCJkaXJcIixcImN1c3RvbUNzc1dyYXBwZXJcIixcImVycm9ySWRcIixcImVuYWJsZUFyaWFMaXZlVXBkYXRlc1wiXTtmdW5jdGlvbiB0aihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gbmooZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/dGooT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyaihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6dGooT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gcmooZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIG9qKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxpPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxpLmxlbmd0aDtyKyspbj1pW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb312YXIgaWo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXIsbj1lLmN1c3RvbUNzc1dyYXBwZXIscj1lLmVycm9ySWQsbz1lLmVuYWJsZUFyaWFMaXZlVXBkYXRlcyxpPW9qKGUsZWopLGE9aS5pZCxsPWkuY3VzdG9tQ3NzLHM9VW0uaW5zdGFuY2UsYz1zLnVzZUNvbW1vblN0eWxlcyx1PXMudXNlVGV4dElucHV0U3R5bGVzLGQ9YygpLGY9dSgpLHA9UUUoZSksZz1wLnNob3dFcnJvck1lc3NhZ2UsbT1wLmRpc3BsYXlFcnJvclN0eWxpbmcsaD1wLmVycm9yTWVzc2FnZTtyZXR1cm4oMCwkZS5qc3hzKShcImRpdlwiLHtcImRhdGEtdGVzdGlkXCI6XCJpbnB1dENvbXBvbmVudFdyYXBwZXJcIixjbGFzc05hbWU6U2coZC5yb3csbiksY2hpbGRyZW46W2cmJigwLCRlLmpzeCkoTWsse2lkOm51bGwhPXI/cjpcIlwiLmNvbmNhdChhLFwiRXJyb3JcIiksZW5hYmxlQXJpYUxpdmVVcGRhdGVzOm8sY2hpbGRyZW46aH0pLCgwLCRlLmpzeCkoXCJkaXZcIix7ZGlyOnQsY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2coZC5mb3JtQ29udHJvbCxkLmZvcm1Hcm91cCxmLnRleHRib3gsbCksY2hpbGRyZW46KDAsJGUuanN4KShKRSxuaihuaih7fSxpKSx7fSx7Y3VzdG9tQ3NzOlNnKG0/XCJoYXMtZXJyb3JcIjpcIlwiLGwpLHVzZUJvcmRlclN0eWxpbmc6ITAsZGlzcGxheUVycm9yU3R5bGluZzptfSkpfSl9KV19KX07ZnVuY3Rpb24gYWooZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIGxqKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2FqKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7c2ooZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmFqKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHNqKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBjaihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdWooZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdWooZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHVqKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIGRqPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiXCIsdD0hIWUsbj0oMCxvLnVzZVN0YXRlKShlKSxyPWNqKG4sMiksaT1yWzBdLGE9clsxXSxsPSgwLG8udXNlU3RhdGUpKFwiXCIpLHM9Y2oobCwyKSxjPXNbMF0sdT1zWzFdLGQ9KDAsby51c2VTdGF0ZSkodCksZj1jaihkLDIpLHA9ZlswXSxnPWZbMV0sbT1pfHxjLGg9ISFtO3JldHVybntzZXJ2ZXJFcnJvcjppLHNldFNlcnZlckVycm9yOmEsdmFsaWRhdGlvbkVycm9yOmMsc2V0VmFsaWRhdGlvbkVycm9yOnUsc2hvd0Vycm9yTWVzc2FnZTpwLHNldFNob3dFcnJvck1lc3NhZ2U6ZyxlcnJvck1lc3NhZ2U6bSxoYXNFcnJvcjpofX0sZmo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pbml0aWFsU2VydmVyRXJyb3Isbj12b2lkIDA9PT10P1wiXCI6dCxyPWUuaGFzSW5pdGlhbEZvY3VzLGk9dm9pZCAwIT09ciYmcixhPWUuaW5pdGlhbFZhbHVlLGw9dm9pZCAwPT09YT9cIlwiOmEscz1lLmNsZWFyU2VydmVyRXJyb3JPbkNoYW5nZSxjPXZvaWQgMD09PXN8fHMsdT1lLmltbWVkaWF0ZWx5U2hvd1ZhbGlkYXRpb25FcnJvcnNBZnRlclN1Ym1pdCxkPXZvaWQgMD09PXV8fHUsZj1lLnZhbGlkYXRpb25NZXRob2QscD1lLnVzZUVsZW1lbnRSZWYsZz12b2lkIDAhPT1wJiZwLG09ZGoobiksaD1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdD1jaigoMCxvLnVzZVN0YXRlKShlKSwyKSxuPXRbMF0scj10WzFdLGk9ZnVuY3Rpb24oKXtyZXR1cm4gcighMSl9LGE9ZnVuY3Rpb24oKXtyZXR1cm4gcighMCl9O3JldHVybntoYXNGb2N1czpuLHNldEZvY3VzOnIsb25CbHVyOmksb25Gb2N1czphfX0oaSksYj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcIlwiLHQ9Y2ooKDAsby51c2VTdGF0ZSkoZSksMiksbj10WzBdLHI9dFsxXTtyZXR1cm57dmFsdWU6bixzZXRWYWx1ZTpyfX0obCkseT1jaigoMCxvLnVzZVN0YXRlKSghMSksMiksdj15WzBdLHc9eVsxXSxTPSgwLG8udXNlUmVmKShudWxsKSxQPWZ1bmN0aW9uKGUpe2lmKGYpe3ZhciB0PWYoZSk7bS5zZXRWYWxpZGF0aW9uRXJyb3IodCksdiYmdCYmbS5zZXRTaG93RXJyb3JNZXNzYWdlKGQpfX07cmV0dXJuIFRTKChmdW5jdGlvbigpe1AobCl9KSksbGoobGoobGooe2Vycm9yOm19LGgpLGIpLHt9LHtvbkNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdD1cInN0cmluZ1wiPT10eXBlb2YgZT9lOmUudGFyZ2V0LnZhbHVlO3JldHVybiBiLnNldFZhbHVlKHQpLGMmJm0uc2VydmVyRXJyb3ImJihtLnNldFNlcnZlckVycm9yKFwiXCIpLG0uc2V0U2hvd0Vycm9yTWVzc2FnZSghMSkpLFAodCksdH0sdXNlckhhc1N1Ym1pdHRlZDp2LHNldFVzZXJIYXNTdWJtaXR0ZWQ6dyxlbGVtZW50UmVmOmc/Uzp2b2lkIDB9KX0scGo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5oYXNJbml0aWFsRm9jdXMsbj1lLnZhbGlkYXRpb25NZXRob2Qscj1lLmluaXRpYWxWYWx1ZSxvPWUuY29tbW9uTG9naW5TdHJpbmdzLGk9T1Qobykuc2VydmVyRXJyb3I7cmV0dXJuIGZqKHtpbml0aWFsVmFsdWU6cixoYXNJbml0aWFsRm9jdXM6dCxpbml0aWFsU2VydmVyRXJyb3I6aSx2YWxpZGF0aW9uTWV0aG9kOm59KX0sZ2o9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZS5wcm9vZixpPXIuZW50ZXJDb2RlRGVzY3JpcHRpb24sYT0oMCxzdC5aNykoaSxcIlwiLmNvbmNhdChuLFwiXHUyMDBlXCIpKTtyZXR1cm4gZS5jcmVkZW50aWFsVHlwZT09PSRQLk9uZVRpbWVDb2RlJiYoYT1vLmNsZWFyRGlnaXRzJiYhdD8oMCxzdC5aNykoaSxcIlwiLmNvbmNhdChvLmRpc3BsYXksXCJcdTIwMGVcIikpOm8uY2xlYXJEaWdpdHM/ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4uY29kZVNlbnRJZk1hdGNoRGVzY3JpcHRpb25FbWFpbCxvPW4uY29kZVNlbnRJZk1hdGNoRGVzY3JpcHRpb25TbXMsaT1uLmNvZGVTZW50SWZNYXRjaERlc2NyaXB0aW9uVm9pY2UsYT1cIlwiO2U9PT1KUC5FbWFpbD9hPXI6ZT09PUpQLlNNUz9hPW86ZT09PUpQLlZvaWNlJiYoYT1pKTt2YXIgbD1bXCJcIi5jb25jYXQodCxcIlx1MjAwZVwiKSxcIjRcIl07cmV0dXJuIHN0Llo3LmFwcGx5KHZvaWQgMCxbYV0uY29uY2F0KGwpKX0oby50eXBlLHQscik6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4uY29kZVNlbnREZXNjcmlwdGlvbkVtYWlsLG89bi5jb2RlU2VudERlc2NyaXB0aW9uU21zLGk9bi5jb2RlU2VudERlc2NyaXB0aW9uVm9pY2UsYT1cIlwiO3JldHVybiBlPT09SlAuRW1haWw/YT1yOmU9PT1KUC5TTVM/YT1vOmU9PT1KUC5Wb2ljZSYmKGE9aSksKDAsc3QuWjcpKGEsXCJcIi5jb25jYXQodCxcIlx1MjAwZVwiKSl9KG8udHlwZSxvLmRpc3BsYXkscikpLGF9O2Z1bmN0aW9uIG1qKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBoaihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBoaihlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gaGooZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgYmo9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmNvbW1vbkxvZ2luU3RyaW5ncyxyPWUub25lVGltZUNvZGVWaWV3U3RyaW5ncyxpPUl0LmRlZmF1bHQuaW5zdGFuY2UsYT1pLmFjdGl2ZUZsYXZvcixsPWkucG9zdFVybCxzPWkudGVsZW1ldHJ5LGM9Zk8uaW5zdGFuY2UsdT1jLmxvZ2luTW9kZSxkPWMucmF3UXVlcnlTdHJpbmcsZj0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZS51c2VyLHA9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLmZyaWVuZGx5QXBwTmFtZSxnPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZS5jcmVkZW50aWFscyxtPWcuYXZhaWxhYmxlQ3JlZGVudGlhbHMsaD1nLm90Y0NyZWRlbnRpYWwsYj1nLnByb29mQ29uZmlybWF0aW9uLHk9UnQocyx7YWN0aXZlVmlldzpUdC5PbmVUaW1lQ29kZSxhY3RpdmVGbG93OkV0LkxvZ2luLGFjdGl2ZUZsYXZvcjphfSkubG9nU2VydmljZURpYWdFdmVudDtpZih2b2lkIDA9PT1oKXRocm93IHkoe21ldHJpY05hbWU6cm4uT3RjQ3JlZGVudGlhbFVuZGVmaW5lZH0pLEVycm9yKFwiTG9naW5Db250ZXh0LmNyZWRlbnRpYWxzLm90Y0NyZWRlbnRpYWwgbXVzdCBiZSBkZWZpbmVkIG9uIHRoZSBPbmVUaW1lQ29kZSB2aWV3LlwiKTt2YXIgdj1mdW5jdGlvbihlLHQpe3ZhciBuPTE2LHI9dDtpZihlLmNyZWRlbnRpYWxUeXBlPT09JFAuT25lVGltZUNvZGUpe249MTA7dmFyIG89ZS5wcm9vZjtvLmRpc3BsYXkmJiFvLmNsZWFyRGlnaXRzJiZuQShlKSYmKHI9dEEoZSxvLnR5cGUpfHxcIlwiKX1yZXR1cm57b3RjTWF4TGVuZ3RoOm4sdXBkYXRlZFByb29mQ29uZmlybWF0aW9uOnJ9fShoLGIpLHc9di5vdGNNYXhMZW5ndGgsUz12LnVwZGF0ZWRQcm9vZkNvbmZpcm1hdGlvbixQPXIuZW50ZXJDb2RlQXJpYUxhYmVsLHg9ci5wbGFjZWhvbGRlcixPPXIucHJpbWFyeUJ1dHRvbkxhYmVsLF89ci50aXRsZSxDPVdPKHUscCxuKSxrPWYuZGlzcGxheVVzZXJuYW1lLnVuc2FmZVVuZXNjYXBlZFN0cmluZyxBPWdqKGgsUyxrLHIpLFQ9dl8obiksRT1ULmJyYW5kaW5nRGVzY3JpcHRpb24saj1ULmJyYW5kaW5nRGVzY3JpcHRpb25JZCxJPVQucmVuZGVyQnJhbmRpbmdEZXNjcmlwdGlvbixMPVtcIm9uZVRpbWVDb2RlVGl0bGVcIixJP2o6XCJcIixcIm9uZVRpbWVDb2RlRGVzY3JpcHRpb25cIl0uam9pbihcIiBcIiksRD1kPygwLHN0LmZDKShkLGwpOmwsTj1oLmNyZWRlbnRpYWxUeXBlPT09JFAuT25lVGltZUNvZGU/bnVsbD09PSh0PWgucHJvb2YpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmRhdGE6bngoZi51c2VybmFtZS51bnNhZmVVbmVzY2FwZWRTdHJpbmcpLFI9ckEoaCxtKT9cIm5wb3RjXCI6XCJvdGNcIixCPW1qKCgwLG8udXNlU3RhdGUpKCExKSwyKSxVPUJbMF0sRj1CWzFdLE09e3NvdXJjZVZpZXdJZDpUdC5PbmVUaW1lQ29kZSxhdmFpbGFibGVDcmVkZW50aWFsczptLGN1cnJlbnRDcmVkZW50aWFsOmgsc2V0UmVxdWVzdFBlbmRpbmdGbGFnOkYsc2hvdWxkVXBkYXRlT3RjQ3JlZGVudGlhbDohMH0sej1oXygpO3JldHVybnticmFuZGluZ0Rlc2NyaXB0aW9uUHJvcGVydGllczp7YnJhbmRpbmdEZXNjcmlwdGlvbjpFLGJyYW5kaW5nRGVzY3JpcHRpb25JZDpqLHJlbmRlckJyYW5kaW5nRGVzY3JpcHRpb246SX0sY2FuR29CYWNrOnosY3JlZGVudGlhbFN3aXRjaExpbmtzUHJvcHM6TSxkb2N1bWVudFRpdGxlOkMsZW50ZXJDb2RlQXJpYURlc2NyaWJlZEJ5OkwsZW50ZXJDb2RlQXJpYUxhYmVsOlAsaXNSZXF1ZXN0UGVuZGluZzpVLG90Y0NyZWRlbnRpYWw6aCxvdGNJbnB1dE5hbWU6UixvdGNNYXhMZW5ndGg6dyxwbGFjZWhvbGRlcjp4LHByaW1hcnlCdXR0b25MYWJlbDpPLHByb29mQ29uZmlybWF0aW9uOlMscHJvb2ZEYXRhOk4scG9zdFVybDpELHNob3dDaGFuZ2VVc2VyTGluazpuXygheiksdGl0bGU6Xyx1bnNhZmVQYWdlRGVzY3JpcHRpb246QX19LHlqPXtjb2RlU2VudERlc2NyaXB0aW9uRW1haWw6XCJXZSBlbWFpbGVkIGEgY29kZSB0byB7MH0uIFBsZWFzZSBlbnRlciB0aGUgY29kZSB0byBzaWduIGluLlwiLGNvZGVTZW50RGVzY3JpcHRpb25TbXM6XCJXZSB0ZXh0ZWQgeW91ciBwaG9uZSB7MH0uIFBsZWFzZSBlbnRlciB0aGUgY29kZSB0byBzaWduIGluLlwiLGNvZGVTZW50RGVzY3JpcHRpb25Wb2ljZTpcIldlIGNhbGxlZCB5b3VyIHBob25lIHswfS4gUGxlYXNlIGVudGVyIHRoZSBjb2RlIHRvIHNpZ24gaW4uXCIsY29kZVNlbnRJZk1hdGNoRGVzY3JpcHRpb25FbWFpbDpcIklmIHswfSBtYXRjaGVzIHRoZSBlbWFpbCBhZGRyZXNzIG9uIHlvdXIgYWNjb3VudCwgd2UnbGwgc2VuZCB5b3UgYSBjb2RlLlwiLGNvZGVTZW50SWZNYXRjaERlc2NyaXB0aW9uU21zOlwiSWYgezB9IG1hdGNoZXMgdGhlIGxhc3QgezF9IGRpZ2l0cyBvZiB0aGUgcGhvbmUgbnVtYmVyIG9uIHlvdXIgYWNjb3VudCwgd2UnbGwgc2VuZCB5b3UgYSBjb2RlLlwiLGNvZGVTZW50SWZNYXRjaERlc2NyaXB0aW9uVm9pY2U6XCJJZiB7MH0gbWF0Y2hlcyB0aGUgbGFzdCB7MX0gZGlnaXRzIG9mIHRoZSBwaG9uZSBudW1iZXIgb24geW91ciBhY2NvdW50LCB3ZSdsbCBjYWxsIHlvdSB3aXRoIGEgY29kZS5cIixlbXB0eUNvZGVFcnJvcjpcIlRvIGNvbnRpbnVlLCBlbnRlciB0aGUgY29kZSB3ZSBqdXN0IHNlbnQgeW91LlwiLGVudGVyQ29kZUFyaWFMYWJlbDpcIkVudGVyIHRoZSBjb2RlIHlvdSByZWNlaXZlZFwiLGVudGVyQ29kZURlc2NyaXB0aW9uOlwiRW50ZXIgdGhlIGNvZGUgd2Ugc2VudCB0byB7MH1cIixpbnZhbGlkQ29kZUVycm9yOlwiVGhhdCBjb2RlIGRpZG4ndCB3b3JrLiBDaGVjayB0aGUgY29kZSBhbmQgdHJ5IGFnYWluLlwiLHBsYWNlaG9sZGVyOlwiRW50ZXIgY29kZVwiLHByaW1hcnlCdXR0b25MYWJlbDpcIlNpZ24gaW5cIix0aXRsZTpcIkVudGVyIGNvZGVcIn07ZnVuY3Rpb24gdmooZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHdqKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3ZqKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7U2ooZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnZqKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIFNqKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgUGo9ZnVuY3Rpb24oKXt2YXIgZT1VbS5pbnN0YW5jZSx0PWUudXNlQ29tbW9uU3R5bGVzLG49ZS51c2VTdGF0aWNDb21tb25TdHlsZXMscj1iaih7Y29tbW9uTG9naW5TdHJpbmdzOnBDLG9uZVRpbWVDb2RlVmlld1N0cmluZ3M6eWp9KSxpPXIuYnJhbmRpbmdEZXNjcmlwdGlvblByb3BlcnRpZXMsYT1pLmJyYW5kaW5nRGVzY3JpcHRpb24sbD1pLmJyYW5kaW5nRGVzY3JpcHRpb25JZCxzPWkucmVuZGVyQnJhbmRpbmdEZXNjcmlwdGlvbixjPXIuY2FuR29CYWNrLHU9ci5jcmVkZW50aWFsU3dpdGNoTGlua3NQcm9wcyxkPXIuZG9jdW1lbnRUaXRsZSxmPXIuZW50ZXJDb2RlQXJpYURlc2NyaWJlZEJ5LHA9ci5lbnRlckNvZGVBcmlhTGFiZWwsZz1yLm90Y0NyZWRlbnRpYWwsbT1yLm90Y0lucHV0TmFtZSxoPXIub3RjTWF4TGVuZ3RoLGI9ci5wbGFjZWhvbGRlcix5PXIucHJpbWFyeUJ1dHRvbkxhYmVsLHY9ci5wcm9vZkNvbmZpcm1hdGlvbix3PXIucHJvb2ZEYXRhLFM9ci5wb3N0VXJsLFA9ci5zaG93Q2hhbmdlVXNlckxpbmsseD1yLnRpdGxlLE89ci51bnNhZmVQYWdlRGVzY3JpcHRpb247ZmsoVHQuT25lVGltZUNvZGUsRXQuTG9naW4se3Nob3dCYWNrQnV0dG9uT25BY3RpdmVWaWV3OmN9KSxhayhkKSxuKCk7dmFyIF8sQyxrLEEsVCxFLGo9dCgpLEk9ZnVuY3Rpb24oZSl7dmFyIHQ9SXQuZGVmYXVsdC5pbnN0YW5jZSxuPXQuY29udGV4dCxyPXQuY2FuYXJ5VG9rZW5WYWx1ZSxpPXQuZmxvd1Rva2VuTmFtZSxhPXQuc2hvd0Nvb2tpZUJhbm5lcixsPWZPLmluc3RhbmNlLHM9bC5kZWZhdWx0TG9naW5PcHRpb25zLGM9bC5mb3VuZE1zYXMsdT1sLmlzRmlkb1N1cHBvcnRlZEhpbnQsZD1sLnBvc3RlZEZvcmNlU2lnbkluLGY9bC5yYW5kb21CbG9iLHA9bC51c2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sLGc9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUudXNlcixtPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZSxoPW0uY3JlZGVudGlhbHMuYXZhaWxhYmxlQ3JlZGVudGlhbHMsYj1tLnJlbW90ZU5nY1BhcmFtcyx5PSgwLG8udXNlQ29udGV4dCkoWmUpLmF1dGhTdGF0ZS5mbG93VG9rZW5WYWx1ZSx2PW54KGcudXNlcm5hbWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nKSx3PWcuZGlzcGxheVVzZXJuYW1lLnVuc2FmZVVuZXNjYXBlZFN0cmluZyxTPURpKHUscCksUD1zPT09Y3QucHQucmVtZW1iZXJQd2QseD1QP2N0LnB0LnJlbWVtYmVyUHdkOmN0LnB0Lm5vdGhpbmdDaGVja2VkLE89ckEoZSxoKT9jdC5nRS5vdGNOb1Bhc3N3b3JkOmN0LmdFLm90YztyZXR1cm57Y2FuYXJ5OnIsY2xlYW5zZWRVc2VybmFtZTp2LGNvbnRleHQ6bixkaXNwbGF5VXNlcm5hbWU6dyxmbG93VG9rZW5OYW1lOmksZmxvd1Rva2VuVmFsdWU6eSxmb3VuZE1zYXM6Yyxpc0ZpZG9TdXBwb3J0ZWQ6Uyxpc0ttc2lDaGVja2VkOlAsbG9naW5PcHRpb246eCxwYWdpbmF0ZWRTdGF0ZTpyUCxwb3N0VHlwZTpPLHBvc3RlZEZvcmNlU2lnbkluOmQscmFuZG9tQmxvYjpmLHJuZ2NEZWZhdWx0VHlwZTpiLmRlZmF1bHRUeXBlLHJuZ2NFbnRyb3B5OmIuZW50cm9weSxybmdjU2Vzc2lvbklkZW50aWZpZXI6Yi5zZXNzaW9uSWRlbnRpZmllcixzaG93Q29va2llQmFubmVyOmF9fShnKSxMPVNfKCksRD1MLnNob3dTd2l0Y2hUb0V2aWN0ZWRDcmVkUGlja2VyLE49TC5zaG93Q3JlZGVudGlhbFN3aXRjaENvbnRlbnQsUj0oXz0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZS51c2VyLmRpc3BsYXlVc2VybmFtZS51bnNhZmVVbmVzY2FwZWRTdHJpbmcsQz16UygpLHtzd2l0Y2hUb1Bob25lRGlzYW1iaWd1YXRpb25PbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIEMoVHQuT25lVGltZUNvZGUsQXcoVHQuUGhvbmVEaXNhbWJpZ3VhdGlvbikpfSxzaG93UGhvbmVEaXNhbWJpZ3VhdGlvbkxpbms6cl8oXyl9KSxCPVIuc3dpdGNoVG9QaG9uZURpc2FtYmlndWF0aW9uT25DbGljayxVPVIuc2hvd1Bob25lRGlzYW1iaWd1YXRpb25MaW5rLEY9KGs9Zy5jcmVkZW50aWFsVHlwZT09PSRQLk9uZVRpbWVDb2RlLFQ9KEE9eWopLmVtcHR5Q29kZUVycm9yLEU9QS5pbnZhbGlkQ29kZUVycm9yLGZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhlKTtyZXR1cm4gdCYmXCJcIiE9PXQudHJpbSgpP2smJiEvXlxcZCskLy50ZXN0KHQpP0U6XCJcIjpUfSksTT1waih7dmFsaWRhdGlvbk1ldGhvZDpGLGhhc0luaXRpYWxGb2N1czohMCxjb21tb25Mb2dpblN0cmluZ3M6cEN9KSx6PU0uaGFzRm9jdXMsSD1NLnZhbHVlLFY9TS5vbkNoYW5nZSxXPU0ub25CbHVyLEc9TS5vbkZvY3VzLCQ9TS5lcnJvcixLPSQuc2hvd0Vycm9yTWVzc2FnZSxxPSQuZXJyb3JNZXNzYWdlLFE9ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmVycm9yLHI9bi5zZXJ2ZXJFcnJvcixpPW4udmFsaWRhdGlvbkVycm9yLGE9bi5zZXRTaG93RXJyb3JNZXNzYWdlLGw9dC5zZXRVc2VySGFzU3VibWl0dGVkLHM9dC5zZXRGb2N1cyxjPXQudmFsdWUsdT10LnNldFZhbHVlLGQ9KDAsby51c2VDb250ZXh0KShadCkuZGlzcGF0Y2hTdGF0ZUNoYW5nZTtyZXR1cm4gZnVuY3Rpb24odCl7dShudWxsPT1jP3ZvaWQgMDpjLnRvU3RyaW5nKCkudHJpbSgpKSxyfHxpPyh0LnByZXZlbnREZWZhdWx0KCksbCghMCksYSghMCkscyghMCkpOmQoe3R5cGU6THQuQmVnaW5OYXZpZ2F0ZSxzb3VyY2U6VHQuT25lVGltZUNvZGUsZGVzdGluYXRpb246KDAsc3QuS2spKGUpfSl9fShTLE0pLFg9d18oVHQuT25lVGltZUNvZGUpO3JldHVybigwLCRlLmpzeHMpKFwiZm9ybVwiLHtuYW1lOlwib25lVGltZUNvZGVGb3JtXCIsXCJkYXRhLXRlc3RpZFwiOlwib25lVGltZUNvZGVGb3JtXCIsbm9WYWxpZGF0ZTohMCxzcGVsbENoZWNrOlwiZmFsc2VcIixtZXRob2Q6XCJwb3N0XCIsYXV0b0NvbXBsZXRlOlwiZmFsc2VcIixvblN1Ym1pdDpRLGFjdGlvbjpTLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFJPLHt0aXRsZUlkOlwib25lVGltZUNvZGVUaXRsZVwiLHRpdGxlOnh9KSxzJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhqLnJvdyxqLnRleHRCb2R5KSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2lkOmwsY2xhc3NOYW1lOmoud3JhcENvbnRlbnQsY2hpbGRyZW46YX0pfSksKDAsJGUuanN4KShkVCx7ZGVzY3JpcHRpb25JZDpcIm9uZVRpbWVDb2RlRGVzY3JpcHRpb25cIixjaGlsZHJlbjpPfSksKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOm5BKGcpP1wiU2VudFByb29mSURFXCI6XCJTZW50UHJvb2ZJRFwiLHZhbHVlOncsXCJkYXRhLXRlc3RpZFwiOlwic2VudFByb29mSW5wdXRcIn0pLHYmJigwLCRlLmpzeCkoXCJpbnB1dFwiLHt0eXBlOlwiaGlkZGVuXCIsbmFtZTpcIlByb29mQ29uZmlybWF0aW9uXCIsdmFsdWU6dixcImRhdGEtdGVzdGlkXCI6XCJwcm9vZkNvbmZpcm1hdGlvbklucHV0XCJ9KSwobnVsbD09Zz92b2lkIDA6Zy5wcm9vZikmJmcucHJvb2YudHlwZSYmKDAsJGUuanN4KShcImlucHV0XCIse3R5cGU6XCJoaWRkZW5cIixuYW1lOlwiUHJvb2ZUeXBlXCIsdmFsdWU6Zy5wcm9vZi50eXBlLFwiZGF0YS10ZXN0aWRcIjpcInByb29mVHlwZUlucHV0XCJ9KSwoMCwkZS5qc3gpKGtBLHdqKHt9LEkpKSwoMCwkZS5qc3gpKGlqLHtpZDpcImlkVHh0QnhfT1RDX1Bhc3N3b3JkXCIsbmFtZTptLHR5cGU6XCJ0ZWxcIix2YWx1ZTpILHBsYWNlaG9sZGVyOmIsb25DaGFuZ2U6VixzaG93RXJyb3JNZXNzYWdlOkssZXJyb3JNZXNzYWdlOnEsXCJhcmlhLWxhYmVsXCI6cCxcImFyaWEtZGVzY3JpYmVkYnlcIjpmLGhhc0ZvY3VzOnosaGFzSW5pdGlhbEZvY3VzOiEwLG9uRm9jdXM6RyxvbkJsdXI6VyxtYXhMZW5ndGg6aH0pLCgwLCRlLmpzeHMpKF9rLHtjaGlsZHJlbjpbTiYmKDAsJGUuanN4KShQQSx7Y3JlZGVudGlhbFN3aXRjaFByb3BzOnUsc2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXI6RH0pLFUmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmoucm93LGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmouZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkodEMse3RleHQ6cEMucGhvbmVEaXNhbWJpZ3VhdGlvbkxpbmtUZXh0LG9uQ2xpY2s6Qn0pfSl9KSxQJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpqLnJvdyxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpqLmZvcm1Hcm91cCxjaGlsZHJlbjooMCwkZS5qc3gpKHRDLHt0ZXh0OnBDLnNpZ25JbkRpZmZlcmVudEFjY291bnQsbGlua0lkOlwic2lnbkluRGlmZmVyZW50QWNjb3VudFwiLG9uQ2xpY2s6WH0pfSl9KV19KSwoMCwkZS5qc3gpKGZULHtjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpqLndpbkJ1dHRvblBpbkJvdHRvbSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpqLnJvdyxjaGlsZHJlbjooMCwkZS5qc3gpKEZfLHtjaGlsZHJlbjooMCwkZS5qc3gpKFVfLHtidXR0b25JZDpcInByaW1hcnlCdXR0b25cIixsYWJlbDp5LGlzUHJpbWFyeTohMCx0eXBlOlwic3VibWl0XCIsYXJpYUxhYmVsOnl9KX0pfSl9KX0pXX0pfSx4aj1cIi8uKi9cIixPaj0vXlswLTkgKClbXFxdLlxcLSMqLytdKyQvO2Z1bmN0aW9uIF9qKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIlwiLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlwiVGhpcyBpbmZvcm1hdGlvbiBpcyByZXF1aXJlZC5cIjtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG89U3RyaW5nKHIpO3JldHVybiBvJiZcIlwiIT09by50cmltKCk/ZShvKT9cIlwiOnQ6bn19ZnVuY3Rpb24gQ2ooZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIga2o9ZnVuY3Rpb24oZSx0KXt2YXIgbj1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcixyPWZPLmluc3RhbmNlLndyaXRlUGFzc3dvcmRUb1Byb3BlcnR5QmFnO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLGk9KG89cmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG8oaSl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDppZihuIT09Y3Qub0YuV2luMTFPb2JlRmFicmljfHwhcil7by5uZXh0PTQ7YnJlYWt9cmV0dXJuIG51bGw9PWl8fGkucHJldmVudERlZmF1bHQoKSxvLm5leHQ9NCwkeChlLChmdW5jdGlvbigpe3ZhciBlO3JldHVybiBudWxsPT09KGU9dC5jdXJyZW50KXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5zdWJtaXQoKX0pKTtjYXNlIDQ6Y2FzZVwiZW5kXCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8pfSkpLGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4scil7dmFyIGk9by5hcHBseShlLHQpO2Z1bmN0aW9uIGEoZSl7Q2ooaSxuLHIsYSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7Q2ooaSxuLHIsYSxsLFwidGhyb3dcIixlKX1hKHZvaWQgMCl9KSl9KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGkuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0sQWo9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuc2V0Rm9jdXMsaT10LmVycm9yLGE9aS5zZXRTaG93RXJyb3JNZXNzYWdlLGw9aS52YWxpZGF0aW9uRXJyb3Iscz1pLnNlcnZlckVycm9yLGM9dC5zZXRVc2VySGFzU3VibWl0dGVkLHU9KDAsby51c2VDb250ZXh0KShadCksZD11Lmdsb2JhbFN0YXRlLnNob3dQcm9ncmVzc0luZGljYXRvcixmPXUuZGlzcGF0Y2hTdGF0ZUNoYW5nZTtyZXR1cm4gZnVuY3Rpb24odCl7YyghMCkscighMCksYSghMCksbHx8c3x8ZD90LnByZXZlbnREZWZhdWx0KCk6KG51bGwhPW4mJm4uaG9zdExvZ2luQWN0aW9uJiZuLmhvc3RMb2dpbkFjdGlvbih0KSxmKHt0eXBlOkx0LkJlZ2luTmF2aWdhdGUsc291cmNlOlR0LlBhc3N3b3JkLGRlc3RpbmF0aW9uOm51bGwhPW4mJm4ua2VlcFFzUGFyYW1zP2U6KDAsc3QuS2spKGUpfSkpfX0sVGo9e2ZvcmdvdFBhc3N3b3JkTGlua1RleHQ6XCJGb3Jnb3QgcGFzc3dvcmQ/XCIsbG9naW5QYXNzd29yZFBhZ2VUaXRsZTpcIkVudGVyIHBhc3N3b3JkXCIsbG9naW5Td2l0Y2hUb0NyZWRQaWNrZXJMaW5rRXZpY3RlZEFjY3Q6XCJJIG5vIGxvbmdlciBvd24gdGhpcyBwaG9uZSBudW1iZXJcIixub1Bhc3N3b3JkRXJyb3I6XCJQbGVhc2UgZW50ZXIgdGhlIHBhc3N3b3JkIGZvciB5b3VyIE1pY3Jvc29mdCBhY2NvdW50LlwiLHBhc3N3b3JkQXJpYUxhYmVsOlwiRW50ZXIgdGhlIHBhc3N3b3JkIGZvciB7MH1cIixwYXNzd29yZEhpbnQ6XCJQYXNzd29yZFwiLHByaW1hcnlCdXR0b25UZXh0OlwiU2lnbiBpblwifTtmdW5jdGlvbiBFaihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gamooZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gamooZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIGpqKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIElqPWZ1bmN0aW9uKCl7dmFyIGU9VW0uaW5zdGFuY2UudXNlQ29tbW9uU3R5bGVzLHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21tb25Mb2dpblN0cmluZ3Msbj1lLnBhc3N3b3JkVmlld1N0cmluZ3Mscj1uLmxvZ2luUGFzc3dvcmRQYWdlVGl0bGUsaT1uLnByaW1hcnlCdXR0b25UZXh0LGE9bi5ub1Bhc3N3b3JkRXJyb3IsbD1uLmZvcmdvdFBhc3N3b3JkTGlua1RleHQscz1uLnBhc3N3b3JkSGludCxjPW4ucGFzc3dvcmRBcmlhTGFiZWwsdT0oMCxvLnVzZUNvbnRleHQpKFp0KS5nbG9iYWxTdGF0ZSxkPXUudXNlcixmPXUudXNlckZsb3dUeXBlLHA9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLmZyaWVuZGx5QXBwTmFtZSxnPUl0LmRlZmF1bHQuaW5zdGFuY2UsbT1nLmNvbnRleHQsaD1nLmNhbmFyeVRva2VuVmFsdWUsYj1nLmZsb3dUb2tlbk5hbWUseT1nLnNob3dDb29raWVCYW5uZXIsdj1nLnBvc3RVcmwsdz0oMCxvLnVzZUNvbnRleHQpKFplKS5hdXRoU3RhdGUuZmxvd1Rva2VuVmFsdWUsUz1mTy5pbnN0YW5jZSxQPVMucGFzc3dvcmRWaWV3SGVhZGVyLHg9Uy5sb2dpbk1vZGUsTz1TLnJhbmRvbUJsb2IsXz1TLmZvdW5kTXNhcyxDPVMucG9zdGVkRm9yY2VTaWduSW4saz1TLmlzRmlkb1N1cHBvcnRlZEhpbnQsQT1TLmRlZmF1bHRMb2dpbk9wdGlvbnMsVD1TLmhhc1dpemFyZEJlaGF2aW9yLEU9Uy5yYXdRdWVyeVN0cmluZyxqPVMudXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbCxJPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZSxMPUkuY3JlZGVudGlhbHMuYXZhaWxhYmxlQ3JlZGVudGlhbHMsRD1JLnJlbW90ZU5nY1BhcmFtcyxOPUd3Lmluc3RhbmNlLmlzU2ltcGxpZmllZENoaWxkQWNjb3VudENyZWF0aW9uLFI9eV8oKSxCPVdPKHgscCx0KSxVPSgwLG8udXNlUmVmKShudWxsKSxGPVB8fHIsTT1cImxvZ2luSGVhZGVyXCIsej12Xyh0KSxIPXoucmVuZGVyQnJhbmRpbmdEZXNjcmlwdGlvbixWPXouYnJhbmRpbmdEZXNjcmlwdGlvbklkLFc9ei5icmFuZGluZ0Rlc2NyaXB0aW9uLEc9W00sSD9WOlwiXCJdLmpvaW4oXCIgXCIpLCQ9Yy5yZXBsYWNlKFwiezB9XCIsZC5kaXNwbGF5VXNlcm5hbWUuc2FmZUh0bWxFc2NhcGVkU3RyaW5nKSxLPURpKGssaikscT1BPT09Y3QucHQucmVtZW1iZXJQd2QsUT1ueChkLnVzZXJuYW1lLnVuc2FmZVVuZXNjYXBlZFN0cmluZyksWD1kLmRpc3BsYXlVc2VybmFtZS5zYWZlSHRtbEVzY2FwZWRTdHJpbmcsWT1UP2N0LmdFLnBhc3N3b3JkSW5saW5lOmN0LmdFLnBhc3N3b3JkLFo9cT9jdC5wdC5yZW1lbWJlclB3ZDpjdC5wdC5ub3RoaW5nQ2hlY2tlZCxKPUU/KDAsc3QuZkMpKEUsdik6dixlZT1vXyhKLFgsZiksdGU9IUhTKCksbmU9RWooKDAsby51c2VTdGF0ZSkoITEpLDIpLHJlPW5lWzBdLG9lPW5lWzFdLGllPXtzb3VyY2VWaWV3SWQ6VHQuUGFzc3dvcmQsYXZhaWxhYmxlQ3JlZGVudGlhbHM6TCxjdXJyZW50Q3JlZGVudGlhbDp7Y3JlZGVudGlhbFR5cGU6JFAuUGFzc3dvcmR9LHNldFJlcXVlc3RQZW5kaW5nRmxhZzpvZSxzaG91bGRVcGRhdGVPdGNDcmVkZW50aWFsOiEwfSxhZT1yXyhYKSxsZT16UygpLHNlPW5fKHRlKSxjZT13XyhUdC5QYXNzd29yZCksdWU9TiYmZj09PWN0Llk2LlBhcmVudDtyZXR1cm57dGl0bGU6Qixmb3JtUmVmOlUsaGVhZGVyOkYsaGVhZGVySWQ6TSxkZXNjcmlwdGlvblByb3BlcnRpZXM6e3JlbmRlckRlc2NyaXB0aW9uOkgsZGVzY3JpcHRpb25JZDpWLGRlc2NyaXB0aW9uOld9LGFyaWFEZXNjcmliZWRCeTpHLGFyaWFMYWJlbDokLGFsbG93UGhvbmVEaXNhbWJpZ3VhdGlvbjphZSxuYXZpZ2F0ZVRvUGhvbmVEaXNhbWJpZzpmdW5jdGlvbigpe2xlKFR0LlBhc3N3b3JkLFR0LlBob25lRGlzYW1iaWd1YXRpb24pfSxzaG93Q2hhbmdlVXNlckxpbms6c2Usc2VsZWN0QWNjb3VudDpjZSxjcmVkZW50aWFsU3dpdGNoTGlua3NQcm9wczppZSxub1Bhc3N3b3JkRXJyb3JNZXNzYWdlOmEscGxhY2Vob2xkZXI6cyxwb3N0VXJsOnVlP2VlOkoscHJpbWFyeUJ1dHRvbkxhYmVsOmkscmVzZXRQYXNzd29yZFVybDpSLGZvcmdvdFBhc3N3b3JkTGlua1RleHQ6bCxsb2dpblBvc3RQcm9wczp7Y2FuYXJ5OmgsY2xlYW5zZWRVc2VybmFtZTpRLGNvbnRleHQ6bSxmbG93VG9rZW5OYW1lOmIsZmxvd1Rva2VuVmFsdWU6dyxmb3VuZE1zYXM6Xyxpc0ZpZG9TdXBwb3J0ZWQ6Syxpc0ttc2lDaGVja2VkOnEsbG9naW5PcHRpb246WixwYWdpbmF0ZWRTdGF0ZTpuUCxwb3N0VHlwZTpZLHBvc3RlZEZvcmNlU2lnbkluOkMscmFuZG9tQmxvYjpPLHNob3dDb29raWVCYW5uZXI6eSxkaXNwbGF5VXNlcm5hbWU6ZC5kaXNwbGF5VXNlcm5hbWUudW5zYWZlVW5lc2NhcGVkU3RyaW5nLHJuZ2NEZWZhdWx0VHlwZTpELmRlZmF1bHRUeXBlLHJuZ2NFbnRyb3B5OkQuZW50cm9weSxybmdjU2Vzc2lvbklkZW50aWZpZXI6RC5zZXNzaW9uSWRlbnRpZmllcn0saXNSZXF1ZXN0UGVuZGluZzpyZSxpc1BhcmVudFNpZ25Jbjp1ZX19KHtjb21tb25Mb2dpblN0cmluZ3M6cEMscGFzc3dvcmRWaWV3U3RyaW5nczpUan0pLG49dC50aXRsZSxyPXQuZm9ybVJlZixpPXQuaGVhZGVyLGE9dC5oZWFkZXJJZCxsPXQuZGVzY3JpcHRpb25Qcm9wZXJ0aWVzLHM9bC5yZW5kZXJEZXNjcmlwdGlvbixjPWwuZGVzY3JpcHRpb25JZCx1PWwuZGVzY3JpcHRpb24sZD10LmFyaWFEZXNjcmliZWRCeSxmPXQuYXJpYUxhYmVsLHA9dC5wbGFjZWhvbGRlcixnPXQubG9naW5Qb3N0UHJvcHMsbT10Lm5vUGFzc3dvcmRFcnJvck1lc3NhZ2UsaD10LnByaW1hcnlCdXR0b25MYWJlbCxiPXQucG9zdFVybCx5PXQucmVzZXRQYXNzd29yZFVybCx2PXQuZm9yZ290UGFzc3dvcmRMaW5rVGV4dCx3PXQuY3JlZGVudGlhbFN3aXRjaExpbmtzUHJvcHMsUz10LmFsbG93UGhvbmVEaXNhbWJpZ3VhdGlvbixQPXQubmF2aWdhdGVUb1Bob25lRGlzYW1iaWcseD10LnNob3dDaGFuZ2VVc2VyTGluayxPPXQuc2VsZWN0QWNjb3VudCxfPXQuaXNSZXF1ZXN0UGVuZGluZyxDPXQuaXNQYXJlbnRTaWduSW4saz1lKCksQT1TXygpLFQ9QS5zaG93U3dpdGNoVG9FdmljdGVkQ3JlZFBpY2tlcixFPUEuc2hvd0NyZWRlbnRpYWxTd2l0Y2hDb250ZW50O2ZrKFR0LlBhc3N3b3JkLEV0LkxvZ2luKSxhayhuKTt2YXIgaj1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpcIlwiLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnhqLG49YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOlwiVGhpcyBpbmZvcm1hdGlvbiBpcyByZXF1aXJlZC5cIjtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG89U3RyaW5nKHIpO3JldHVybiBfaigoZnVuY3Rpb24oZSl7cmV0dXJuISFlLm1hdGNoKHQpfSksZSxuKShvKX19KG0sXCIuK1wiLG0pLEk9cGooe3ZhbGlkYXRpb25NZXRob2Q6aixoYXNJbml0aWFsRm9jdXM6ITAsY29tbW9uTG9naW5TdHJpbmdzOnBDfSksTD1JLmhhc0ZvY3VzLEQ9SS52YWx1ZSxOPUkub25CbHVyLFI9SS5vbkZvY3VzLEI9SS5vbkNoYW5nZSxVPUkuZXJyb3IsRj1VLnNob3dFcnJvck1lc3NhZ2UsTT1VLmVycm9yTWVzc2FnZSx6PWtqKFN0cmluZyhEKSxyKSxIPUFqKGIsSSx7aG9zdExvZ2luQWN0aW9uOnp9KSxWPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1KdCgpLmdsb2JhbFN0YXRlLG89ci51c2VyLGk9ci51c2VyRmxvd1R5cGUsYT1vXyhlLG8uZGlzcGxheVVzZXJuYW1lLnNhZmVIdG1sRXNjYXBlZFN0cmluZyxpKTtyZXR1cm4gQWooYSx0LHtob3N0TG9naW5BY3Rpb246bixrZWVwUXNQYXJhbXM6ITB9KX0oYixJLHopLFc9Qz9WOkgsRz0kUygpO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLHQ9Zk8uaW5zdGFuY2Usbj10LmhpZGVPZmZsaW5lQWNjb3VudFdpdGhOb1NraXBTdHJpbmcscj10LmxvZ1NraXBUb09mZmxpbmVBY2NvdW50QWN0aW9uLG89dC5zZXJ2ZXJWYWxpZGF0aW9uRXJyb3JzO1RTKChmdW5jdGlvbigpe2lmKGU9PT1jdC5vRi5XaW4xMU9vYmVGYWJyaWMmJih0TyhcIklkZW50aXR5LkZsaWdodC5Jc0VuYWJsZWRIaWRlT2ZmbGluZUFjY291bnRXaXRoTm9Ta2lwU3RyaW5nXCIsbikscikpe3ZhciB0PW8ubGVuZ3RoPjA/b1swXTpcIlwiO3RPKFwiSWRlbnRpdHkuT09CRS5Mb2dpbi5FcnJvclNraXBUb0xvY2FsVmlzaWJsZVwiLFwiW0Vycm9yQ29kZV0gXCIuY29uY2F0KHQpKX19KSl9KCksZnVuY3Rpb24oKXt2YXIgZT0hSFMoKSx0PUl0LmRlZmF1bHQuaW5zdGFuY2Usbj10LmFjdGl2ZUZsYXZvcixyPXQuc2hvd0J1dHRvbnMsbz10LmFsbG93Q2FuY2VsLGk9Q1QoKSxhPWtUKCk7VFMoKGZ1bmN0aW9uKCl7ZT9uPT09Y3Qub0YuV2luMTFPb2JlRmFicmljP2EoKGZ1bmN0aW9uKGUpe2koZSl9KSk6aShyJiZvKTppKHIpfSkpfSgpLCgwLCRlLmpzeHMpKFwiZm9ybVwiLHtyZWY6cixuYW1lOlwiZjFcIixpZDpcImkwMjgxXCIsXCJkYXRhLXRlc3RpZFwiOlwicGFzc3dvcmRGb3JtXCIsbm9WYWxpZGF0ZTohMCxzcGVsbENoZWNrOlwiZmFsc2VcIixtZXRob2Q6XCJwb3N0XCIsYXV0b0NvbXBsZXRlOlwiZmFsc2VcIixvblN1Ym1pdDpXLGFjdGlvbjpiLGNoaWxkcmVuOlsoMCwkZS5qc3gpKFJPLHt0aXRsZUlkOmEsdGl0bGU6aX0pLHMmJigwLCRlLmpzeCkoZFQse2Rlc2NyaXB0aW9uSWQ6YyxkZXNjcmlwdGlvbkNsYXNzOmsud3JhcENvbnRlbnQsY2hpbGRyZW46dX0pLCgwLCRlLmpzeCkoa0Ese2NhbmFyeTpnLmNhbmFyeSxjbGVhbnNlZFVzZXJuYW1lOmcuY2xlYW5zZWRVc2VybmFtZSxjb250ZXh0OmcuY29udGV4dCxmbG93VG9rZW5OYW1lOmcuZmxvd1Rva2VuTmFtZSxmbG93VG9rZW5WYWx1ZTpnLmZsb3dUb2tlblZhbHVlLGZvdW5kTXNhczpnLmZvdW5kTXNhcyxpc0ZpZG9TdXBwb3J0ZWQ6Zy5pc0ZpZG9TdXBwb3J0ZWQsaXNLbXNpQ2hlY2tlZDpnLmlzS21zaUNoZWNrZWQsbG9naW5PcHRpb246Zy5sb2dpbk9wdGlvbixwYWdpbmF0ZWRTdGF0ZTpnLnBhZ2luYXRlZFN0YXRlLHBvc3RUeXBlOmcucG9zdFR5cGUscG9zdGVkRm9yY2VTaWduSW46Zy5wb3N0ZWRGb3JjZVNpZ25JbixyYW5kb21CbG9iOmcucmFuZG9tQmxvYixzaG93Q29va2llQmFubmVyOmcuc2hvd0Nvb2tpZUJhbm5lcixkaXNwbGF5VXNlcm5hbWU6Zy5kaXNwbGF5VXNlcm5hbWUscm5nY0RlZmF1bHRUeXBlOmcucm5nY0RlZmF1bHRUeXBlLHJuZ2NFbnRyb3B5Omcucm5nY0VudHJvcHkscm5nY1Nlc3Npb25JZGVudGlmaWVyOmcucm5nY1Nlc3Npb25JZGVudGlmaWVyfSksKDAsJGUuanN4KShpaix7aWQ6XCJpMDExOFwiLG5hbWU6XCJwYXNzd2RcIixwbGFjZWhvbGRlcjpwLHR5cGU6XCJwYXNzd29yZFwiLHNob3dFcnJvck1lc3NhZ2U6RixlcnJvck1lc3NhZ2U6TSx2YWx1ZTpELG9uQ2hhbmdlOkIsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6ZCxcImFyaWEtbGFiZWxcIjpmLGhhc0ZvY3VzOkwsaGFzSW5pdGlhbEZvY3VzOiEwLG9uRm9jdXM6UixvbkJsdXI6TixhdXRvQ29tcGxldGU6XCJjdXJyZW50LXBhc3N3b3JkXCJ9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTprLnJvdyxjaGlsZHJlbjooMCwkZS5qc3hzKShfayx7Y2hpbGRyZW46W3YmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmsuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkodEMse3RleHQ6dixsaW5rSWQ6XCJpZEFfUFdEX0ZvcmdvdFBhc3N3b3JkXCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBHKHksITApfX0pfSksUyYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6ay5mb3JtR3JvdXAsY2hpbGRyZW46KDAsJGUuanN4KSh0Qyx7dGV4dDpwQy5waG9uZURpc2FtYmlndWF0aW9uTGlua1RleHQsb25DbGljazpQfSl9KSxFJiYoMCwkZS5qc3gpKFBBLHtjcmVkZW50aWFsU3dpdGNoUHJvcHM6dyxzaG93U3dpdGNoVG9FdmljdGVkQ3JlZFBpY2tlcjpUfSkseCYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6ay5mb3JtR3JvdXAsY2hpbGRyZW46KDAsJGUuanN4KSh0Qyx7dGV4dDpwQy5zaWduSW5EaWZmZXJlbnRBY2NvdW50LG9uQ2xpY2s6T30pfSldfSl9KSwoMCwkZS5qc3gpKGZULHtjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTprLndpbkJ1dHRvblBpbkJvdHRvbSxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTprLnJvdyxjaGlsZHJlbjooMCwkZS5qc3gpKEZfLHtjaGlsZHJlbjooMCwkZS5qc3gpKFVfLHtidXR0b25JZDpcImlkU0lCdXR0b245XCIsbGFiZWw6aCxkaXNhYmxlZDpfLGlzUHJpbWFyeTohMCx0eXBlOlwic3VibWl0XCJ9KX0pfSl9KX0pXX0pfTtmdW5jdGlvbiBMaihlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfXZhciBEaj1mdW5jdGlvbihlKXt2YXIgdD1lLmlucHV0U3RhdGUsbj1lLnZpZXdJZCxyPWUuc3VibWl0UGFyYW1zLG89ZS5zdWJtaXRUYXNrLGk9SnQoKS5kaXNwYXRjaFN0YXRlQ2hhbmdlLGE9dCBpbnN0YW5jZW9mIEFycmF5P3Q6W3RdO2lmKDA9PT1hLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoXCJObyBpbnB1dCBzdGF0ZSBwcm92aWRlZFwiKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSx0PShlPXJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQpe3ZhciBsLHMsYyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYodC5wcmV2ZW50RGVmYXVsdCgpLGkoe3R5cGU6THQuQmVnaW5OYXZpZ2F0ZSxzb3VyY2U6bn0pLGw9ITEsYS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdCxuPWUuc2V0Rm9jdXMscj1lLmVycm9yLG89ci5zZXJ2ZXJFcnJvcixpPXIudmFsaWRhdGlvbkVycm9yLGE9ci5zZXRTaG93RXJyb3JNZXNzYWdlLHM9ZS5zZXRVc2VySGFzU3VibWl0dGVkLGM9ZS5lbGVtZW50UmVmO3MoITApLGEoITApLCFvJiYhaXx8bHx8KGw9ITAsYz9udWxsPT1jfHxudWxsPT09KHQ9Yy5jdXJyZW50KXx8dm9pZCAwPT09dHx8dC5mb2N1cygpOm4oITApKX0pKSxsKXtlLm5leHQ9MTA7YnJlYWt9cmV0dXJuKHM9YVswXSkuZWxlbWVudFJlZj9udWxsPT09KGM9cy5lbGVtZW50UmVmLmN1cnJlbnQpfHx2b2lkIDA9PT1jfHxjLmZvY3VzKCk6cy5zZXRGb2N1cyghMCksdT1yfHx7dmFsdWU6cy52YWx1ZSxlcnJvckhhbmRsZXI6cy5lcnJvci5zZXRTZXJ2ZXJFcnJvcn0sZS5uZXh0PTEwLG8odSk7Y2FzZSAxMDppKHt0eXBlOkx0LkRhdGFMb2FkZWQsdmlldzpufSk7Y2FzZSAxMTpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSksZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixvKXt2YXIgaT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gYShlKXtMaihpLHIsbyxhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtMaihpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSxOaj1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0W2UuaXNvXT1lfSkpLHR9O2Z1bmN0aW9uIFJqKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBCaihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBCaihlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gQmooZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgVWo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZSxuPWUuY291bnRyeURhdGEscj1lLnVzZUlubGluZVBob25lTnVtYmVyLGk9ZS5kaXNwbGF5RXJyb3JTdHlsaW5nLGE9dm9pZCAwIT09aSYmaSxsPWUuaGFzRm9jdXMscz12b2lkIDAhPT1sJiZsLGM9ZS5oYXNJbml0aWFsRm9jdXMsdT12b2lkIDAhPT1jJiZjLGQ9ZS5vbkNoYW5nZSxmPXZvaWQgMD09PWQ/ZnVuY3Rpb24oKXt9OmQscD1VbS5pbnN0YW5jZSxnPXAudXNlQ29tbW9uU3R5bGVzLG09cC51c2VQaG9uZUNvdW50cnlEcm9wZG93blN0eWxlcyxoPWcoKSxiPW0oKSx5PU5qKG4pLHY9UmooKDAsby51c2VTdGF0ZSkoYi5waG9uZUNvdW50cnlDb2RlTGFiZWwpLDIpLHc9dlswXSxTPXZbMV0sUD1TZyhiLnBob25lQ291bnRyeUNvZGVMYWJlbCxhP2IubGFiZWxIYXNFcnJvckZvY3VzQm94OmIubGFiZWxIYXNGb2N1cykseD1TZyhiLnBob25lQ291bnRyeUNvZGVMYWJlbCxiLmxhYmVsSGFzRXJyb3IpLE89KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKCl7cmV0dXJuIHM/UDphP3g6Yi5waG9uZUNvdW50cnlDb2RlTGFiZWx9KSxbUCxhLHMseCxiLnBob25lQ291bnRyeUNvZGVMYWJlbF0pLF89U2coYi5waG9uZUNvdW50cnlDb2RlTGFiZWwsYT94OlwiXCIpOygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtTKE8oKSl9KSxbdSxPXSk7dmFyIEM9cj9iLnBob25lQ291bnRyeUJveElubGluZTpTZyhoLmZvcm1Hcm91cCxiLnBob25lQ291bnRyeUJveE5vdElubGluZSksaz1TZyhiLnBob25lQ291bnRyeUNvZGVNZW51QnV0dG9uU3R5bGUsaC5mb3JtQ29udHJvbFJlbGF0aXZlKTtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTphP1NnKEMsXCJoYXMtZXJyb3JcIik6QyxvbkZvY3VzOmZ1bmN0aW9uKCl7UyhQKX0sb25CbHVyOmZ1bmN0aW9uKGUpe2UuY3VycmVudFRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpfHxTKF8pfSxcImRhdGEtdGVzdGlkXCI6XCJwaG9uZUNvdW50cnlEcm9wZG93blwiLGNoaWxkcmVuOigwLCRlLmpzeCkoaUMse2FyaWFMYWJlbDpcIkNvdW50cnkgQ29kZVwiLGljb246e3VybHM6WGgsY2xhc3NOYW1lOmIuZG93bkFycm93LHJvbGU6XCJwcmVzZW50YXRpb25cIn0sbWVudUNsYXNzTmFtZTpiLmRyb3Bkb3duLG1lbnVCdXR0b25JY29uQ2xhc3NOYW1lOmssbWVudVRlc3RJZDpcInBob25lQ291bnRyeVwiLG1lbnVJdGVtTGlzdDpuLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue2l0ZW1JZDplLmlzbyxpdGVtVGV4dDplLmRpc3BsYXlWYWx1ZSxpc1Zpc2libGU6ITAsaGFzRm9jdXM6ZS5pc289PT10Lmlzbyxza2lwSGFzRm9jdXNEZWxheTohMCxhcmlhU2VsZWN0ZWQ6ZS5pc289PT10LmlzbyxvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGYoeVtlLmlzb10pfX19KSksbWVudUxhYmVsOntsYWJlbFRleHQ6cj9cIlx1MjAwZStcIi5jb25jYXQodC5jb2RlKTp0LmRpc3BsYXlWYWx1ZSxsYWJlbENsYXNzTmFtZTp3LGxhYmVsVGVzdElkOlwicGhvbmVDb3VudHJ5TGFiZWxcIn0sb25PdXRzaWRlQ2xpY2s6ZnVuY3Rpb24oKXtTKF8pfSxjbG9zZU9uU2VsZWN0OiEwLGhhc0ZvY3VzOnMsaGFzSW5pdGlhbEZvY3VzOnUsaXNDb21ib0JveDohMH0pfSl9O2Z1bmN0aW9uIEZqKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBNaihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBNaihlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gTWooZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgemo9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS52YWx1ZSxuPWUuY291bnRyeURhdGEscj1lLnVzZUlubGluZVBob25lTnVtYmVyLGk9ZS5kaXNwbGF5RXJyb3JTdHlsaW5nLGE9dm9pZCAwIT09aSYmaSxsPWUuaGFzRm9jdXMscz12b2lkIDAhPT1sJiZsLGM9ZS5oYXNJbml0aWFsRm9jdXMsdT12b2lkIDAhPT1jJiZjLGQ9ZS5vbkNoYW5nZSxmPXZvaWQgMD09PWQ/ZnVuY3Rpb24oKXt9OmQscD1VbS5pbnN0YW5jZSxnPXAudXNlQ29tbW9uU3R5bGVzLG09cC51c2VQaG9uZUNvdW50cnlEcm9wZG93blN0eWxlc0RlcHJlY2F0ZWQsaD1nKCksYj1tKCkseT0oMCxvLnVzZVJlZikobnVsbCksdj1OaihuKSx3PUZqKCgwLG8udXNlU3RhdGUpKGIucGhvbmVDb3VudHJ5Q29kZUxhYmVsKSwyKSxTPXdbMF0sUD13WzFdLHg9U2coYi5waG9uZUNvdW50cnlDb2RlTGFiZWwsYT9iLmxhYmVsSGFzRXJyb3JGb2N1c0JveDpiLmxhYmVsSGFzRm9jdXMpLE89U2coYi5waG9uZUNvdW50cnlDb2RlTGFiZWwsYi5sYWJlbEhhc0Vycm9yKSxfPSgwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbigpe3JldHVybiBzP3g6YT9POmIucGhvbmVDb3VudHJ5Q29kZUxhYmVsfSksW3gsYSxzLE8sYi5waG9uZUNvdW50cnlDb2RlTGFiZWxdKSxDPWZ1bmN0aW9uKCl7UCh4KX0saz1mdW5jdGlvbigpe1AoU2coYi5waG9uZUNvdW50cnlDb2RlTGFiZWwsYT9POlwiXCIpKX07KDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3ZhciBlO3MmJihudWxsPT15fHxudWxsPT09KGU9eS5jdXJyZW50KXx8dm9pZCAwPT09ZXx8ZS5mb2N1cygpKX0pLFtzXSksKDAsby51c2VFZmZlY3QpKChmdW5jdGlvbigpe3UmJnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09eXx8bnVsbD09PShlPXkuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuZm9jdXMoKX0pLGhwKSxQKF8oKSl9KSxbdSxfXSk7dmFyIEE9ZnVuY3Rpb24oKXtyZXR1cm4oMCwkZS5qc3gpKFwic2VsZWN0XCIse2lkOlwicGhvbmVDb3VudHJ5XCIsbmFtZTpcIlBob25lQ291bnRyeVwiLFwiYXJpYS1sYWJlbFwiOlwiQ291bnRyeSBDb2RlXCIsdmFsdWU6dC5pc28sb25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7dCh2W2UudGFyZ2V0LnZhbHVlXSl9KGUsZil9LG9uRm9jdXM6QyxvbkJsdXI6ayxjbGFzc05hbWU6YT9TZyhoLmZvcm1Db250cm9sLFwiaGFzLWVycm9yXCIpOmguZm9ybUNvbnRyb2wscmVmOnksXCJkYXRhLXRlc3RpZFwiOlwicGhvbmVDb3VudHJ5RHJvcGRvd25cIixjaGlsZHJlbjpuLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuKDAsJGUuanN4KShcIm9wdGlvblwiLHt2YWx1ZTplLmlzbyxjaGlsZHJlbjplLmRpc3BsYXlWYWx1ZX0sZS5pc28pfSkpfSl9O3JldHVybiByPygwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhiLnBob25lQ291bnRyeUJveElubGluZSksY2hpbGRyZW46WygwLCRlLmpzeCkoXCJsYWJlbFwiLHtodG1sRm9yOlwicGhvbmVDb3VudHJ5XCIsXCJhcmlhLWhpZGRlblwiOlwidHJ1ZVwiLGNsYXNzTmFtZTpTLFwiZGF0YS10ZXN0aWRcIjpcInBob25lQ291bnRyeUxhYmVsXCIsY2hpbGRyZW46XCJcdTIwMGUrXCIuY29uY2F0KHQuY29kZSl9KSwoMCwkZS5qc3gpKFNiLHt1cmxzOlhoLHJvbGU6XCJwcmVzZW50YXRpb25cIixjbGFzc05hbWU6Yi5kb3duQXJyb3d9KSxBKCldfSk6KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6U2coaC5mb3JtR3JvdXAsYi5waG9uZUNvdW50cnlCb3hOb3RJbmxpbmUpLGNoaWxkcmVuOkEoKX0pfTtmdW5jdGlvbiBIaihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gVmooZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/SGooT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtXaihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6SGooT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gV2ooZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBHaj1mdW5jdGlvbihlKXt2YXIgdD1RRShlKSxuPXQuZXJyb3JNZXNzYWdlLHI9dC5kaXNwbGF5RXJyb3JTdHlsaW5nLG89dC5zaG93RXJyb3JNZXNzYWdlLGk9ZS5kcm9wZG93blByb3BzLGE9ZS5pbnB1dFByb3BzLGw9ZS5hcHBlbmRlZExhYmVsLHM9dm9pZCAwPT09bD9cIlwiOmwsYz1VbS5pbnN0YW5jZSx1PWMudXNlQ29tbW9uU3R5bGVzLGQ9Yy51c2VQaG9uZU51bWJlclN0eWxlcyxmPXUoKSxwPWQoKSxnPUd3Lmluc3RhbmNlLmxvYWRHYW1lcGFkTmF2aWdhdGlvbk1vZHVsZSxtPWc/U2cocC5waG9uZU51bWJlckNvbnRhaW5lcixmLnJvdyk6Zi5yb3csaD1nPygwLCRlLmpzeCkoVWosVmooVmooe30saSkse30se2Rpc3BsYXlFcnJvclN0eWxpbmc6cn0pKTooMCwkZS5qc3gpKHpqLFZqKFZqKHt9LGkpLHt9LHtkaXNwbGF5RXJyb3JTdHlsaW5nOnJ9KSk7cmV0dXJuKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOm0sY2hpbGRyZW46W28mJigwLCRlLmpzeCkoTWsse2lkOlwiXCIuY29uY2F0KGEuaWQsXCJFcnJvclwiKSxjbGFzc05hbWU6U2cocC5lcnJvckNvbnRhaW5lcixmLmFsZXJ0RXJyb3IpLGNoaWxkcmVuOm59KSwoMCwkZS5qc3hzKShcImRpdlwiLHtjaGlsZHJlbjpbaCwoMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcInBob25lLW51bWJlci1pbnB1dFwiLGNsYXNzTmFtZTppLnVzZUlubGluZVBob25lTnVtYmVyP3AuaW5saW5lSW5wdXQ6cC5ub25JbmxpbmVJbnB1dCxjaGlsZHJlbjooMCwkZS5qc3gpKGlqLFZqKFZqKHt9LGEpLHt9LHtkaXNwbGF5RXJyb3JTdHlsaW5nOnJ9KSl9KSxzJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NoaWxkcmVuOnN9KV19KV19KX0sJGo9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnRyaW0oKSxyPVwiXCI7cmV0dXJuXCIrXCI9PT1uLmNoYXJBdCgwKT9yPVwiK1wiOnQmJihyPVwiK1wiLmNvbmNhdCh0LmNvZGUpKSxcIlwiLmNvbmNhdChyKS5jb25jYXQobi5yZXBsYWNlKC9cXEQrL2csXCJcIikpfTtmdW5jdGlvbiBLaihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gcWooZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/S2ooT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtRaihlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6S2ooT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gUWooZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIFhqKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBZaihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBZaihlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gWWooZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBaaihlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfXZhciBKaj1mdW5jdGlvbigpe3ZhciBlLHQsbixyPWZPLmluc3RhbmNlLGk9ci5jb3VudHJ5TGlzdCxhPXIuZGVmYXVsdENvdW50cnksbD0oMCxvLnVzZUNvbnRleHQpKEFPKS52aWV3U3RhdGUubG9jYXRpb247cmV0dXJuIGU9aSx0PShsfHxhfHxcIlwiKS50b1VwcGVyQ2FzZSgpLG49e2lzbzpcIlVTXCIsZGlzcGxheVZhbHVlOmNPKFwiVW5pdGVkIFN0YXRlc1wiLFwiMVwiKSxjb2RlOlwiMVwifSxlLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVyblwiVVNcIj09PWUuaXNvJiYobj1lKSxlLmlzby50b1VwcGVyQ2FzZSgpPT09dH0pKXx8bn0sZUk9ZnVuY3Rpb24oKXt2YXIgZT0oMCxvLnVzZUNvbnRleHQpKFplKS5hdXRoU3RhdGUuZmxvd1Rva2VuVmFsdWUsdD0oMCxvLnVzZUNvbnRleHQpKEFPKS52aWV3U3RhdGUub3RoZXJJZHBSZWRpcmVjdFVybCxuPUl0LmRlZmF1bHQuaW5zdGFuY2UucmVzZXRQYXNzd29yZFVybCxyPWZPLmluc3RhbmNlLGk9ci5hbGxvd2VkSWRlbnRpdGllcyxhPXIuaXNGaWRvU3VwcG9ydGVkSGludCxsPXIuZ2N0RmVkZXJhdGlvbkZsYWdzLHM9ci5pc0ZlZGVyYXRpb25EaXNhYmxlZCxjPXIuaXNFeHRlcm5hbEZlZGVyYXRpb25EaXNhbGxvd2VkLHU9ci5pc1JlbW90ZU5HQ1N1cHBvcnRlZCxkPXIuaXNPdGNMb2dpbkRpc2FibGVkLGY9ci5nZXRDcmVkZW50aWFsVHlwZVVybCxwPXIuc2hvd1NpZ251cCxnPXIuc2lnbnVwVXJsLG09ci5pbXByb3ZlUGhvbmVEaXNhbWJpZ3VhdGlvbixoPXIuZmVkUXMsYj1yLmNoYW5nZVBhc3N3b3JkVXJsLHk9ci5wb3N0UHJvb2ZUeXBlLHY9ci5zaWdudXBVcmxQb3N0UGFyYW1zLHc9ci51c2VSZXNldFBhc3N3b3JkVXJsRm9yUGFzc3dvcmRSZXF1aXJlZEVycm9yLFM9ci51c2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sLFA9RGkoYSxTKSx4PVdUKCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbz0ocj1yZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcihvKXt2YXIgYSxTLE8sXyxDLGssQTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBTPW8udmFsdWUsTz1vLmVycm9ySGFuZGxlcixfPW8uaW5wdXRWYWx1ZSxDPVN0cmluZyhTKSxrPSgwLHN0Lk5pKSh0LHt1c2VybmFtZTpDLGxvZ2luX2hpbnQ6Q30pLHIubmV4dD01LE54KHthbGxvd2VkSWRlbnRpdGllczppLHVuc2FmZVVzZXJuYW1lOkMsZmxvd1Rva2VuOmUsaXNGaWRvU3VwcG9ydGVkOlAsY291bnRyeTpcIlwiLGdjdEZlZGVyYXRpb25GbGFnczpsfHwwLGlzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZDpjLGlzRmVkZXJhdGlvbkRpc2FibGVkOnMsaXNSZW1vdGVOR0NTdXBwb3J0ZWQ6dSxvdGNsb2dpbmRpc2FsbG93ZWQ6ZCxnZXRDcmVkZW50aWFsVHlwZVVybDpmLG90aGVySWRwUmVkaXJlY3RVcmw6ayxmZWRRczpofSx7Y2hhbmdlUGFzc3dvcmRVcmw6YixpbXByb3ZlUGhvbmVEaXNhbWJpZ3VhdGlvbjptLHBvc3RQcm9vZlR5cGU6eSxyZXNldFBhc3N3b3JkVXJsOm4sc2hvd1NpZ251cDpwLHNpZ251cFVybDpnLHNpZ251cFVybFBvc3RQYXJhbXM6dix1c2VSZXNldFBhc3N3b3JkVXJsRm9yUGFzc3dvcmRSZXF1aXJlZEVycm9yOnd9LHtpc1Bob25lTnVtYmVyRnVsbHlRdWFsaWZpZWQ6ITAsY2hlY2tDdXJyZW50SWRwT25seTohMH0pO2Nhc2UgNTpBPXIuc2VudCx4KFR0LlBob25lRGlzYW1iaWd1YXRpb24sQSxffHxcIlwiLChudWxsPT09KGE9QS5zaGFyZWREYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5kaXNwbGF5TmFtZSl8fEMsTyk7Y2FzZSA3OmNhc2VcImVuZFwiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSxmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLG8pe3ZhciBpPXIuYXBwbHkoZSx0KTtmdW5jdGlvbiBhKGUpe1pqKGksbixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe1pqKGksbixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCl9LHRJPXt0aXRsZTpcIkNvbmZpcm0geW91ciBwaG9uZSBudW1iZXJcIixkZXNjcmlwdGlvbjpcIlBsZWFzZSB2ZXJpZnkgeW91ciBjb3VudHJ5IGNvZGUgYW5kIHBob25lIG51bWJlci5cIixhbHRlcm5hdGVEZXNjcmlwdGlvbjpcIldlIG5lZWQgeW91ciBoZWxwIHRvIGxvb2sgdXAgYW4gYWNjb3VudCB3aXRoIHRoaXMgdXNlcm5hbWUuXCIscGxhY2Vob2xkZXI6XCJQaG9uZSBudW1iZXJcIixpbnB1dEFyaWFMYWJlbDpcIkVudGVyIHlvdXIgcGhvbmUgbnVtYmVyXCIsYmFkQ2hhcmFjdGVyc0Vycm9yTWVzc2FnZTpcIlRoZSBwaG9uZSBudW1iZXIgeW91IGVudGVyZWQgaXNuJ3QgdmFsaWQuIFlvdXIgcGhvbmUgbnVtYmVyIGNhbiBjb250YWluIG51bWJlcnMsIHNwYWNlcywgYW5kIHRoZXNlIHNwZWNpYWwgY2hhcmFjdGVyczogKCApIFsgXSAuIC0gIyAqIC9cIixzaWduSW5XaXRoRGlmZmVyZW50VXNlcjpcIlNpZ24gaW4gd2l0aCBhIGRpZmZlcmVudCB1c2VybmFtZSBpbnN0ZWFkXCIsY3JlYXRlTmV3QWNjb3VudExhYmVsOlwiQ3JlYXRlIGEgbmV3IGFjY291bnRcIixiYWNrTGFiZWw6XCJCYWNrXCIsbmV4dExhYmVsOlwiTmV4dFwifSxuST1mdW5jdGlvbigpe3ZhciBlPVVtLmluc3RhbmNlLHQ9ZS51c2VDb21tb25TdHlsZXMsbj1lLnVzZVN0YXRpY0NvbW1vblN0eWxlcyxyPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY29tbW9uTG9naW5TdHJpbmdzLG49ZS5waG9uZURpc2FtYmlndWF0aW9uU3RyaW5ncyxyPW4udGl0bGUsbz1uLmRlc2NyaXB0aW9uLGk9bi5hbHRlcm5hdGVEZXNjcmlwdGlvbixhPW4ucGxhY2Vob2xkZXIsbD1uLmlucHV0QXJpYUxhYmVsLHM9bi5iYWRDaGFyYWN0ZXJzRXJyb3JNZXNzYWdlLGM9bi5zaWduSW5XaXRoRGlmZmVyZW50VXNlcix1PW4uY3JlYXRlTmV3QWNjb3VudExhYmVsLGQ9bi5iYWNrTGFiZWwsZj1uLm5leHRMYWJlbCxwPWZPLmluc3RhbmNlLGc9cC5pbXByb3ZlUGhvbmVEaXNhbWJpZ3VhdGlvbixtPXAubG9naW5Nb2RlLGg9cGgoKS5jdXN0b21pemF0aW9uU3RhdGUuc3R5bGVzLmZyaWVuZGx5QXBwTmFtZTtyZXR1cm57ZG9jdW1lbnRUaXRsZTpXTyhtLGgsdCksZXJyb3JNZXNzYWdlOnMsdGl0bGU6cixkZXNjcmlwdGlvbjpnP2k6byxwbGFjZWhvbGRlcjphLGFyaWFMYWJlbDpsLHNpZ25JbldpdGhEaWZmZXJlbnRVc2VyOmMsY3JlYXRlTmV3QWNjb3VudExhYmVsOnUsYmFja0xhYmVsOmQsbmV4dExhYmVsOmZ9fSh7Y29tbW9uTG9naW5TdHJpbmdzOnBDLHBob25lRGlzYW1iaWd1YXRpb25TdHJpbmdzOnRJfSksaT1yLmRvY3VtZW50VGl0bGUsYT1yLmVycm9yTWVzc2FnZSxsPXIudGl0bGUscz1yLmRlc2NyaXB0aW9uLGM9ci5wbGFjZWhvbGRlcix1PXIuYXJpYUxhYmVsLGQ9ci5zaWduSW5XaXRoRGlmZmVyZW50VXNlcixmPXIuY3JlYXRlTmV3QWNjb3VudExhYmVsLHA9ci5iYWNrTGFiZWwsZz1yLm5leHRMYWJlbCxtPUpqKCk7ZmsoVHQuUGhvbmVEaXNhbWJpZ3VhdGlvbixFdC5Mb2dpbix7c2hvd0lkZW50aXR5QmFubmVyOiExfSksYWsoaSksbigpO3ZhciBoLGIseSx2PWZPLmluc3RhbmNlLHc9di51c2VJbmxpbmVQaG9uZU51bWJlcixTPXYuY291bnRyeUxpc3QsUD12LnNpZ251cFVybCx4PXYuc2hvd1NpZ251cCxPPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLnVzZXIsXz1mdW5jdGlvbihlKXt2YXIgdD1lLmRlZmF1bHRDb3VudHJ5LG49ZS52YWxpZGF0aW9uTWV0aG9kLHI9ZS5jbGVhclNlcnZlckVycm9yT25DaGFuZ2UsaT12b2lkIDA9PT1yfHxyLGE9ZS5pbml0aWFsU2VydmVyRXJyb3IsbD12b2lkIDA9PT1hP1wiXCI6YSxzPWZqKGUuaW5wdXQpLGM9ZGoobCksdT1zLnZhbHVlLGQ9cy5vbkNoYW5nZSxmPWMuc2VydmVyRXJyb3IscD1jLnNldFNlcnZlckVycm9yLGc9Yy5zZXRWYWxpZGF0aW9uRXJyb3IsbT1jLnNldFNob3dFcnJvck1lc3NhZ2UsaD1YaigoMCxvLnVzZVN0YXRlKSghMSksMiksYj1oWzBdLHk9aFsxXSx2PVhqKCgwLG8udXNlU3RhdGUpKHQpLDIpLHc9dlswXSxTPXZbMV0sUD1YaigoMCxvLnVzZVN0YXRlKSgkaihTdHJpbmcodSksdykpLDIpLHg9UFswXSxPPVBbMV0sXz0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kcm9wZG93blZhbHVlLG49ZS5pbnB1dFZhbHVlLHI9JGoobix0KTtyZXR1cm4gTyhyKSxpJiZmJiYocChcIlwiKSxtKCExKSkscn0pLFtpLGYscCxtXSksQz0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7aWYobil7dmFyIHQ9bihlKTtnKHQpLGImJnQmJm0oITApfX0pLFtnLG4sbSxiXSksaz0oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZSE9PXc7aWYoUyhlKSx0KXt2YXIgbj17ZHJvcGRvd25WYWx1ZTplLGlucHV0VmFsdWU6U3RyaW5nKHUpfSxyPV8obik7Qyhxaihxaih7fSxuKSx7fSx7cGhvbmVOdW1iZXI6cn0pKX19KSxbdyx1LF8sQ10pLEE9KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe3ZhciB0PXUsbj1kKGUpO2lmKHQhPT1uKXt2YXIgcj17ZHJvcGRvd25WYWx1ZTp3LGlucHV0VmFsdWU6U3RyaW5nKG4pfSxvPV8ocik7Qyhxaihxaih7fSxyKSx7fSx7cGhvbmVOdW1iZXI6b30pKX1yZXR1cm4gbn0pLFt3LHUsZCxfLENdKTtyZXR1cm4gVFMoKGZ1bmN0aW9uKCl7Qyh7ZHJvcGRvd25WYWx1ZTp3LGlucHV0VmFsdWU6U3RyaW5nKHUpLHBob25lTnVtYmVyOnh9KX0pKSx7ZXJyb3I6YyxpbnB1dFN0YXRlOnMsb25DaGFuZ2VJbnB1dDpBLGRyb3Bkb3duVmFsdWU6dyxvbkNoYW5nZURyb3Bkb3duOmssdmFsdWU6eCxzZXRGb2N1czpzLnNldEZvY3VzLHVzZXJIYXNTdWJtaXR0ZWQ6YixzZXRVc2VySGFzU3VibWl0dGVkOnl9fSh7ZGVmYXVsdENvdW50cnk6bSx2YWxpZGF0aW9uTWV0aG9kOihoPWEsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5waG9uZU51bWJlcjtyZXR1cm4gdCYmIVZQKHQpJiZHUCh0KSYmdC5tYXRjaChPaik/XCJcIjpofSksaW5wdXQ6e2hhc0luaXRpYWxGb2N1czp0cnVlLGluaXRpYWxWYWx1ZTpPLnVzZXJuYW1lLnVuc2FmZVVuZXNjYXBlZFN0cmluZ319KSxDPV8uZHJvcGRvd25WYWx1ZSxrPV8ub25DaGFuZ2VEcm9wZG93bixBPV8udmFsdWUsVD1fLmlucHV0U3RhdGUsRT1fLmVycm9yLGo9RS5zaG93RXJyb3JNZXNzYWdlLEk9RS5lcnJvck1lc3NhZ2UsTD1FLnNldFNlcnZlckVycm9yLEQ9Xy5vbkNoYW5nZUlucHV0LE49e3ZhbHVlOkEsaW5wdXRWYWx1ZTpULnZhbHVlLGRyb3Bkb3duVmFsdWU6QyxlcnJvckhhbmRsZXI6TH0sUj1Eaih7aW5wdXRTdGF0ZTpfLHZpZXdJZDpUdC5QaG9uZURpc2FtYmlndWF0aW9uLHN1Ym1pdFRhc2s6ZUkoKSxzdWJtaXRQYXJhbXM6Tn0pLEI9dCgpLFU9KGI9KDAsby51c2VDb250ZXh0KShadCkuZGlzcGF0Y2hTdGF0ZUNoYW5nZSx5PXpTKCksZnVuY3Rpb24oZSl7Yih7dHlwZTpMdC5TZXRVc2VyLHBheWxvYWQ6e3VzZXJuYW1lOmV9fSksYih7dHlwZTpMdC5CZWdpbk5hdmlnYXRlLHNvdXJjZTpUdC5QaG9uZURpc2FtYmlndWF0aW9uLGRlc3RpbmF0aW9uOlR0LlVzZXJuYW1lLGRpc3BsYXlPcHRpb25zOntuYXZpZ2F0aW9uRGlyZWN0aW9uOlwiZm9yd2FyZFwifX0pLHkoVHQuUGhvbmVEaXNhbWJpZ3VhdGlvbixUdC5Vc2VybmFtZSl9KSxGPXBfKCksTT1PXygpO3JldHVybiBfXyhNKSwoMCwkZS5qc3hzKShcImZvcm1cIix7bmFtZTpcInBob25lRGlzYW1iaWd1YXRpb25Gb3JtXCIsXCJkYXRhLXRlc3RpZFwiOlwicGhvbmVEaXNhbWJpZ3VhdGlvbkZvcm1cIixub1ZhbGlkYXRlOiEwLHNwZWxsQ2hlY2s6XCJmYWxzZVwiLG1ldGhvZDpcInBvc3RcIixhdXRvQ29tcGxldGU6XCJmYWxzZVwiLG9uU3VibWl0OlIsY2hpbGRyZW46WygwLCRlLmpzeCkoUk8se3RpdGxlSWQ6XCJwaG9uZURpc2FtYmlndWF0aW9uVGl0bGVcIix0aXRsZTpsfSksKDAsJGUuanN4KShkVCx7ZGVzY3JpcHRpb25JZDpcInBob25lRGlzYW1iaWd1YXRpb25EZXNjcmlwdGlvblwiLGNoaWxkcmVuOnN9KSwoMCwkZS5qc3gpKEdqLHtlcnJvck1lc3NhZ2U6SSxkcm9wZG93blByb3BzOnt1c2VJbmxpbmVQaG9uZU51bWJlcjp3LHZhbHVlOkMsY291bnRyeURhdGE6UyxvbkNoYW5nZTprfSxpbnB1dFByb3BzOntpZDpcImkwMTE2XCIsbmFtZTpcImxvZ2luZm10XCIscGxhY2Vob2xkZXI6Yyx0eXBlOlwidGVsXCIsb25DaGFuZ2U6RCx2YWx1ZTpULnZhbHVlLFwiYXJpYS1sYWJlbFwiOnUsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJwaG9uZURpc2FtYmlndWF0aW9uVGl0bGUgcGhvbmVEaXNhbWJpZ3VhdGlvbkRlc2NyaXB0aW9uXCIsaGFzRm9jdXM6VC5oYXNGb2N1cyxoYXNJbml0aWFsRm9jdXM6dHJ1ZSxvbkZvY3VzOlQub25Gb2N1cyxvbkJsdXI6VC5vbkJsdXJ9LHNob3dFcnJvck1lc3NhZ2U6an0pLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOkIud2luQnV0dG9uUGluQm90dG9tLGNoaWxkcmVuOigwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpCLnBvc2l0aW9uQnV0dG9uc1dpdGhCb3R0b21NYXJnaW4sY2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOkIucm93LGNoaWxkcmVuOigwLCRlLmpzeHMpKF9rLHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Qi5mb3JtR3JvdXAsY2hpbGRyZW46KDAsJGUuanN4KSh0Qyx7bGlua0lkOlwic2lnbmluV2l0aERpZmZlcmVudFVzZXJuYW1lXCIsdGV4dDpkLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gVShTdHJpbmcoVC52YWx1ZSkpfX0pfSkseCYmISFQJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpCLmZvcm1Hcm91cCxjaGlsZHJlbjooMCwkZS5qc3gpKHRDLHt0ZXh0OmYsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBGKEEpfSxsaW5rSWQ6XCJjcmVhdGVBY2NvdW50XCJ9KX0pXX0pfSksKDAsJGUuanN4cykoRl8se2NoaWxkcmVuOlsoMCwkZS5qc3gpKFVfLHtidXR0b25JZDpcImJhY2tCdXR0b25cIixsYWJlbDpwLGlzUHJpbWFyeTohMSx0eXBlOlwiYnV0dG9uXCIsYXJpYUxhYmVsOnAsb25DbGljazpNfSksKDAsJGUuanN4KShVXyx7YnV0dG9uSWQ6XCJuZXh0QnV0dG9uXCIsbGFiZWw6Zyxpc1ByaW1hcnk6ITAsdHlwZTpcInN1Ym1pdFwiLGFyaWFMYWJlbDpnfSldfSldfSl9KV19KX0sckk9ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsPT09KHQ9ZS5wcm9vZil8fHZvaWQgMD09PXQ/dm9pZCAwOnQudHlwZTtyZXR1cm4gbj09PUpQLkFsdEVtYWlsfHxuPT09SlAuRW1haWx9O2Z1bmN0aW9uIG9JKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBpSShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGFJPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZT8xMTM6NCxyPWU/dC5leGFtcGxlRW1haWxQbGFjZWhvbGRlcjp0LmV4YW1wbGVQaG9uZVBsYWNlaG9sZGVyLG89KDAsc3QuWjcpKHIsbi50b1N0cmluZygpKSxpPWU/XCJlbWFpbFwiOlwidGVsXCI7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP29JKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7aUkoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOm9JKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfSh7bWF4TGVuZ3RoOm4scGxhY2Vob2xkZXI6b30sUmkoKT97dHlwZTppfTp7fSl9LGxJPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1lP24uZW1haWxJbnB1dE1pc21hdGNoOm4ucGhvbmVJbnB1dE1pc21hdGNoO3JldHVybigwLHN0Llo3KShyLHQpfTtmdW5jdGlvbiBzSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gY0koZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/c0koT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXt1SShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6c0koT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gdUkoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGRJKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBmSShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9kSShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe3BJKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpkSShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBwSShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGdJPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuZnJpZW5kbHlBcHBOYW1lLG89Zk8uaW5zdGFuY2UubG9naW5Nb2RlLGk9ZS5wcm9vZixhPWkuY2xlYXJEaWdpdHMsbD12b2lkIDA9PT1hP1wiXCI6YSxzPWkuZGlzcGxheSxjPVdPKG8scix0KSx1PVwicHJvb2ZDb25maXJtYXRpb25UaXRsZVwiLGQ9XCJwcm9vZkNvbmZpcm1hdGlvbkRlc2NcIixmPVwiXCIuY29uY2F0KHUsXCIgXCIpLmNvbmNhdChkKSxwPXJJKGUpLGc9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZT9yLnZlcmlmeUVtYWlsVGl0bGU6ci52ZXJpZnlQaG9uZVRpdGxlLGk9ZT9yLnZlcmlmeUVtYWlsRGVzY3JpcHRpb246ci52ZXJpZnlQaG9uZURlc2NyaXB0aW9uO3JldHVybnt0aXRsZTpvLGRlc2NyaXB0aW9uOigwLHN0Llo3KShpLHQsbil9fShwLHMsbCxuKSxtPWFJKHAsbik7cmV0dXJuIGZJKGZJKGZJKHt9LGcpLG0pLHt9LHtkb2N1bWVudFRpdGxlOmMsbGlnaHRib3hUaXRsZUlkOnUsbGlnaHRib3hEZXNjcmlwdGlvbklkOmQsaW5wdXRBcmlhTGFiZWw6bi5pbnB1dEFyaWFMYWJlbCxpbnB1dEFyaWFEZXNjcmliZWRCeTpmfSl9O2Z1bmN0aW9uIG1JKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBoSShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9tSShPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2JJKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTptSShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBiSShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24geUkoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgdkk9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLGk9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUudXNlci51c2VybmFtZSxhPSgwLG8udXNlQ29udGV4dCkoWmUpLGw9YS5hdXRoU3RhdGUuZmxvd1Rva2VuVmFsdWUscz1hLmRpc3BhdGNoU3RhdGVDaGFuZ2UsYz1lLnByb29mLHU9Yy5jbGVhckRpZ2l0cyxkPXZvaWQgMD09PXU/XCJcIjp1LGY9Yy5kYXRhLHA9Yy5pc05vcGEsZz1jLnR5cGUsbT1ySShlKSxoPXpTKCksYj1hQSgpLHk9aUEoKTtyZXR1cm4gZnVuY3Rpb24oZSxvKXtyZXR1cm4gaEkoaEkoe29uU3VjY2VzczpmdW5jdGlvbihlKXt2YXIgbj1lLmZsb3dUb2tlbnx8ZS5yZXNwb25zZS5GbG93VG9rZW58fGw7cyh7dHlwZTpNZS5TZXRGbG93VG9rZW5WYWx1ZSxwYXlsb2FkOm59KSx0KCExKSxoKFR0LlByb29mQ29uZmlybWF0aW9uLEF3KFR0Lk9uZVRpbWVDb2RlKSl9LG9uRmFpbHVyZTpmdW5jdGlvbihlKXt2YXIgcixpPXkoZSk7dCghMSk7dmFyIGE9ZS5mbG93VG9rZW58fGw7cyh7dHlwZTpNZS5TZXRGbG93VG9rZW5WYWx1ZSxwYXlsb2FkOmF9KTt2YXIgYz1lLm90Y1N0YXR1cztjPT09bHQuZnRFcnJvcj8ocj1uLnNlc3Npb25FeHBpcmVkRXJyb3IsbyhyKSk6Yz09PWx0LmlucHV0RXJyb3I/KHI9bEkobSxkLG4pLG8ocikpOmk/aChUdC5Qcm9vZkNvbmZpcm1hdGlvbixBdyhUdC5DaGFsbGVuZ2UpKToocj1uLnNlbmRPdGNGYWlsZWQsbyhyKSl9LGNoYW5uZWw6Zz09PUpQLkVtYWlsP290LmVtYWlsQWRkcmVzczpvdC5tb2JpbGVTbXMsZmxvd1Rva2VuOmx9LGU/e3Byb29mQ29uZmlybWF0aW9uOmV9Ont9KSx7fSx7cHJvb2ZEYXRhOmYscHJvb2ZUeXBlOmcscHVycG9zZTpwP3J0Lm5vUGFzc3dvcmQ6cnQub3RjTG9naW4sdXNlcm5hbWU6aSxjaGFsbGVuZ2VWaWV3U3VwcG9ydGVkOm9BKHIpLHRlbGVtZXRyeUNhbGxiYWNrOmJ9KX19KGUsbixyKTtyZXR1cm4oMCxvLnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe3ZhciBlLHI9KGU9cmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocil7dmFyIG8sYSxsLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihvPXIudmFsdWUsYT1yLmVycm9ySGFuZGxlcixsPVN0cmluZyhvKSx0KXtlLm5leHQ9NzticmVha31yZXR1cm4gbighMCkscz1pKGwsYSksZS5uZXh0PTcsZUEocyk7Y2FzZSA3OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSxmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe3lJKGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe3lJKGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiByLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksW2ksdCxuXSl9LHdJPXthbHJlYWR5SGF2ZUNvZGU6XCJJIGhhdmUgYSBjb2RlXCIsc2VuZENvZGU6XCJTZW5kIGNvZGVcIixpbnB1dEFyaWFMYWJlbDpcIkVtYWlsXCIsdmVyaWZ5RW1haWxUaXRsZTpcIlZlcmlmeSB5b3VyIGVtYWlsXCIsdmVyaWZ5UGhvbmVUaXRsZTpcIlZlcmlmeSB5b3VyIHBob25lIG51bWJlclwiLHZlcmlmeUVtYWlsRGVzY3JpcHRpb246XCJXZSB3aWxsIHNlbmQgYSB2ZXJpZmljYXRpb24gY29kZSB0byB7MH0uIFRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgeW91ciBlbWFpbCBhZGRyZXNzLCBlbnRlciBpdCBiZWxvdy5cIix2ZXJpZnlQaG9uZURlc2NyaXB0aW9uOlwiV2Ugd2lsbCBzZW5kIGEgdmVyaWZpY2F0aW9uIGNvZGUgdG8gezB9LiBUbyB2ZXJpZnkgdGhhdCB0aGlzIGlzIHlvdXIgcGhvbmUgbnVtYmVyLCBlbnRlciB0aGUgbGFzdCA0IGRpZ2l0cyBpbmNsdWRpbmcgezF9LlwiLGV4YW1wbGVFbWFpbFBsYWNlaG9sZGVyOlwic29tZW9uZUBleGFtcGxlLmNvbVwiLGV4YW1wbGVQaG9uZVBsYWNlaG9sZGVyOlwiTGFzdCB7MH0gZGlnaXRzIG9mIHBob25lIG51bWJlclwiLGVtYWlsSW5wdXRNaXNtYXRjaDpcIlRoYXQgZG9lc24ndCBtYXRjaCB0aGUgYWx0ZXJuYXRlIGVtYWlsIGFzc29jaWF0ZWQgd2l0aCB5b3VyIGFjY291bnQuIFRoZSBjb3JyZWN0IGVtYWlsIHN0YXJ0cyB3aXRoIFxcXCJ7MH1cXFwiLlwiLHBob25lSW5wdXRNaXNtYXRjaDpcIlRoYXQgZG9lc24ndCBtYXRjaCB0aGUgcGhvbmUgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB5b3VyIGFjY291bnQuIFRoZSBjb3JyZWN0IG51bWJlciBlbmRzIGluIHswfS5cIixzZXNzaW9uRXhwaXJlZEVycm9yOlwiV2UgY291bGRuJ3Qgc2VuZCB0aGUgY29kZS4gUGxlYXNlIHJlZnJlc2ggeW91ciBicm93c2VyIGFuZCB0cnkgYWdhaW4uXCIsc2VuZE90Y0ZhaWxlZDpcIldlIGNvdWxkbid0IHNlbmQgdGhlIGNvZGUuIFBsZWFzZSB0cnkgYWdhaW4uXCJ9O2Z1bmN0aW9uIFNJKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBQSShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBQSShlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gUEkoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgeEk9ZnVuY3Rpb24oKXt2YXIgZSx0LG49SXQuZGVmYXVsdC5pbnN0YW5jZS5zaG93QnV0dG9ucyxyPVVtLmluc3RhbmNlLGk9ci51c2VDb21tb25TdHlsZXMsYT1yLnVzZVN0YXRpY0NvbW1vblN0eWxlcyxsPVRPKCkudmlld1N0YXRlLmNyZWRlbnRpYWxzLHM9bC5hdmFpbGFibGVDcmVkZW50aWFscyxjPWwub3RjQ3JlZGVudGlhbCx1PXZvaWQgMD09PWM/e2NyZWRlbnRpYWxUeXBlOiRQLk9uZVRpbWVDb2RlLHByb29mOntkaXNwbGF5OlwiXCIsdHlwZTpKUC5TTVN9fTpjLGQ9U0koKDAsby51c2VTdGF0ZSkoITEpLDIpLGY9ZFswXSxwPWRbMV0sZz1nSSh1LHBDLHdJKSxtPWcuZG9jdW1lbnRUaXRsZSxoPWcubGlnaHRib3hUaXRsZUlkLGI9Zy50aXRsZSx5PWcubGlnaHRib3hEZXNjcmlwdGlvbklkLHY9Zy5kZXNjcmlwdGlvbix3PWcuaW5wdXRBcmlhTGFiZWwsUz1nLmlucHV0QXJpYURlc2NyaWJlZEJ5LFA9Zy5tYXhMZW5ndGgseD1nLnBsYWNlaG9sZGVyLE89Zy50eXBlLF89dkkodSxmLHAsd0kpLEM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnByb29mLHI9bi5jbGVhckRpZ2l0cyxvPXZvaWQgMD09PXI/XCJcIjpyLGk9bi50eXBlLGE9ckkoZSksbD1sSShhLG8sdCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PUl0LmRlZmF1bHQuaW5zdGFuY2UuZW52aXJvbm1lbnQsbj1TdHJpbmcoZSl8fFwiXCI7aWYobiYmKG49KDAsc3QuZnkpKG4pKSxcIlwiPT09bilyZXR1cm4gbDtpZihbXCJpbnRcIixcIm9uZWJveFwiXS5pbmNsdWRlcyh0LnRvTG93ZXJDYXNlKCkpJiZcIjBcIj09PW4pcmV0dXJuXCJcIjtpZihpPT09SlAuRW1haWwpe2lmKCFWUChuKXx8bi5zdWJzdHJpbmcoMCwyKS50b0xvd2VyQ2FzZSgpIT09by50b0xvd2VyQ2FzZSgpKXJldHVybiBsfWVsc2UgaWYoTnVtYmVyLmlzTmFOKG4pfHw0IT09bi5sZW5ndGh8fG4uc3Vic3RyaW5nKG4ubGVuZ3RoLTIpIT09bylyZXR1cm4gbDtyZXR1cm5cIlwifX0odSx3SSksaz1mdW5jdGlvbihlLHQpe3ZhciBuPSgwLG8udXNlQ29udGV4dCkoQU8pLHI9bi52aWV3U3RhdGUuY3JlZGVudGlhbHMucHJvb2ZDb25maXJtYXRpb24saT1uLmRpc3BhdGNoU3RhdGVDaGFuZ2UsYT1maih7aW5pdGlhbFZhbHVlOnIsaGFzSW5pdGlhbEZvY3VzOiEwLHZhbGlkYXRpb25NZXRob2Q6dH0pLGw9YS5vbkNoYW5nZSxzPURqKHtpbnB1dFN0YXRlOmEsdmlld0lkOlR0LlByb29mQ29uZmlybWF0aW9uLHN1Ym1pdFRhc2s6ZX0pO3JldHVybiBjSShjSSh7fSxhKSx7fSx7b25DaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJzdHJpbmdcIj09dHlwZW9mIGU/ZTplLnRhcmdldC52YWx1ZTtsKHQpLGkoe3R5cGU6dU8uVXBkYXRlQ3JlZGVudGlhbHMscGF5bG9hZDp7cHJvb2ZDb25maXJtYXRpb246dH19KX0sb25TdWJtaXQ6c30pfShfLEMpLEE9ay5oYXNGb2N1cyxUPWsub25CbHVyLEU9ay5vbkZvY3VzLGo9ay52YWx1ZSxJPWsub25DaGFuZ2UsTD1rLm9uU3VibWl0LEQ9ay5lcnJvcixOPUQuc2hvd0Vycm9yTWVzc2FnZSxSPUQuZXJyb3JNZXNzYWdlLEI9KGU9SSx0PXpTKCksZnVuY3Rpb24oKXtlKFwiXCIpLHQoVHQuUHJvb2ZDb25maXJtYXRpb24sQXcoVHQuT25lVGltZUNvZGUpKX0pLFU9U18oKSxGPVUuc2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXIsTT1VLnNob3dDcmVkZW50aWFsU3dpdGNoQ29udGVudCx6PXthdmFpbGFibGVDcmVkZW50aWFsczpzLGN1cnJlbnRDcmVkZW50aWFsOnUsc2V0UmVxdWVzdFBlbmRpbmdGbGFnOnAsc291cmNlVmlld0lkOlR0LlByb29mQ29uZmlybWF0aW9uLHNob3VsZFVwZGF0ZU90Y0NyZWRlbnRpYWw6ITB9LEg9ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLnNob3dCdXR0b25zLHQ9SFMoKTtyZXR1cm4gZSYmdH0oKTtmayhUdC5Qcm9vZkNvbmZpcm1hdGlvbixFdC5Mb2dpbix7c2hvd0JhY2tCdXR0b25PbkFjdGl2ZVZpZXc6SCxzaG93SWRlbnRpdHlCYW5uZXI6ITB9KSxhayhtKSxhKCk7dmFyIFY9aSgpO3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46KDAsJGUuanN4cykoXCJmb3JtXCIse25hbWU6XCJmMVwiLGlkOlwiaTAyODFcIixcImRhdGEtdGVzdGlkXCI6XCJwcm9vZkNvbmZpcm1hdGlvbkZvcm1cIixub1ZhbGlkYXRlOiEwLHNwZWxsQ2hlY2s6XCJmYWxzZVwiLG1ldGhvZDpcInBvc3RcIixhdXRvQ29tcGxldGU6XCJvZmZcIixvblN1Ym1pdDpMLGNoaWxkcmVuOlsoMCwkZS5qc3gpKHdULHt0aXRsZUlkOmgsdGl0bGU6Yn0pLCgwLCRlLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpTZyhWLnJvdyxWLmZvcm1Hcm91cCksY2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7aWQ6eSxjbGFzc05hbWU6Vi5mb3JtR3JvdXAsY2hpbGRyZW46dn0pLCgwLCRlLmpzeCkoaWose2lkOlwicHJvb2ZDb25maXJtYXRpb25UZXh0XCIsbmFtZTpcIlByb29mQ29uZmlybWF0aW9uXCIscGxhY2Vob2xkZXI6eCx0eXBlOk98fFwidGV4dFwiLHNob3dFcnJvck1lc3NhZ2U6TixlcnJvck1lc3NhZ2U6Uix2YWx1ZTpqLG9uQ2hhbmdlOkksXCJhcmlhLWxhYmVsXCI6dyxcImFyaWEtZGVzY3JpYmVkYnlcIjpTLGhhc0ZvY3VzOkEsaGFzSW5pdGlhbEZvY3VzOiEwLG9uRm9jdXM6RSxvbkJsdXI6VCxhdXRvQ29tcGxldGU6XCJvZmZcIixtYXhMZW5ndGg6UH0pXX0pLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlYuYnV0dG9uTWFyZ2luLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlYucm93LGNoaWxkcmVuOigwLCRlLmpzeHMpKF9rLHtjaGlsZHJlbjpbTSYmKDAsJGUuanN4KShQQSx7Y3JlZGVudGlhbFN3aXRjaFByb3BzOnosc2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXI6Rn0pLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlYuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkodEMse2xpbmtJZDpcInByb29mQ29uZmlybWF0aW9uVG9nZ2xlXCIsdGV4dDp3SS5hbHJlYWR5SGF2ZUNvZGUsb25DbGljazpCfSl9KV19KX0pfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Vi53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Vi5yb3csY2hpbGRyZW46KDAsJGUuanN4KShGXyx7Y2hpbGRyZW46biYmKDAsJGUuanN4KShVXyx7dHlwZTpcInN1Ym1pdFwiLGlzUHJpbWFyeTohMCxsYWJlbDp3SS5zZW5kQ29kZX0pfSl9KX0pXX0pfSl9O2Z1bmN0aW9uIE9JKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBfSShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBfSShlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gX0koZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgQ0k9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pc0luaXRpYWxPcGVuLG49dm9pZCAwIT09dCYmdCxyPWUub3BlbixpPXZvaWQgMCE9PXImJnIsYT1lLmRyb3Bkb3duUmVmLGw9KDAsby51c2VSZWYpKG51bGwpO2EmJihsPWEpO3ZhciBzPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSx0PU9JKCgwLG8udXNlU3RhdGUpKGUpLDIpLG49dFswXSxyPXRbMV0saT1mdW5jdGlvbigpe3JldHVybiByKCExKX0sYT1mdW5jdGlvbigpe3JldHVybiByKCEwKX07cmV0dXJue2lzT3BlbjpuLHNldElzT3BlbjpyLG9uQ2xvc2U6aSxvbk9wZW46YX19KG4pLGM9cy5pc09wZW4sdT1zLnNldElzT3BlbixkPXMub25DbG9zZSxmPXMub25PcGVuO3JldHVybiBUUygoZnVuY3Rpb24oKXtpZihuKXt2YXIgZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2YoKX0pLFpFKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gY2xlYXJUaW1lb3V0KGUpfX1yZXR1cm4gZnVuY3Rpb24oKXt9fSkpLCgwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXt2YXIgZSx0O2kmJihmKCksbnVsbD09PShlPWwpfHx2b2lkIDA9PT1lfHxudWxsPT09KHQ9ZS5jdXJyZW50KXx8dm9pZCAwPT09dHx8dC5mb2N1cygpKX0pLFtkLGYsaSxsXSkse2lzT3BlbjpjLHNldElzT3Blbjp1LG9uQ2xvc2U6ZCxvbk9wZW46Zn19LGtJPWZ1bmN0aW9uKGUpe3ZhciB0PWUuY2hpbGRyZW4sbj1lLmRyb3Bkb3duTWVudVByb3BzLHI9ZS5kcm9wZG93bkJ1dHRvblByb3BzLGk9ZS5pbWdBZnRlckNvbnRlbnQsYT1lLmJ1dHRvblJlZixsPWUuZGF0YVRlc3RJZCxzPXZvaWQgMD09PWw/XCJmbG9hdGluZ0Ryb3Bkb3duXCI6bCxjPW5bXCJhcmlhLWRlc2NyaWJlZGJ5XCJdLHU9bltcImFyaWEtbGFiZWxcIl0sZD1uW1wiYXJpYS1sYWJlbGxlZGJ5XCJdLGY9bltcImFyaWEtcmVxdWlyZWRcIl0scD1uLmN1c3RvbUNzcyxnPW4uaGFzRm9jdXMsbT12b2lkIDAhPT1nJiZnLGg9bi5oYXNJbml0aWFsRm9jdXMsYj12b2lkIDAhPT1oJiZoLHk9bi5pc0luaXRpYWxPcGVuLHY9dm9pZCAwIT09eSYmeSx3PW4uaWQsUz1uLnNlbGVjdE9wdGlvbnMsUD1uLmRhdGFUZXN0SWQseD12b2lkIDA9PT1QP1wiZmxvYXRpbmdEcm9wZG93bk1lbnVcIjpQLE89ci5hcmlhRGVzY3JpYmVkQnksXz1yLmFyaWFMYWJlbCxDPXIuYXJpYUxhYmVsbGVkQnksaz1yLmRhdGFUZXN0SWQsQT12b2lkIDA9PT1rP1wiZmxvYXRpbmdEcm9wZG93bkJ1dHRvblwiOmssVD1yLmNsYXNzTmFtZSxFPXIuYnV0dG9uSWQsaj1WZigpLEk9Q0koe2lzSW5pdGlhbE9wZW46dn0pLEw9SS5pc09wZW4sRD1JLnNldElzT3BlbixOPUkub25DbG9zZTshZnVuY3Rpb24oZSl7dmFyIHQ9ZS5lbGVtZW50UmVmLG49ZS5oYXNJbml0aWFsRm9jdXMscj12b2lkIDAhPT1uJiZuLGk9ZS5oYXNGb2N1cyxhPXZvaWQgMCE9PWkmJmk7VFMoKGZ1bmN0aW9uKCl7aWYocil7dmFyIGU9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt2YXIgZTt0JiYobnVsbD09dHx8bnVsbD09PShlPXQuY3VycmVudCl8fHZvaWQgMD09PWV8fGUuZm9jdXMoKSl9KSxaRSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dChlKX19cmV0dXJuIGZ1bmN0aW9uKCl7fX0pKSwoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7dmFyIGU7YSYmdCYmKG51bGw9PXR8fG51bGw9PT0oZT10LmN1cnJlbnQpfHx2b2lkIDA9PT1lfHxlLmZvY3VzKCkpfSksW3QsYV0pfSh7ZWxlbWVudFJlZjphLGhhc0luaXRpYWxGb2N1czpiLGhhc0ZvY3VzOm19KTt2YXIgUj1vLnVzZVJlZihudWxsKTtyZXR1cm4oMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6ai5mbG9hdGluZ0Ryb3Bkb3duQ29udGFpbmVyLFwiZGF0YS10ZXN0aWRcIjpzLG9uQmx1cjpmdW5jdGlvbihlKXtlLmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KXx8TigpfSxjaGlsZHJlbjpbKDAsJGUuanN4KShoUyx7aW1hZ2U6e3VybHM6S2gsY2xhc3NOYW1lOmouZmxvYXRpbmdEcm9wZG93bkJ1dHRvbkltZ30sZGF0YVRlc3RJZDpBLGFyaWFMYWJlbDpfLGFyaWFMYWJlbGxlZEJ5OkMsYXJpYURlc2NyaWJlZEJ5Ok8sYnV0dG9uSWQ6RSxjbGFzc05hbWU6U2coai5yZW1vdmVEZWZhdWx0QnV0dG9uU3R5bGVzLGouZmxvYXRpbmdEcm9wZG93bkJ1dHRvbixUKSxvbkNsaWNrOmZ1bmN0aW9uKCl7RCghTCl9LHJlZjphLGltZ0FmdGVyQ29udGVudDppLGNoaWxkcmVuOnR9KSxMJiYoMCwkZS5qc3gpKFwiZGl2XCIse1wiYXJpYS1kZXNjcmliZWRieVwiOmMsXCJhcmlhLWxhYmVsXCI6dSxcImFyaWEtbGFiZWxsZWRieVwiOmQsXCJhcmlhLXJlcXVpcmVkXCI6ZixjbGFzc05hbWU6U2coai5mbG9hdGluZ0Ryb3Bkb3duQ29udGVudCxwKSxcImRhdGEtdGVzdGlkXCI6eCxpZDp3LHJlZjpSLGNoaWxkcmVuOigwLCRlLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46Uy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybigwLCRlLmpzeCkoXCJidXR0b25cIix7dHlwZTpcImJ1dHRvblwiLHZhbHVlOmUudmFsdWUsb25DbGljazpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtlLnN0b3BQcm9wYWdhdGlvbigpLHQmJnQoKX0odCxlLm9uQ2xpY2spfSxvbktleURvd246ZnVuY3Rpb24odCl7cmV0dXJuIG49dCxyPWUub25DbGljayx2b2lkKFwiRW50ZXJcIiE9PW4ua2V5JiZcIiBcIiE9PW4ua2V5fHwhcnx8cigpKTt2YXIgbixyfSxjbGFzc05hbWU6ai5yZW1vdmVEZWZhdWx0QnV0dG9uU3R5bGVzLFwiYXJpYS1sYWJlbFwiOmUudGV4dCxjaGlsZHJlbjplLnRleHR9LGUudmFsdWUpfSkpfSl9KV19KX0sQUk9e2JhY2tCdXR0b25MYWJlbDpcIkJhY2tcIixiYWRQaG9uZU51bWJlckVycm9yTWVzc2FnZTpcIlRoZSBwaG9uZSBudW1iZXIgeW91IGVudGVyZWQgaXNuJ3QgdmFsaWQuIFlvdXIgcGhvbmUgbnVtYmVyIGNhbiBjb250YWluIG51bWJlcnMsIHNwYWNlcywgYW5kIHRoZXNlIHNwZWNpYWwgY2hhcmFjdGVyczogKCApIFsgXSAuIC0gKiAvXCIsY2FuY2VsQnV0dG9uTGFiZWw6XCJDYW5jZWxcIixlcnJvckludmFsaWRNZW1iZXJOYW1lRW1haWxQaG9uZVNreXBlOlwiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLCBwaG9uZSBudW1iZXIsIG9yIFNreXBlIG5hbWUuXCIsaGVhZGVyOlwiU2lnbiBpblwiLHBsYWNlaG9sZGVyOlwiRW1haWwsIHBob25lLCBvciBTa3lwZVwiLGxlYXJuTW9yZUJ1dHRvbkxhYmVsOlwiTGVhcm4gTW9yZVwiLGxvZ2luSGVscEZpZG9BcmlhTGFiZWw6XCJMZWFybiBtb3JlIGFib3V0IHNpZ25pbmcgaW4gd2l0aCBhIHNlY3VyaXR5IGtleVwiLGxvZ2luSGVscEhlbGxvT3JGaWRvQXJpYUxhYmVsOlwiTGVhcm4gbW9yZSBhYm91dCBzaWduaW5nIGluIHdpdGggV2luZG93cyBIZWxsbyBvciBhIHNlY3VyaXR5IGtleVwiLGxvZ2luU2lnbnVwTGluazpcIk5vIGFjY291bnQ/IDxzaWdudXBMaW5rPkNyZWF0ZSBvbmUhPC9zaWdudXBMaW5rPlwiLHNpZ25Jbk9wdGlvbnNUZXh0OlwiU2lnbi1pbiBvcHRpb25zXCIsc2lnbnVwTGlua0FyaWFMYWJlbDpcIkNyZWF0ZSBhIE1pY3Jvc29mdCBhY2NvdW50XCIsc2lnbnVwRm9yTXlDaGlsZExpbms6XCJGb3IgbXkgY2hpbGRcIixzaWdudXBGb3JNeXNlbGZMaW5rOlwiRm9yIG15c2VsZlwiLHVzZXJuYW1lQXJpYUxhYmVsOlwiRW50ZXIgeW91ciBlbWFpbCwgcGhvbmUsIG9yIFNreXBlLlwifTtmdW5jdGlvbiBUSShlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gRUkoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/VEkoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtqSShlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6VEkoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gakkoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBJST1mdW5jdGlvbihlKXt2YXIgdD1lLmN1c3RvbU1lbnVDc3Msbj1lLmN1c3RvbUNoZXZyb25Dc3Mscj1lLmhhc0luaXRpYWxGb2N1cyxpPWUuaXNJbml0aWFsT3BlbixhPWUuY3JlYXRlQWNjb3VudFByb3BzLGw9ZS51c2VybmFtZSxzPUFJLmxvZ2luU2lnbnVwTGluayxjPUFJLnNpZ251cEZvck15c2VsZkxpbmssdT1BSS5zaWdudXBGb3JNeUNoaWxkTGluayxkPWZ1bmN0aW9uKCl7dmFyIGU9SXQuZGVmYXVsdC5pbnN0YW5jZSx0PWUuYWN0aXZlRmxhdm9yLG49ZS50ZWxlbWV0cnkscj1lLmNsaWVudElkLG89SnQoKS5nbG9iYWxTdGF0ZSxpPW8uYWN0aXZlVmlldyxhPW8uYWN0aXZlRmxvdyxsPW8udXNlckZsb3dUeXBlLHM9Zk8uaW5zdGFuY2UsYz1zLnNpZ251cFVybCx1PXMuc2lnbnVwVXJsUG9zdFBhcmFtcyxkPUd3Lmluc3RhbmNlLGY9ZC5pc0dhbWluZ0Zsb3cscD1kLmlzU2ltcGxpZmllZENoaWxkQWNjb3VudENyZWF0aW9uLGc9YztnPSgwLHN0LlBrKShjLFtcImJkYXRlXCJdKSxnPSgwLHN0Lk5pKShnLHtzY2FjOnA/XCIxXCI6XCIwXCIsZ2Y6Zj9cIjFcIjpcIjBcIix1ZnQ6bC50b1N0cmluZygpLGNsaWVudF9pZDpyfSk7dmFyIG09UnQobix7YWN0aXZlVmlldzppLGFjdGl2ZUZsb3c6YSxhY3RpdmVGbGF2b3I6dH0pLmxvZ1VzZXJBY3Rpb24saD1mXygpO3JldHVybiBmdW5jdGlvbihlKXttKHthY3Rpb25OYW1lOk1TLlNpZ251cEZvck15c2VsZkNsaWNrZWR9KTt2YXIgdD1reChlLGcsdSk7aCh0LnJlZGlyZWN0VXJsfHxcIlwiLHQucmVkaXJlY3RQb3N0UGFyYW1zLHQuaXNJZHBSZWRpcmVjdCl9fSgpLGY9ZnVuY3Rpb24oKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLHQ9ZS5hY3RpdmVGbGF2b3Isbj1lLnRlbGVtZXRyeSxyPUp0KCkuZ2xvYmFsU3RhdGUsbz1yLmFjdGl2ZVZpZXcsaT1yLmFjdGl2ZUZsb3csYT1KdCgpLmRpc3BhdGNoU3RhdGVDaGFuZ2UsbD16UygpLHM9UnQobix7YWN0aXZlVmlldzpvLGFjdGl2ZUZsb3c6aSxhY3RpdmVGbGF2b3I6dH0pLmxvZ1VzZXJBY3Rpb247cmV0dXJuIGZ1bmN0aW9uKGUpe3Moe2FjdGlvbk5hbWU6TVMuU2lnbnVwRm9yTXlDaGlsZENsaWNrZWR9KTt2YXIgdD1ueChlLCEwKTthKHt0eXBlOkx0LlNldFVzZXIscGF5bG9hZDp7dXNlcm5hbWU6dH19KSxhKHt0eXBlOkx0LkJlZ2luTmF2aWdhdGUsc291cmNlOlR0LlVzZXJuYW1lLGRlc3RpbmF0aW9uOlR0LkJlbmVmaXRzLGRpc3BsYXlPcHRpb25zOntuYXZpZ2F0aW9uRGlyZWN0aW9uOlwiZm9yd2FyZFwifX0pLGwoVHQuVXNlcm5hbWUsVHQuQmVuZWZpdHMpfX0oKSxwPVt7dGV4dDpjLHZhbHVlOlwibXlzZWxmXCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBkKGwpfX0se3RleHQ6dSx2YWx1ZTpcImNoaWxkXCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBmKGwpfX1dLGc9KDAsby51c2VSZWYpKG51bGwpLG09KDAsVW0uaW5zdGFuY2UudXNlTGlua0J1dHRvblN0eWxlcykoKSxoPUl0LmRlZmF1bHQuaW5zdGFuY2UsYj1oLmFjdGl2ZUZsYXZvcix5PWgudGVsZW1ldHJ5LHY9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUsdz12LmFjdGl2ZVZpZXcsUz12LmFjdGl2ZUZsb3csUD12LnVzZXJGbG93VHlwZSx4PVJ0KHkse2FjdGl2ZVZpZXc6dyxhY3RpdmVGbG93OlMsYWN0aXZlRmxhdm9yOmJ9KS5sb2dVc2VyQWN0aW9uO3JldHVybigwLCRlLmpzeCkoa0ksRUkoRUkoe30sYSkse30se2RhdGFUZXN0SWQ6XCJjcmVhdGVBY2NvdW50RHJvcGRvd25cIixidXR0b25SZWY6Zyxkcm9wZG93bk1lbnVQcm9wczp7c2VsZWN0T3B0aW9uczpwLGhhc0luaXRpYWxGb2N1czpyLGlzSW5pdGlhbE9wZW46aSxpZDpcImNyZWF0ZUFjY291bnREcm9wZG93bk1lbnVcIixcImFyaWEtZGVzY3JpYmVkYnlcIjpcImNyZWF0ZUFjY291bnREcm9wZG93bk1lbnVFcnJvclwiLGN1c3RvbUNzczp0fSxkcm9wZG93bkJ1dHRvblByb3BzOntjbGFzc05hbWU6bixvbkNsaWNrOmZ1bmN0aW9uKCl7eCh7YWN0aW9uTmFtZTpNUy5TaWdudXBMaW5rQ2xpY2tlZCxhY3Rpb25WYWx1ZTpcIlVzZXJGbG93VHlwZTogXCIuY29uY2F0KFApfSl9fSxpbWdBZnRlckNvbnRlbnQ6ITAsY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjaGlsZHJlbjooMCwkZS5qc3gpKGJ3LHt0ZXh0OnMsZW1iZWRkZWRCaW5kaW5nczp7c2lnbnVwTGluazpmdW5jdGlvbihlKXtyZXR1cm4oMCwkZS5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6U2cobS5saW5rLG0ubm9QYWRkaW5nLG0uaGlnaENvbnRyYXN0KSxjaGlsZHJlbjplWzBdfSl9fX0pfSl9KSl9LExJPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaWQsbj1lLnVzZXJuYW1lLHI9ZS50ZXh0LG89ZS5hcmlhbExhYmVsLGk9cF8oKTtyZXR1cm4oMCwkZS5qc3gpKGJ3LHt0ZXh0OnIsZW1iZWRkZWRCaW5kaW5nczp7c2lnbnVwTGluazpmdW5jdGlvbihlKXtyZXR1cm4oMCwkZS5qc3gpKHRDLHt0ZXh0OmVbMF0sb25DbGljazpmdW5jdGlvbigpe3JldHVybiBpKG4pfSxsaW5rSWQ6dCxhcmlhTGFiZWw6b30pfX19KX0sREk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZCxuPWUudXNlcm5hbWUscj1lLnRleHQsbz1lLmFyaWFsTGFiZWwsaT1mdW5jdGlvbigpe3ZhciBlPUl0LmRlZmF1bHQuaW5zdGFuY2UsdD1lLmFjdGl2ZUZsYXZvcixuPWUudGVsZW1ldHJ5LHI9ZS5jbGllbnRJZCxvPUp0KCkuZ2xvYmFsU3RhdGUsaT1vLmFjdGl2ZVZpZXcsYT1vLmFjdGl2ZUZsb3csbD1vLnVzZXJGbG93VHlwZSxzPWZPLmluc3RhbmNlLGM9cy5zaWdudXBVcmwsdT1zLnNpZ251cFVybFBvc3RQYXJhbXMsZD1Hdy5pbnN0YW5jZSxmPWQuaXNHYW1pbmdGbG93LHA9ZC5pc1NpbXBsaWZpZWRDaGlsZEFjY291bnRDcmVhdGlvbixnPWM7Zz0oMCxzdC5QaykoYyxbXCJiZGF0ZVwiXSksZz0oMCxzdC5OaSkoZyx7c2NhYzpwP1wiMVwiOlwiMFwiLGdmOmY/XCIxXCI6XCIwXCIsdWZ0OmN0Llk2LkFkdWx0V2l0aENoaWxkLnRvU3RyaW5nKCksY2xpZW50X2lkOnJ9KTt2YXIgbT1SdChuLHthY3RpdmVWaWV3OmksYWN0aXZlRmxvdzphLGFjdGl2ZUZsYXZvcjp0fSkubG9nVXNlckFjdGlvbixoPWZfKCk7cmV0dXJuIGZ1bmN0aW9uKGUpe20oe2FjdGlvbk5hbWU6TVMuU2lnbnVwTGlua0NsaWNrZWQsYWN0aW9uVmFsdWU6e3VzZXJGbG93VHlwZTpsfX0pO3ZhciB0PWt4KGUsZyx1KTtoKHQucmVkaXJlY3RVcmx8fFwiXCIsdC5yZWRpcmVjdFBvc3RQYXJhbXMsdC5pc0lkcFJlZGlyZWN0KX19KCk7cmV0dXJuKDAsJGUuanN4KShidyx7dGV4dDpyLGVtYmVkZGVkQmluZGluZ3M6e3NpZ251cExpbms6ZnVuY3Rpb24oZSl7cmV0dXJuKDAsJGUuanN4KSh0Qyx7dGV4dDplWzBdLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gaShuKX0sbGlua0lkOnQsYXJpYUxhYmVsOm8sbGlua0RhdGFUZXN0SWQ6XCJwYXJlbnRTaWduVXBMaW5rXCJ9KX19fSl9LE5JPXt0b3VQcml2YWN5QWdyZWVtZW50V2l0aG91dENvbnNlbnQ6XCJDaG9vc2luZyA8Ym9sZFRleHQ+TmV4dDwvYm9sZFRleHQ+IG1lYW5zIHRoYXQgeW91IGFncmVlIHRvIHRoZSA8c2VydmljZXNBZ3JlZW1lbnRMaW5rPk1pY3Jvc29mdCBTZXJ2aWNlcyBBZ3JlZW1lbnQ8L3NlcnZpY2VzQWdyZWVtZW50TGluaz4gYW5kIDxwcml2YWN5U3RhdGVtZW50TGluaz5wcml2YWN5IGFuZCBjb29raWVzIHN0YXRlbWVudDwvcHJpdmFjeVN0YXRlbWVudExpbms+LlwiLHRvdVByaXZhY3lBZ3JlZW1lbnRXaXRoQ29uc2VudDpcIkNob29zaW5nIDxib2xkVGV4dD5OZXh0PC9ib2xkVGV4dD4gbWVhbnMgdGhhdCB5b3UgYWdyZWUgdG8gdGhlIDxzZXJ2aWNlc0FncmVlbWVudExpbms+TWljcm9zb2Z0IFNlcnZpY2VzIEFncmVlbWVudDwvc2VydmljZXNBZ3JlZW1lbnRMaW5rPiBhbmQgPHByaXZhY3lTdGF0ZW1lbnRMaW5rPlByaXZhY3kgU3RhdGVtZW50PC9wcml2YWN5U3RhdGVtZW50TGluaz4uXCIsdG91U2VydmljZXNDb25zZW50V2l0aG91dE9uZURyaXZlOlwiWW91ciBNaWNyb3NvZnQgYWNjb3VudCBpcyB1c2VkIHRvIGVuYWJsZSBmZWF0dXJlcyBpbiBNaWNyb3NvZnQgYXBwcyBhbmQgc2VydmljZXMgd2hlbiB5b3Ugc2lnbiBpbiwgaW5jbHVkaW5nIGJhY2tpbmcgdXAgZGF0YSBvbiB5b3VyIGRldmljZSBpbiBjYXNlIHlvdSBuZWVkIHRvIHJlcGxhY2Ugb3IgcmVzdG9yZSBpdC4gWW91ciBzZXR0aW5ncywgYnJvd3NpbmcgaGlzdG9yeSwgZmF2b3JpdGVzLCBwYXNzd29yZHMsIGNvbnRhY3RzLCBhbmQgbW9yZSwgYXJlIGFsc28gc3luY2VkIGFjcm9zcyBkZXZpY2VzLCBhcHBzLCBhbmQgc2VydmljZXMuIDxzZWVIb3dEYXRhSXNNYW5hZ2VkTGluaz5TZWUgaG93IHlvdXIgZGF0YSBpcyBtYW5hZ2VkPC9zZWVIb3dEYXRhSXNNYW5hZ2VkTGluaz4uXCIsdG91U2VydmljZXNDb25zZW50V2l0aE9uZURyaXZlOlwiV2hlbiB5b3Ugc2lnbiBpbiB3aXRoIHlvdXIgTWljcm9zb2Z0IGFjY291bnQsIHdlIGJhY2sgdXAgeW91ciBmaWxlcywgaW5jbHVkaW5nIHlvdXIgcGhvdG9zLCBzbyB5b3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCBsb3NpbmcgdGhlbSBpZiBzb21ldGhpbmcgaGFwcGVucyB0byB5b3VyIFdpbmRvd3MgZGV2aWNlLiBZb3VyIHNldHRpbmdzLCBmaWxlcywgYnJvd3NpbmcgaGlzdG9yeSwgZmF2b3JpdGVzLCBwYXNzd29yZHMsIGNvbnRhY3RzLCBhbmQgbW9yZSwgYXJlIGFsc28gc3luY2VkIGFjcm9zcyBkZXZpY2VzLCBhcHBzLCBhbmQgc2VydmljZXMuIDxzZWVIb3dEYXRhSXNNYW5hZ2VkTGluaz5TZWUgaG93IHlvdXIgZGF0YSBpcyBtYW5hZ2VkPC9zZWVIb3dEYXRhSXNNYW5hZ2VkTGluaz4uXCIsdG91VW5pZmllZENvbnNlbnRXaXRob3V0T25lRHJpdmU6XCJXaGVuIHlvdSBzaWduIGluLCB3ZSdsbCBtYWtlIGluZm8gc2F2ZWQgdG8geW91ciBhY2NvdW50IGF2YWlsYWJsZSBhY3Jvc3MgTWljcm9zb2Z0IHByb2R1Y3RzIHNvIGltcG9ydGFudCB0aGluZ3MgbGlrZSB5b3VyIGNhbGVuZGFyIGluZm8sIGZhdm9yaXRlcywgY29udGFjdHMsIHBhc3N3b3JkcywgYnJvd3NpbmcgaGlzdG9yeSwgYW5kIHJlY29tbWVuZGVkIGZpbGVzIGFyZSByaWdodCB3aGVyZSB5b3UgbmVlZCB0aGVtLiA8bGVhcm5Nb3JlTGluaz5MZWFybiBtb3JlPC9sZWFybk1vcmVMaW5rPlwiLHRvdVVuaWZpZWRDb25zZW50V2l0aE9uZURyaXZlOlwiV2hlbiB5b3Ugc2lnbiBpbiwgd2UnbGwgbWFrZSBpbmZvIHNhdmVkIHRvIHlvdXIgYWNjb3VudCBhdmFpbGFibGUgYWNyb3NzIE1pY3Jvc29mdCBwcm9kdWN0cyBzbyBpbXBvcnRhbnQgdGhpbmdzIGxpa2UgeW91ciBjYWxlbmRhciBpbmZvLCBmYXZvcml0ZXMsIGNvbnRhY3RzLCBwYXNzd29yZHMsIGJyb3dzaW5nIGhpc3RvcnksIGFuZCByZWNvbW1lbmRlZCBmaWxlcyBhcmUgcmlnaHQgd2hlcmUgeW91IG5lZWQgdGhlbS4gV2UnbGwgYWxzbyBiYWNrIHVwIHlvdXIgZmlsZXMgYW5kIHBob3RvcyBvbiB0aGlzIGRldmljZSB0byBPbmVEcml2ZSB0byBoZWxwIGtlZXAgdGhlbSBzYWZlLiA8bGVhcm5Nb3JlTGluaz5MZWFybiBtb3JlPC9sZWFybk1vcmVMaW5rPlwifTtmdW5jdGlvbiBSSShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIEJJPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGksYSxsLHMsYyx1LGQ9elMoKSxmPSh0PU5JLG49Zk8uaW5zdGFuY2Uub29iZVByb3BlcnRpZXMscj1uLm9vYmVEaXNwbGF5Q29uc2VudFdpdGhvdXRPbmVEcml2ZSxvPW4ub29iZURpc3BsYXlTZXJ2aWNlc0NvbnNlbnQsaT1uLm9vYmVEaXNwbGF5VW5pZmllZENvbnNlbnQsYT10LnRvdVNlcnZpY2VzQ29uc2VudFdpdGhvdXRPbmVEcml2ZSxsPXQudG91U2VydmljZXNDb25zZW50V2l0aE9uZURyaXZlLHM9dC50b3VVbmlmaWVkQ29uc2VudFdpdGhvdXRPbmVEcml2ZSxjPXQudG91VW5pZmllZENvbnNlbnRXaXRoT25lRHJpdmUsdT17Y29uc2VudExpbmtCaW5kaW5nVGFnTmFtZTpcIlwiLGNvbnNlbnRMaW5rSWQ6XCJcIixjb25zZW50TWVzc2FnZTpcIlwifSxpP3U9e2NvbnNlbnRMaW5rQmluZGluZ1RhZ05hbWU6XCJsZWFybk1vcmVMaW5rXCIsY29uc2VudExpbmtJZDpcImxlYXJuTW9yZUxpbmtJZFwiLGNvbnNlbnRNZXNzYWdlOnI/czpjfTpvJiYodT17Y29uc2VudExpbmtCaW5kaW5nVGFnTmFtZTpcInNlZUhvd0RhdGFJc01hbmFnZWRMaW5rXCIsY29uc2VudExpbmtJZDpcInNlZUhvd0RhdGFJc01hbmFnZWRMaW5rSWRcIixjb25zZW50TWVzc2FnZTpyP2E6bH0pLHUpLHA9Zi5jb25zZW50TGlua0JpbmRpbmdUYWdOYW1lLGc9Zi5jb25zZW50TGlua0lkLG09Zi5jb25zZW50TWVzc2FnZTtyZXR1cm4gbT8oMCwkZS5qc3gpKGJ3LHt0ZXh0Om0sZW1iZWRkZWRCaW5kaW5nczpSSSh7fSxwLChmdW5jdGlvbih0KXtyZXR1cm4oMCwkZS5qc3gpKHRDLHt0ZXh0OnRbMF0sb25DbGljazpmdW5jdGlvbigpe3JldHVybiBkKGUsVHQuU2VlSG93RGF0YUlzTWFuYWdlZCl9LGxpbmtJZDpnfSl9KSl9KTpudWxsfSxVST1mdW5jdGlvbihlKXt2YXIgdD1lLmFncmVlbWVudFR5cGUsbj1lLmxpbmtJZCxyPWUubGlua1RleHQsbz1lLmxpbmtVcmwsaT1lLmhvc3RpbmdWaWV3SWQsYT1lLnJlbmRlckhvc3RlZExpbmtzLGw9elMoKSxzPVR3KHQpO3JldHVybiBhPygwLCRlLmpzeCkodEMse2xpbmtJZDpuLHRleHQ6cixvbkNsaWNrOmZ1bmN0aW9uKCl7bChpLHMpfX0pOigwLCRlLmpzeCkoXCJhXCIse2lkOm4saHJlZjpvLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vcmVmZXJyZXIgbm9vcGVuZXJcIixjaGlsZHJlbjpyfSl9LEZJPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGk9SXQuZGVmYXVsdC5pbnN0YW5jZSxhPWkuaXNIb3N0ZWQsbD1pLmlzQ2hpbmFEYyxzPXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcyxjPXMucHJpdmFjeVVybCx1PXMudGVybXNPZlVzZVVybCxkPWEmJiFsLGY9KHQ9Tkksbj1mTy5pbnN0YW5jZS5vb2JlUHJvcGVydGllcy5vb2JlRGlzcGxheVVuaWZpZWRDb25zZW50LHI9dC50b3VQcml2YWN5QWdyZWVtZW50V2l0aG91dENvbnNlbnQsbz10LnRvdVByaXZhY3lBZ3JlZW1lbnRXaXRoQ29uc2VudCxuP286cikscD1vVDtyZXR1cm4oMCwkZS5qc3gpKGJ3LHt0ZXh0OmYsZW1iZWRkZWRCaW5kaW5nczp7Ym9sZFRleHQ6cCxzZXJ2aWNlc0FncmVlbWVudExpbms6ZnVuY3Rpb24odCl7cmV0dXJuKDAsJGUuanN4KShVSSx7YWdyZWVtZW50VHlwZTprdy5UZXJtc09mVXNlLGxpbmtJZDpcInNlcnZpY2VzQWdyZWVtZW50TGlua0lkXCIsbGlua1RleHQ6dFswXSxsaW5rVXJsOnUsaG9zdGluZ1ZpZXdJZDplLHJlbmRlckhvc3RlZExpbmtzOmR9KX0scHJpdmFjeVN0YXRlbWVudExpbms6ZnVuY3Rpb24odCl7cmV0dXJuKDAsJGUuanN4KShVSSx7YWdyZWVtZW50VHlwZTprdy5Qcml2YWN5LGxpbmtJZDpcInByaXZhY3lMaW5rSWRcIixsaW5rVGV4dDp0WzBdLGxpbmtVcmw6Yyxob3N0aW5nVmlld0lkOmUscmVuZGVySG9zdGVkTGlua3M6ZH0pfX19KX0sTUk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zb3VyY2VWaWV3SWQsbj0oMCxVbS5pbnN0YW5jZS51c2VDb21tb25TdHlsZXMpKCkscj1CSSh0KSxvPUZJKHQpO3JldHVybigwLCRlLmpzeHMpKFwiZGl2XCIse1wiZGF0YS10ZXN0aWRcIjpcImlubGluZUxlZ2FsTWVzc2FnaW5nXCIsY2xhc3NOYW1lOm4udG9wTWFyZ2luQWZ0ZXJTZWNvbmRhcnlDb250ZW50LGNoaWxkcmVuOltyJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpuLnRleHRDYXB0aW9uLGNoaWxkcmVuOnJ9KSwoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpuLnRleHRDYXB0aW9uLGNoaWxkcmVuOm99KV19KX07ZnVuY3Rpb24gekkoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX12YXIgSEk9ZnVuY3Rpb24oZSl7dmFyIHQ9KDAsby51c2VDb250ZXh0KShaZSkuYXV0aFN0YXRlLmZsb3dUb2tlblZhbHVlLG49KDAsby51c2VDb250ZXh0KShBTykudmlld1N0YXRlLm90aGVySWRwUmVkaXJlY3RVcmwscj1JdC5kZWZhdWx0Lmluc3RhbmNlLnJlc2V0UGFzc3dvcmRVcmwsaT1mTy5pbnN0YW5jZSxhPWkuYWxsb3dlZElkZW50aXRpZXMsbD1pLmNoYW5nZVBhc3N3b3JkVXJsLHM9aS5kb0lmRXhpc3RzLGM9aS5pc0ZpZG9TdXBwb3J0ZWRIaW50LHU9aS5mZWRRcyxkPWkuZ2N0RmVkZXJhdGlvbkZsYWdzLGY9aS5pbXByb3ZlUGhvbmVEaXNhbWJpZ3VhdGlvbixwPWkuaXNGZWRlcmF0aW9uRGlzYWJsZWQsZz1pLmlzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZCxtPWkuaXNSZW1vdGVOR0NTdXBwb3J0ZWQsaD1pLmlzT3RjTG9naW5EaXNhYmxlZCxiPWkuZ2V0Q3JlZGVudGlhbFR5cGVVcmwseT1pLnBvc3RQcm9vZlR5cGUsdj1pLnNob3dTaWdudXAsdz1pLnNpZ251cFVybCxTPWkuc2lnbnVwVXJsUG9zdFBhcmFtcyxQPWkudXNlUmVzZXRQYXNzd29yZFVybEZvclBhc3N3b3JkUmVxdWlyZWRFcnJvcix4PWkudXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbCxPPURpKGMseCksXz1XVCgpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvLGk9KG89cmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG8oaSl7dmFyIGMseCxDLGssQSxUO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIHg9aS52YWx1ZSxDPWkuZXJyb3JIYW5kbGVyLGs9U3RyaW5nKHgpLG8ubmV4dD00LE54KHthbGxvd2VkSWRlbnRpdGllczphLGNvdW50cnk6XCJcIixmZWRRczp1LGZsb3dUb2tlbjp0LGdjdEZlZGVyYXRpb25GbGFnczpkfHwwLGdldENyZWRlbnRpYWxUeXBlVXJsOmIsaXNFeHRlcm5hbEZlZGVyYXRpb25EaXNhbGxvd2VkOmcsaXNGZWRlcmF0aW9uRGlzYWJsZWQ6cCxpc0ZpZG9TdXBwb3J0ZWQ6Tyxpc1JlbW90ZU5HQ1N1cHBvcnRlZDptLG90Y2xvZ2luZGlzYWxsb3dlZDpoLG90aGVySWRwUmVkaXJlY3RVcmw6bix1bnNhZmVVc2VybmFtZTprfSx7Y2hhbmdlUGFzc3dvcmRVcmw6bCxkb0lmRXhpc3RzOnMsaW1wcm92ZVBob25lRGlzYW1iaWd1YXRpb246Zixwb3N0UHJvb2ZUeXBlOnkscmVzZXRQYXNzd29yZFVybDpyLHNob3dTaWdudXA6dixzaWdudXBVcmw6dyxzaWdudXBVcmxQb3N0UGFyYW1zOlMsdXNlUmVzZXRQYXNzd29yZFVybEZvclBhc3N3b3JkUmVxdWlyZWRFcnJvcjpQfSk7Y2FzZSA0OkE9by5zZW50LFQ9ZnVuY3Rpb24oKXt2YXIgdD1BLmVycm9yP2UoayxBLmVycm9yKTpcIlwiO0ModCl9LF8oVHQuVXNlcm5hbWUsQSxueChrKSwobnVsbD09PShjPUEuc2hhcmVkRGF0YSl8fHZvaWQgMD09PWM/dm9pZCAwOmMuZGlzcGxheU5hbWUpfHxrLFQpO2Nhc2UgNzpjYXNlXCJlbmRcIjpyZXR1cm4gby5zdG9wKCl9fSksbyl9KSksZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXt2YXIgaT1vLmFwcGx5KGUsdCk7ZnVuY3Rpb24gYShlKXt6SShpLG4scixhLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXt6SShpLG4scixhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX0pO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSxWST1mdW5jdGlvbihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybigwLCRlLmpzeCkodEMse3RleHQ6clswXSxvbkNsaWNrOnQsbGlua0lkOmUsYXJpYUxhYmVsOm59KX19LFdJPWZ1bmN0aW9uKCl7dmFyIGU9cF8oKSx0PWZ1bmN0aW9uKCl7dmFyIGU9Zk8uaW5zdGFuY2UuZm9yZ290VXNlcm5hbWVVcmwsdD0kUygpO3JldHVybiBmdW5jdGlvbihuKXt2YXIgcj0oMCxzdC5OaSkoZSx7bW46ZW5jb2RlVVJJQ29tcG9uZW50KG4pfSk7dChyKX19KCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybntzaWdudXBMaW5rOlZJKFwiaWRBX1BXRF9TaWduVXBcIiwoZnVuY3Rpb24oKXtyZXR1cm4gZShuKX0pKSxyZWNvdmVyVXNlcm5hbWU6VkkoXCJyZWNvdmVyVXNlcm5hbWVcIiwoZnVuY3Rpb24oKXtyZXR1cm4gdChuKX0pKX19fTtmdW5jdGlvbiBHSShlLHQsbixyLG8saSxhKXt0cnl7dmFyIGw9ZVtpXShhKSxzPWwudmFsdWV9Y2F0Y2goYyl7cmV0dXJuIHZvaWQgbihjKX1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfWZ1bmN0aW9uICRJKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe0dJKGkscixvLGEsbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe0dJKGkscixvLGEsbCxcInRocm93XCIsZSl9YSh2b2lkIDApfSkpfX12YXIgS0k9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvPShlPWZPLmluc3RhbmNlLHQ9ZS5pc1Njb29iZSxuPWUuaXNUb2tlbkJyb2tlcixyPWUucHJlZmVyQXNzb2NpYXRlLCRJKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyTyh0LG4scik7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpO1RTKChmdW5jdGlvbigpe3ZhciBlPUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLHQ9Zk8uaW5zdGFuY2Usbj10LmlzT29iZSxyPXQucG9zdGVkRm9yY2VTaWduSW4saT10LmxvY2tVc2VybmFtZSxhPXQuaXNPdmVyVGhlU2hvdWxkZXI7ZT09PWN0Lm9GLldpbjExT29iZUZhYnJpYyYmS3gobixyLGksYSwoZnVuY3Rpb24oZSl7ZT9xeChvKTpxeCgpfSkpfSkpfSxxST1mdW5jdGlvbihlKXt2YXIgdD1mTy5pbnN0YW5jZTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbGxvd1NreXBlLG49ZS5hbGxvd1Bob25lLHI9ZS5lcnJvclN0cmluZ0ludmFsaWRNZW1iZXJOYW1lLGk9ZS5lcnJvclN0cmluZ0ludmFsaWRQaG9uZU51bWJlcjtyZXR1cm4oMCxvLnVzZUNhbGxiYWNrKSgoZnVuY3Rpb24oZSl7dmFyIG89U3RyaW5nKGUpO2lmKCFvfHxcIlwiPT09by50cmltKCkpcmV0dXJuIHI7dmFyIGE9ISFvLm1hdGNoKFwiXlthLXpBLVpdW2EtekEtWjAtOS4sXFxcXC1fOiddezAsMTI4fSRcIiksbD0hIW8ubWF0Y2goXCJeW2EtekEtWjAtOSEjJCVcXFxceDI2JyorLz0/Xl9ge3x9fi1dKyg/OlxcXFwuW2EtekEtWjAtOSEjJCVcXFxceDI2JyorLz0/Xl9ge3x9fi1dKykqQCg/OlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dKlthLXpBLVowLTldKT9cXFxcLikrW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV0qW2EtekEtWjAtOV0pPyRcIikscz0hIW8ubWF0Y2goT2opLGM9R1Aobyk7cmV0dXJuIGx8fHQmJmF8fG4mJmMmJnM/XCJcIjpsfHx0JiZhfHwhbnx8IWN8fHM/cjppfSksW3QsbixpLHJdKX0oe2FsbG93U2t5cGU6dC5hbGxvd1NreXBlLGFsbG93UGhvbmU6dC5hbGxvd1Bob25lLGVycm9yU3RyaW5nSW52YWxpZE1lbWJlck5hbWU6ZS5lcnJvckludmFsaWRNZW1iZXJOYW1lRW1haWxQaG9uZVNreXBlLGVycm9yU3RyaW5nSW52YWxpZFBob25lTnVtYmVyOmUuYmFkUGhvbmVOdW1iZXJFcnJvck1lc3NhZ2V9KX07ZnVuY3Rpb24gUUkoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIFhJKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIFhJKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBYSShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIFlJKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBaSShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBaSShlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gWkkoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBKSShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gZUwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gZUwoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIGVMKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdEwoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIG5MKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3RMKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ckwoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnRMKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHJMKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiBvTCgpe3JldHVybiBvTD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxvTC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGlMPWZ1bmN0aW9uKCl7dmFyIGU9VW0uaW5zdGFuY2UsdD1lLnVzZUNvbW1vblN0eWxlcyxuPWUudXNlSGVscEJ1dHRvblN0eWxlcyxyPWUudXNlU3RhdGljQ29tbW9uU3R5bGVzLGk9Zk8uaW5zdGFuY2UsYT1pLnNob3dMZWdhbE1lc3NhZ2luZ0lubGluZSxsPWkudXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbCxzPWkuZW5hYmxlQXJpYUxpdmVVcGRhdGVzLGM9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnVzZXJuYW1lVmlld1N0cmluZ3Mscj1lLmNvbW1vbkxvZ2luU3RyaW5ncyxpPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLGE9aS51c2VyLGw9aS51c2VyRmxvd1R5cGUscz1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuZnJpZW5kbHlBcHBOYW1lLGM9bi5sb2dpbkhlbHBGaWRvQXJpYUxhYmVsLHU9bi5sb2dpbkhlbHBIZWxsb09yRmlkb0FyaWFMYWJlbCxkPW4ubG9naW5TaWdudXBMaW5rLGY9bi5wbGFjZWhvbGRlcixwPW4uc2lnbnVwTGlua0FyaWFMYWJlbCxnPUl0LmRlZmF1bHQuaW5zdGFuY2UuY2hlY2tQcm9vZkZvckFsaWFzZXMsbT1mTy5pbnN0YW5jZSxoPW0uYXBwQnJhbmRlZFNpZ25JbkhlYWRlcixiPW0uZGVmYXVsdFNpZ25JbkhlYWRlcix5PW0uZG9JZkV4aXN0cyx2PW0uaGlkZUxvZ2luRGVzY3JpcHRpb24sdz1tLmxvZ2luTW9kZSxTPW0ubG9naW5TdHJpbmdzVmFyaWFudCxQPW0uc2hvd1JlbW90ZUNvbm5lY3RMb2NhdGlvblBhZ2UseD1tLnNob3dTaWdudXAsTz1tLmlzUGFzc2tleVN1cHBvcnRlZCxfPUd3Lmluc3RhbmNlLmlzU2ltcGxpZmllZENoaWxkQWNjb3VudENyZWF0aW9uLEM9V08odyxzLHIpLGs9XCJ1c2VybmFtZVRpdGxlXCIsQT1HTyhTLGIsaCksVD12XyhyKSxFPVQuYnJhbmRpbmdEZXNjcmlwdGlvbklkLGo9VC5icmFuZGluZ0Rlc2NyaXB0aW9uLEk9KDAsc3QuVWMpKGopLEw9ISFJJiYhUCYmIXYsRD1cIlwiLmNvbmNhdChrKS5jb25jYXQoTD9cIiBcIi5jb25jYXQoRSk6XCJcIiksTj1nXyhyKSxSPU4uZmlkb0xpbmtUZXh0LEI9Ti5maWRvRGlhbG9nSGVhZGVyLFU9Ti5maWRvRGlhbG9nRGVzY3JpcHRpb24sRj0heHx8eXx8Zz9cIlwiOmQsTT1yLnBhcmVudFNpZ25JblBhZ2VUaXRsZSx6PXIucGFyZW50U2lnbkluUGFnZURlc2NyaXB0aW9uLEg9ci5wYXJlbnRTaWduSW5QYWdlUGxhY2Vob2xkZXIsVj1fJiZsPT09Y3QuWTYuUGFyZW50LFc9TSxHPSEhRiYmXyYmbD09PWN0Llk2LlVua25vd247cmV0dXJue3RpdGxlOkMsaGVhZGVyOlY/VzpBLGhlYWRlcklkOlY/XCJ1c2VybmFtZVBhcmVudFNpZ25JblRpdGxlXCI6ayxkZXNjcmlwdGlvblByb3BlcnRpZXM6Vj97cmVuZGVyRGVzY3JpcHRpb246VixkZXNjcmlwdGlvbklkOlwicGFyZW50U2lnbkluUGFnZURlc2NyaXB0aW9uXCIsZGVzY3JpcHRpb246en06e3JlbmRlckRlc2NyaXB0aW9uOkwsZGVzY3JpcHRpb25JZDpFLGRlc2NyaXB0aW9uOkl9LGFyaWFEZXNjcmliZWRCeTpELGZpZG9EaWFsb2dEZXNjcmlwdGlvbjpVLGZpZG9EaWFsb2dIZWFkZXI6QixmaWRvTGlua1RleHQ6UixwbGFjZWhvbGRlcjpWP0g6ZixzaWdudXBMaW5rQXJpYUxhYmVsOnAsc2lnbnVwTGlua1RleHQ6Rix1c2VybmFtZTpudWxsPT1hfHxudWxsPT09KHQ9YS51c2VybmFtZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuc2FmZUh0bWxFc2NhcGVkU3RyaW5nLGxvZ2luSGVscEZpZG9BcmlhTGFiZWw6Yyxsb2dpbkhlbHBIZWxsb09yRmlkb0FyaWFMYWJlbDp1LGlzUGFzc2tleVN1cHBvcnRlZDpPLHNob3dDcmVhdGVBY2NvdW50RHJvcGRvd246Ryxpc1BhcmVudFNpZ25JbjpWfX0oe3VzZXJuYW1lVmlld1N0cmluZ3M6QUksY29tbW9uTG9naW5TdHJpbmdzOnBDfSksdT1jLmZpZG9EaWFsb2dEZXNjcmlwdGlvbixkPWMuZmlkb0RpYWxvZ0hlYWRlcixmPWMuZmlkb0xpbmtUZXh0LHA9Yy5oZWFkZXIsZz1jLmhlYWRlcklkLG09Yy5kZXNjcmlwdGlvblByb3BlcnRpZXMsaD1tLnJlbmRlckRlc2NyaXB0aW9uLGI9bS5kZXNjcmlwdGlvbklkLHk9bS5kZXNjcmlwdGlvbix2PWMuYXJpYURlc2NyaWJlZEJ5LHc9Yy5sb2dpbkhlbHBGaWRvQXJpYUxhYmVsLFM9Yy5sb2dpbkhlbHBIZWxsb09yRmlkb0FyaWFMYWJlbCxQPWMucGxhY2Vob2xkZXIseD1jLnNpZ251cExpbmtBcmlhTGFiZWwsTz1jLnNpZ251cExpbmtUZXh0LF89Yy50aXRsZSxDPWMudXNlcm5hbWUsaz1jLmlzUGFzc2tleVN1cHBvcnRlZCxBPWMuc2hvd0NyZWF0ZUFjY291bnREcm9wZG93bixUPWMuaXNQYXJlbnRTaWduSW4sRT1mdW5jdGlvbihlKXt2YXIgdD1JdC5kZWZhdWx0Lmluc3RhbmNlLG49dC5hY3RpdmVGbGF2b3Iscj10LmFsbG93Q2FuY2VsLGk9dC5zaG93QnV0dG9ucyxhPWZPLmluc3RhbmNlLnNob3dPZmZsaW5lQWNjb3VudExlYXJuTW9yZSxsPWUuYmFja0J1dHRvbkxhYmVsLHM9ZS5jYW5jZWxCdXR0b25MYWJlbCxjPWUubGVhcm5Nb3JlQnV0dG9uTGFiZWwsdT0hSFMoKSxkPXpTKCksZj1PXygpLHA9UUkoKDAsby51c2VTdGF0ZSkoe3JlbmRlclNlY29uZGFyeUJ1dHRvbjohMSxzZWNvbmRhcnlCdXR0b25DbGlja0hhbmRsZXI6dm9pZCAwLHNlY29uZGFyeUJ1dHRvbklkOlwiXCIsc2Vjb25kYXJ5QnV0dG9uTGFiZWw6XCJcIn0pLDIpLGc9cFswXSxtPXBbMV0saD1DVCgpLGI9a1QoKTtyZXR1cm4gVFMoKGZ1bmN0aW9uKCl7aSYmKHU/bj09PWN0Lm9GLldpbjExT29iZUZhYnJpYz9iKChmdW5jdGlvbihlLHQpe2goZSksdD9tKHtyZW5kZXJTZWNvbmRhcnlCdXR0b246ITAsc2Vjb25kYXJ5QnV0dG9uTGFiZWw6cyxzZWNvbmRhcnlCdXR0b25DbGlja0hhbmRsZXI6ZixzZWNvbmRhcnlCdXR0b25JZDpcImNhbmNlbEJ1dHRvbklkXCJ9KTphJiYodE8oXCJJZGVudGl0eS5PT0JFLkxvZ2luLkxlYXJuTW9yZU9mZmxpbmVBY2NvdW50LlZpc2libGVcIiksbSh7cmVuZGVyU2Vjb25kYXJ5QnV0dG9uOiEwLHNlY29uZGFyeUJ1dHRvbkxhYmVsOmMsc2Vjb25kYXJ5QnV0dG9uQ2xpY2tIYW5kbGVyOmZ1bmN0aW9uKCl7dE8oXCJJZGVudGl0eS5PT0JFLkxvZ2luLkxlYXJuTW9yZU9mZmxpbmVBY2NvdW50LkNsaWNrZWRcIiksZChUdC5Vc2VybmFtZSxUdC5MZWFybk1vcmVPZmZsaW5lQWNjb3VudCl9LHNlY29uZGFyeUJ1dHRvbklkOlwibGVhcm5Nb3JlQnV0dG9uSWRcIn0pKX0pKTpyJiYoaCghMCksbSh7cmVuZGVyU2Vjb25kYXJ5QnV0dG9uOiEwLHNlY29uZGFyeUJ1dHRvbkxhYmVsOmwsc2Vjb25kYXJ5QnV0dG9uQ2xpY2tIYW5kbGVyOmYsc2Vjb25kYXJ5QnV0dG9uSWQ6XCJiYWNrQnV0dG9uSWRcIn0pKTooaCghMCksbSh7cmVuZGVyU2Vjb25kYXJ5QnV0dG9uOiEwLHNlY29uZGFyeUJ1dHRvbkxhYmVsOmwsc2Vjb25kYXJ5QnV0dG9uQ2xpY2tIYW5kbGVyOmYsc2Vjb25kYXJ5QnV0dG9uSWQ6XCJiYWNrQnV0dG9uSWRcIn0pKSl9KSksZ30oQUkpLGo9RS5yZW5kZXJTZWNvbmRhcnlCdXR0b24sST1FLnNlY29uZGFyeUJ1dHRvbkNsaWNrSGFuZGxlcixMPUUuc2Vjb25kYXJ5QnV0dG9uSWQsRD1FLnNlY29uZGFyeUJ1dHRvbkxhYmVsLE49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zaWduSW5PcHRpb25zVGV4dCxuPUl0LmRlZmF1bHQuaW5zdGFuY2Uscj1uLnNob3dTaWduSW5PcHRpb25zQXNCdXR0b24saT1uLmFjdGl2ZUZsYXZvcixhPW4udGVsZW1ldHJ5LGw9Zk8uaW5zdGFuY2Uscz1sLmlzRmlkb1N1cHBvcnRlZEhpbnQsYz1sLnNob3dGb3Jnb3RVc2VybmFtZUxpbmssdT1sLnNob3dPZmZsaW5lQWNjb3VudCxkPWwudXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbCxmPSgwLG8udXNlQ29udGV4dCkoWnQpLmdsb2JhbFN0YXRlLHA9Zi5hY3RpdmVWaWV3LGc9Zi5hY3RpdmVGbG93LG09UnQoYSx7YWN0aXZlVmlldzpwLGFjdGl2ZUZsb3c6ZyxhY3RpdmVGbGF2b3I6aX0pLmxvZ1VzZXJBY3Rpb24saD16UygpLGI9RGkocyxkKSx5PUtPKGIpLHY9eS5sZW5ndGg+MHx8Y3x8dSx3PTE9PT15Lmxlbmd0aCYmISF5WzBdLnNob3duT25seU9uUGlja2VyLFM9dnx8dyxQPVlJKCgwLG8udXNlU3RhdGUpKCExKSwyKVsxXTtyZXR1cm57c2hvd1NpZ25Jbk9wdGlvbnM6UyxzaWduSW5PcHRpb25zTGlua1Byb3BlcnRpZXM6cj92b2lkIDA6e3NvdXJjZVZpZXdJZDpUdC5Vc2VybmFtZSxhdmFpbGFibGVDcmVkZW50aWFsczp5LGN1cnJlbnRDcmVkZW50aWFsOnt9LHNldFJlcXVlc3RQZW5kaW5nRmxhZzpQLHNob3dGb3Jnb3RVc2VybmFtZTpjfSxzaWduSW5PcHRpb25zQnV0dG9uUHJvcGVydGllczpyP3tpbWFnZTp7dXJsczptYn0sdGV4dDp0LG9uQ2xpY2s6ZnVuY3Rpb24oKXttKHthY3Rpb25OYW1lOk1TLlNpZ25pbk9wdGlvbnNDbGlja2VkfSksaChUdC5Vc2VybmFtZSxUdC5TaWduSW5PcHRpb25zKX19OnZvaWQgMH19KEFJKSxSPU4uc2hvd1NpZ25Jbk9wdGlvbnMsQj1OLnNpZ25Jbk9wdGlvbnNMaW5rUHJvcGVydGllcyxVPU4uc2lnbkluT3B0aW9uc0J1dHRvblByb3BlcnRpZXM7S0koKSxmayhUdC5Vc2VybmFtZSxFdC5Mb2dpbix7c2hvd0lkZW50aXR5QmFubmVyOiExLHNob3dNb3JlT3B0aW9uczpSP1U6dm9pZCAwfSksYWsoXykscigpO3ZhciBGPXQoKSxNPW4oKSx6PVdJKCksSD1KSSgoMCxvLnVzZVN0YXRlKShcIlwiKSwyKSxWPUhbMF0sVz1IWzFdOygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtOaShsKS50aGVuKChmdW5jdGlvbihlKXtXKGU/dzpTKX0pKX0pKSxmdW5jdGlvbigpe3ZhciBlPUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLHQ9Zk8uaW5zdGFuY2Uub29iZVByb3BlcnRpZXMsbj0hSFMoKSYmZT09PWN0Lm9GLldpbjExT29iZUZhYnJpYyYmKHQub29iZURpc3BsYXlTZXJ2aWNlc0NvbnNlbnR8fHQub29iZURpc3BsYXlVbmlmaWVkQ29uc2VudCk7VFMoKGZ1bmN0aW9uKCl7biYmWXgoKX0pKX0oKSxmdW5jdGlvbigpe3ZhciBlPUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLHQ9Zk8uaW5zdGFuY2UubXNhU2VydmVyTG90dGllSWQ7VFMoKGZ1bmN0aW9uKCl7ZT09PWN0Lm9GLldpbjExT29iZUZhYnJpYyYmYV8ocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixQXyh0KTtjYXNlIDI6aWYoIShuPWUuc2VudCkpe2UubmV4dD02O2JyZWFrfXJldHVybiBlLm5leHQ9NixYeChuKTtjYXNlIDY6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSgpfSkpfSgpLGZ1bmN0aW9uKCl7dmFyIGU9SXQuZGVmYXVsdC5pbnN0YW5jZS5hY3RpdmVGbGF2b3IsdD1mTy5pbnN0YW5jZSxuPXQuaGlkZU9mZmxpbmVBY2NvdW50TmV3VGl0bGVTdHJpbmcscj10LmlzVG9rZW5Ccm9rZXIsbz10LnByZWZlckFzc29jaWF0ZSxpPXQub2ZmbGluZUFjY291bnRWaXNpYmxlO1RTKChmdW5jdGlvbigpe2U9PT1jdC5vRi5XaW4xMU9vYmVGYWJyaWMmJih0TyhcIklkZW50aXR5LkZsaWdodC5Jc0VuYWJsZWRIaWRlT2ZmbGluZUFjY291bnROZXdUaXRsZVN0cmluZ1wiLG4pLHImJnRPKG8/XCJNU0EuQXNzb2NpYXRlVXBzZWxsLlVzZXJuYW1lUGFnZUxvYWRcIjpcIk1TQS5Db25uZWN0VXBzZWxsLlVzZXJuYW1lUGFnZUxvYWRcIiksaXx8dE8oXCJJZGVudGl0eS5PT0JFLkxvZ2luLk9mZmxpbmVBY2NvdW50TGluay5IaWRkZW5cIikpfSkpfSgpO3ZhciBHPXFJKEFJKSwkPXBqKHtpbml0aWFsVmFsdWU6QyxoYXNJbml0aWFsRm9jdXM6ITAsdmFsaWRhdGlvbk1ldGhvZDpHLGNvbW1vbkxvZ2luU3RyaW5nczpwQ30pLEs9JC5oYXNGb2N1cyxxPSQub25Gb2N1cyxRPSQub25CbHVyLFg9JC52YWx1ZSxZPSQub25DaGFuZ2UsWj0kLmVycm9yLEo9Wi5zaG93RXJyb3JNZXNzYWdlLGVlPVouZXJyb3JNZXNzYWdlLHRlPURqKHtpbnB1dFN0YXRlOiQsdmlld0lkOlR0LlVzZXJuYW1lLHN1Ym1pdFRhc2s6SEkoKGZ1bmN0aW9uKGUsdCl7dmFyIG49b0woe30seihlKSk7cmV0dXJuKDAsJGUuanN4KShidyx7dGV4dDp0LGVtYmVkZGVkQmluZGluZ3M6bkwoe30sbil9KX0pKX0pLG5lPVN0cmluZyhYKSxyZT1tXygpO3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46KDAsJGUuanN4cykoXCJmb3JtXCIse25hbWU6XCJmMVwiLGlkOlwiaTAyODFcIixcImRhdGEtdGVzdGlkXCI6XCJ1c2VybmFtZUZvcm1cIixub1ZhbGlkYXRlOiEwLHNwZWxsQ2hlY2s6XCJmYWxzZVwiLG1ldGhvZDpcInBvc3RcIixhdXRvQ29tcGxldGU6XCJmYWxzZVwiLG9uU3VibWl0OnRlLGNoaWxkcmVuOlsoMCwkZS5qc3gpKHdULHt0aXRsZUlkOmcsdGl0bGU6cH0pLGgmJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKEYucm93LEYudGV4dEJvZHksRi5ub01hcmdpblRvcCksY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtpZDpiLGNoaWxkcmVuOnl9KX0pLCgwLCRlLmpzeCkoaWose2lkOlwiaTAxMTZcIixuYW1lOlwibG9naW5mbXRcIixwbGFjZWhvbGRlcjpQLHR5cGU6XCJlbWFpbFwiLHNob3dFcnJvck1lc3NhZ2U6SixlbmFibGVBcmlhTGl2ZVVwZGF0ZXM6cyxlcnJvck1lc3NhZ2U6ZWUsdmFsdWU6WCxvbkNoYW5nZTpZLFwiYXJpYS1kZXNjcmliZWRieVwiOnYsXCJhcmlhLWxhYmVsXCI6QUkudXNlcm5hbWVBcmlhTGFiZWwsaGFzRm9jdXM6SyxoYXNJbml0aWFsRm9jdXM6ITAsb25Gb2N1czpxLG9uQmx1cjpRLGF1dG9Db21wbGV0ZTpcInVzZXJuYW1lXCIsbWF4TGVuZ3RoOjExM30pLCgwLCRlLmpzeHMpKF9rLHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Ri5yb3csY2hpbGRyZW46KDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOkYuZm9ybUdyb3VwLGNoaWxkcmVuOltBJiYoMCwkZS5qc3gpKElJLHt1c2VybmFtZTpuZX0pLCFBJiZPJiYoVD8oMCwkZS5qc3gpKERJLHtpZDpcInNpZ251cE9uUGFyZW50U2lnbmluXCIsdXNlcm5hbWU6bmUsYXJpYWxMYWJlbDp4LHRleHQ6T30pOigwLCRlLmpzeCkoTEkse2lkOlwic2lnbnVwXCIsdXNlcm5hbWU6bmUsYXJpYWxMYWJlbDp4LHRleHQ6T30pKV19KX0pLGYmJiFrJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpGLnJvdyxjaGlsZHJlbjooMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpGLmZvcm1Hcm91cCxjaGlsZHJlbjooMCwkZS5qc3hzKShcImRpdlwiLHtjaGlsZHJlbjpbKDAsJGUuanN4KSh0Qyx7dGV4dDpmLGxpbmtJZDpcImZpZG9VcmxcIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmUoe3VzZXJuYW1lOm5lfSl9fSksKDAsJGUuanN4KShKXyx7aGVscERpYWxvZ0ljb246e3VybHM6cWgsZGF0YVRlc3RJZDpcImhlbHAtYnV0dG9uXCJ9LGhlbHBEaWFsb2dIZWFkZXI6ZCxoZWxwRGlhbG9nRGVzY3JpcHRpb246dSxoZWxwRGlhbG9nSWNvbkNsYXNzTmFtZTpNLmhlbHBCdXR0b24saGVscERpYWxvZ0FyaWFMYWJlbDpWfSldfSl9KX0pLFImJkImJigwLCRlLmpzeCkoUEEse2NyZWRlbnRpYWxTd2l0Y2hQcm9wczpCLHNob3dTd2l0Y2hUb0V2aWN0ZWRDcmVkUGlja2VyOiExfSldfSksYSYmKDAsJGUuanN4KShNSSx7c291cmNlVmlld0lkOlR0LlVzZXJuYW1lfSksKDAsJGUuanN4KShmVCx7Y2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Ri53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Ri5yb3csY2hpbGRyZW46KDAsJGUuanN4cykoRl8se2NoaWxkcmVuOltqJiYoMCwkZS5qc3gpKFVfLHtidXR0b25JZDpMLGxhYmVsOkQsaXNQcmltYXJ5OiExLHR5cGU6XCJidXR0b25cIixvbkNsaWNrOkl9KSwoMCwkZS5qc3gpKFVfLHtidXR0b25JZDpcImlkU0lCdXR0b245XCIsbGFiZWw6XCJOZXh0XCIsaXNQcmltYXJ5OiEwLHR5cGU6XCJzdWJtaXRcIn0pXX0pfSl9KX0pXX0pfSl9O2Z1bmN0aW9uIGFMKGUsdCxuLHIsbyxpLGEpe3RyeXt2YXIgbD1lW2ldKGEpLHM9bC52YWx1ZX1jYXRjaChjKXtyZXR1cm4gdm9pZCBuKGMpfWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gbEwoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHIsbyl7dmFyIGk9ZS5hcHBseSh0LG4pO2Z1bmN0aW9uIGEoZSl7YUwoaSxyLG8sYSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7YUwoaSxyLG8sYSxsLFwidGhyb3dcIixlKX1hKHZvaWQgMCl9KSl9fXZhciBzTDtmdW5jdGlvbiBjTChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdUwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdUwoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHVMKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gZEwoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBmTD0hMSxwTD1mdW5jdGlvbigpe3ZhciBlLHQsbj1mTy5pbnN0YW5jZSxyPW4uZmVkU3RhdGUsbz1uLmZlZFVybCxpPW4ubm9Db29raWVzVXJsO3dpbmRvdy50b3AhPT13aW5kb3cuc2VsZiYmKG51bGw9PT0oZT13aW5kb3cpfHx2b2lkIDA9PT1lfHxudWxsPT09KHQ9ZS50b3ApfHx2b2lkIDA9PT10fHx0LmxvY2F0aW9uLnJlcGxhY2Uod2luZG93LnNlbGYubG9jYXRpb24uaHJlZikpO2lmKDI9PT1yJiZvKXt2YXIgYT1mdW5jdGlvbihlKXt2YXIgdD1mTy5pbnN0YW5jZSxuPXQuZmVkUXMscj10LmZlZFVybCxvPXQuZGVmYXVsdExvZ2luT3B0aW9ucyxpPW5ldyBVUkxTZWFyY2hQYXJhbXMobiksYT1uZXcgVVJMKHIpLnNlYXJjaFBhcmFtcztvPT09Y3QucHQubm90aGluZ0NoZWNrZWQmJmkuc2V0KFlTLFwiTG9naW5PcHRpb25zPTMmXCIuY29uY2F0KGkuZ2V0KFlTKSkpLGEuc2V0KFpTLGEuZ2V0KFpTKXx8XCJcIiksYS5zZXQoWFMsZSksYS5zZXQocVMsYS5nZXQocVMpfHxcIlwiKSxhLnNldChRUyxhLmdldChRUyl8fFwiXCIpLGkuZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXthLnNldCh0LGUpfSkpO3ZhciBsPW5ldyBVUkwocik7cmV0dXJuIGwuc2VhcmNoPWEudG9TdHJpbmcoKSxsLmhyZWZ9KG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoWFMpfHxcIlwiKTt3aW5kb3cubG9jYXRpb24ucmVwbGFjZShhKX1uYXZpZ2F0b3IuY29va2llRW5hYmxlZHx8d2luZG93LmxvY2F0aW9uLnJlcGxhY2UoaSl9LGdMPShkTChzTD17fSxUdC5Vc2VybmFtZSwoMCwkZS5qc3gpKGlMLHt9KSksZEwoc0wsVHQuUGFzc3dvcmQsKDAsJGUuanN4KShJaix7fSkpLGRMKHNMLFR0Lk9uZVRpbWVDb2RlLCgwLCRlLmpzeCkoUGose30pKSxkTChzTCxUdC5QdXNoTm90aWZpY2F0aW9ucywoMCwkZS5qc3gpKHVULHt9KSksZEwoc0wsVHQuUGhvbmVEaXNhbWJpZ3VhdGlvbiwoMCwkZS5qc3gpKG5JLHt9KSksZEwoc0wsVHQuSWRwRGlzYW1iaWd1YXRpb24sKDAsJGUuanN4KShMayx7fSkpLGRMKHNMLFR0LklkcFJlZGlyZWN0LCgwLCRlLmpzeCkoRmsse30pKSxkTChzTCxUdC5WaWV3QWdyZWVtZW50LCgwLCRlLmpzeCkoUGsse2hvc3RpbmdGbG93OkV0LkxvZ2lufSkpLGRMKHNMLFR0LkFjY291bnRQaWNrZXIsKDAsJGUuanN4KShKVCx7fSkpLGRMKHNMLFR0LkNvbmZpcm1TZW5kLCgwLCRlLmpzeCkoREUse30pKSxkTChzTCxUdC5DcmVkZW50aWFsUGlja2VyLCgwLCRlLmpzeCkoekUse30pKSxkTChzTCxUdC5FcnJvciwoMCwkZS5qc3gpKHFFLHt9KSksZEwoc0wsVHQuSWRwUmVkaXJlY3RTcGVlZGJ1bXAsKDAsJGUuanN4KShDQSx7fSkpLGRMKHNMLFR0LlByb29mQ29uZmlybWF0aW9uLCgwLCRlLmpzeCkoeEkse30pKSxkTChzTCxUdC5GZXRjaFNlc3Npb25zUHJvZ3Jlc3MsKDAsJGUuanN4KSh4ayx7fSkpLGRMKHNMLFR0LkJlbmVmaXRzLCgwLCRlLmpzeCkoaEUse30pKSxzTCksbUw9ZnVuY3Rpb24oKXt2YXIgZT1UTygpLHQ9ZS52aWV3U3RhdGUuY3JlZGVudGlhbHMsbj1lLmRpc3BhdGNoU3RhdGVDaGFuZ2Uscj1FaCgpLmRpc3BhdGNoU3RhdGVDaGFuZ2UsaT1mTy5pbnN0YW5jZSxhPWkubG9naW5Nb2RlLGw9aS5leHRlcm5hbENhbmFyeSxzPWkuc2lnbnVwVXJsLGM9aS5zaWdudXBVcmxQb3N0UGFyYW1zLHU9bV8oKSxkPWZfKCksZj1jTCgoMCxvLnVzZVN0YXRlKShUdC5Ob25lKSwyKSxwPWZbMF0sZz1mWzFdLG09Y0woKDAsby51c2VTdGF0ZSkoe2luaXRpYWxWaWV3SWQ6VHQuTm9uZSxkb0xvZ2luRmxvd1JlZGlyZWN0OiExLGxvZ2luRmxvd1JlZGlyZWN0UGFyYW1zOnt9fSksMiksaD1tWzBdLGI9bVsxXSx5PWNMKCgwLG8udXNlU3RhdGUpKGVQKSwyKSx2PXlbMF0sdz15WzFdLFM9ZnVuY3Rpb24oKXt2YXIgZT0oMCxvLnVzZUNvbnRleHQpKFp0KS5kaXNwYXRjaFN0YXRlQ2hhbmdlLHQ9Zk8uaW5zdGFuY2Usbj10LmV4dGVybmFsQ2FuYXJ5LHI9dC5jYW5hcnlWYWxpZGF0aW9uVXJsLGk9dC5pc1JlbW90ZUNvbm5lY3RTaWdudXAsYT17UGFnZUlkOlwiQ29udmVyZ2VkUmVtb3RlQ29ubmVjdFwiLEFjdGlvbklkOlwiT0F1dGgyRGV2aWNlQXV0aFwiLENvbmZpcm1hdGlvblZpZXdJZDptUCxDYW5hcnk6bn07cmV0dXJuIGxMKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5wcmV2PTAsZSh7dHlwZTpMdC5CZWdpbk5hdmlnYXRlLHNvdXJjZTpUdC5Ob25lfSksdC5uZXh0PTQsbj1yLGw9dm9pZCAwLGw9e1BhZ2VJZDoobz1hKS5QYWdlSWQsQWN0aW9uSWQ6by5BY3Rpb25JZCxDb25maXJtYXRpb25WaWV3SWQ6by5Db25maXJtYXRpb25WaWV3SWQsQ2FuYXJ5Om8uQ2FuYXJ5fSwoMCxiUy5NVykobix7Ym9keTpKU09OLnN0cmluZ2lmeShsKX0pO2Nhc2UgNDppZighaSl7dC5uZXh0PTY7YnJlYWt9cmV0dXJuIHQuYWJydXB0KFwicmV0dXJuXCIseVApO2Nhc2UgNjpyZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIixlUCk7Y2FzZSA5OnJldHVybiB0LnByZXY9OSx0LnQwPXQuY2F0Y2goMCksdC5hYnJ1cHQoXCJyZXR1cm5cIixtUCk7Y2FzZSAxMjpyZXR1cm4gdC5wcmV2PTEyLGUoe3R5cGU6THQuRGF0YUxvYWRlZCx2aWV3OlR0Lk5vbmV9KSx0LmZpbmlzaCgxMik7Y2FzZSAxNTpjYXNlXCJlbmRcIjpyZXR1cm4gdC5zdG9wKCl9dmFyIG4sbyxsfSksdCxudWxsLFtbMCw5LDEyLDE1XV0pfSkpKX0oKSxQPSEhbCx4PWNMKCgwLG8udXNlU3RhdGUpKCExKSwyKSxPPXhbMF0sXz14WzFdLEM9SnQoKS5nbG9iYWxTdGF0ZTtpZihUUygoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPVZPKCksYT1Hdy5pbnN0YW5jZS5pc1NpbXBsaWZpZWRDaGlsZEFjY291bnRDcmVhdGlvbixsPW8udXNlckZsb3dUeXBlLHM9IWkmJnQuc2Vzc2lvbnMmJnQuc2Vzc2lvbnMubGVuZ3RoP1R0LkFjY291bnRQaWNrZXI6VHQuVXNlcm5hbWUsYz0hMTtpZihlPT09RFAmJihzPVR0LkFjY291bnRQaWNrZXIsYz0hMCksZSE9PVJQJiZlIT09RlB8fChzPVR0LkNyZWRlbnRpYWxQaWNrZXIsYz0hMCksZT09PU5QJiYocz1UdC5GaWRvLGM9ITApLGU9PT1VUCYmKHM9VHQuRmV0Y2hTZXNzaW9uc1Byb2dyZXNzKSxlIT09dlAmJmUhPT1rUCYmZSE9PVRQJiZlIT09eFAmJmUhPT1MUCYmZSE9PUlQJiZlIT09UFAmJmUhPT1PUCYmZSE9PV9QJiZlIT09U1AmJmUhPT1qUCYmZSE9PUVQJiZlIT09QlB8fChzPVR0LkVycm9yLGM9ITApLCFjKXt2YXIgdT10XyhzKSxkPXUuaW5pdGlhbFZpZXdJZDtkIT09VHQuTm9uZSYmKHM9ZCksbih1KX1yZXR1cm4gYSYmbD09PWN0Llk2LkNoaWxkJiYocz1UdC5CZW5lZml0cykscihzKSxzfShhLHQsYixnLEMpO24oe3R5cGU6dU8uU2V0SW5pdGlhbFZpZXdJZCxwYXlsb2FkOmV9KSxQP1MoKS50aGVuKChmdW5jdGlvbihlKXt3KGUpLF8oITApfSkpOl8oITApfSkpLHBMKCksZkx8fGZ1bmN0aW9uKCl7Zkw9ITA7dmFyIGU9Zk8uaW5zdGFuY2UuaXB2NkV4cGVyaW1lbnRVcmw7aWYoZSl7dmFyIHQ9bmV3IEltYWdlO3Quc3JjPWUsdC5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLFwidmlzaWJpbGl0eTogaGlkZGVuXCIpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodCl9fSgpLCFPKXJldHVybigwLCRlLmpzeCkoXCJkaXZcIix7XCJkYXRhLXRlc3RpZFwiOlwiaW5pdGlhbC12aWV3LXBsYWNlaG9sZGVyXCJ9KTtpZihwPT09VHQuRmlkbylyZXR1cm4gdSgpLCgwLCRlLmpzeCkoXCJkaXZcIix7fSk7aWYoaC5kb0xvZ2luRmxvd1JlZGlyZWN0KXt2YXIgaz1oLmxvZ2luRmxvd1JlZGlyZWN0UGFyYW1zO3JldHVybiBkKGsucmVkaXJlY3RVcmx8fFwiXCIsay5yZWRpcmVjdFBvc3RQYXJhbXMsay5pc0lkcFJlZGlyZWN0KSwoMCwkZS5qc3gpKFwiZGl2XCIse30pfXJldHVybiB2PT09bVA/KDAsJGUuanN4KShoVCx7bmV4dFZpZXc6cH0pOnY9PT15UD8ocih7dHlwZTpTaC5TdWJtaXRQb3N0UmVkaXJlY3QscGF5bG9hZDp7dXJsOnMscG9zdFBhcmFtczpjLHN1Ym1pdEZvcm06ITB9fSksKDAsJGUuanN4KShcImRpdlwiLHt9KSk6Z0xbcF18fCgwLCRlLmpzeCkoaUwse30pfSxoTD1mdW5jdGlvbihlLHQsbil7dmFyIHI9KDAsVW0uaW5zdGFuY2UudXNlQ29tbW9uU3R5bGVzKSgpO3JldHVybigwLCRlLmpzeHMpKFwiZGl2XCIse3RhYkluZGV4Oi0xLGNsYXNzTmFtZTpyLnBhcmFncmFwaFNwYWNpbmcsY2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOnIuYm9sZCxjaGlsZHJlbjplfSksKDAsJGUuanN4KShidyx7dGV4dDp0LGVtYmVkZGVkQmluZGluZ3M6bnVsbCE9bj9uOnt9fSldfSl9LGJMPXt3aGF0SXNBTWljcm9zb2Z0QWNjb3VudFBhZ2VUaXRsZTpcIldoYXQgaXMgYSBNaWNyb3NvZnQgQWNjb3VudD9cIixvbmVBY2NvdW50Rm9yQWxsVGhpbmdzTWljcm9zb2Z0UGFyYWdyYXBoU3VidGl0bGU6XCJPbmUgYWNjb3VudCBmb3IgYWxsIHRoaW5ncyBNaWNyb3NvZnRcIixvbmVBY2NvdW50Rm9yQWxsVGhpbmdzTWljcm9zb2Z0UGFyYWdyYXBoRGVzY3JpcHRpb246XCJGcm9tIE91dGxvb2sgdG8gTWljcm9zb2Z0IEVkZ2UsIFdpbmRvd3MgdG8gWGJveCwgb25lIGFjY291bnQgY29ubmVjdHMgeW91IGFjcm9zcyBNaWNyb3NvZnQuIEFjY2VzcyBhbGwgeW91ciBNaWNyb3NvZnQgZmlsZXMsIGFwcHMsIGFuZCBzZXJ2aWNlcyB3aGVuZXZlciBhbmQgd2hlcmV2ZXIuXCIseW91ckFjY291bnRZb3VyRGF0YU1vcmVTZWN1cmVQYXJhZ3JhcGhTdWJ0aXRsZTpcIllvdXIgYWNjb3VudCwgeW91ciBkYXRhLiBNb3JlIHNlY3VyZVwiLHlvdXJBY2NvdW50WW91ckRhdGFNb3JlU2VjdXJlUGFyYWdyYXBoRGVzY3JpcHRpb246XCJLZWVwIHRhYnMgb24geW91ciBzdWJzY3JpcHRpb25zIGFuZCBvcmRlciBoaXN0b3J5LCBvcmdhbml6ZSB5b3VyIGZhbWlseSdzIGRpZ2l0YWwgbGlmZSwgdXBkYXRlIHlvdXIgcHJpdmFjeSBhbmQgc2VjdXJpdHkgc2V0dGluZ3MsIGFuZCB0cmFjayB0aGUgaGVhbHRoIGFuZCBzYWZldHkgb2YgeW91ciBkZXZpY2VzLlwiLG5vdFN1cmVJZllvdUhhdmVBTWljcm9zb2Z0QWNjb3VudFBhcmFncmFwaFN1YnRpdGxlOlwiTm90IHN1cmUgaWYgeW91IGhhdmUgYSBNaWNyb3NvZnQgYWNjb3VudD9cIixub3RTdXJlSWZZb3VIYXZlQU1pY3Jvc29mdEFjY291bnRQYXJhZ3JhcGhEZXNjcmlwdGlvbjpcIllvdSBhbHJlYWR5IGhhdmUgYSBNaWNyb3NvZnQgYWNjb3VudCBpZiB5b3UgdXNlIGFuIGVtYWlsIGFkZHJlc3MsIFNreXBlIElELCBvciBtb2JpbGUgbnVtYmVyIHRvIHNpZ24gaW4gdG8gTWljcm9zb2Z0IHNlcnZpY2VzIGxpa2UgWGJveCwgT3V0bG9vay5jb20sIG9yIE9uZURyaXZlLiBUaGUgZW1haWwgYWRkcmVzcyB5b3UgdXNlIGZvciB5b3VyIE1pY3Jvc29mdCBhY2NvdW50IGNhbiBiZSBmcm9tIE91dGxvb2suY29tLCBHbWFpbCwgWWFob28hLCBvciBvdGhlciBwcm92aWRlcnMuIElmIHlvdSB3YW50IHRvIHNpZ24gaW4gd2l0aCBhIGxvY2FsIGFjY291bnQgaW5zdGVhZCBvZiBhIE1pY3Jvc29mdCBhY2NvdW50IGFmdGVyIHNldHRpbmcgdXAgeW91ciBkZXZpY2UsIHNlbGVjdCB0aGUgPGJvbGRUZXh0PlN0YXJ0PC9ib2xkVGV4dD4gYnV0dG9uIGFuZCBnbyB0byA8Ym9sZFRleHQ+U2V0dGluZ3MgPiBBY2NvdW50cyA+IFlvdXIgaW5mbzwvYm9sZFRleHQ+IGFuZCBzZWxlY3QgPGJvbGRUZXh0PlNpZ24gaW4gd2l0aCBhIGxvY2FsIGFjY291bnQ8L2JvbGRUZXh0Pi5cIn0seUw9ZnVuY3Rpb24oKXt2YXIgZT1VbS5pbnN0YW5jZSx0PWUudXNlQ29tbW9uU3R5bGVzLG49ZS51c2VTdGF0aWNDb21tb25TdHlsZXMscj1mTy5pbnN0YW5jZS5sb2dpbk1vZGUsbz1waCgpLmN1c3RvbWl6YXRpb25TdGF0ZS5zdHlsZXMuZnJpZW5kbHlBcHBOYW1lLGk9Ykwud2hhdElzQU1pY3Jvc29mdEFjY291bnRQYWdlVGl0bGUsYT1iTC5vbmVBY2NvdW50Rm9yQWxsVGhpbmdzTWljcm9zb2Z0UGFyYWdyYXBoU3VidGl0bGUsbD1iTC5vbmVBY2NvdW50Rm9yQWxsVGhpbmdzTWljcm9zb2Z0UGFyYWdyYXBoRGVzY3JpcHRpb24scz1iTC55b3VyQWNjb3VudFlvdXJEYXRhTW9yZVNlY3VyZVBhcmFncmFwaFN1YnRpdGxlLGM9YkwueW91ckFjY291bnRZb3VyRGF0YU1vcmVTZWN1cmVQYXJhZ3JhcGhEZXNjcmlwdGlvbix1PWJMLm5vdFN1cmVJZllvdUhhdmVBTWljcm9zb2Z0QWNjb3VudFBhcmFncmFwaFN1YnRpdGxlLGQ9Ykwubm90U3VyZUlmWW91SGF2ZUFNaWNyb3NvZnRBY2NvdW50UGFyYWdyYXBoRGVzY3JpcHRpb24sZj1vVCxwPXQoKSxnPVdPKHIsbyxwQyksbT1cImxlYXJuTW9yZU9mZmxpbmVBY2NvdW50U2VjdGlvbklkXCIsaD1mdW5jdGlvbihlLHQpe3ZhciBuPUl0LmRlZmF1bHQuaW5zdGFuY2Uuc2hvd0J1dHRvbnMscj1PXygpO3JldHVybiBfXyhyKSxuP3thcmlhRGVzY3JpYmVkQnk6ZSxidXR0b25JZDpcImxlYXJuTW9yZU9mZmxpbmVBY2NvdW50QmFja0J1dHRvblwiLGxhYmVsOnQuYmFja0J1dHRvbixvbkNsaWNrOnIsaGFzRm9jdXM6ITB9OnZvaWQgMH0obSxwQyk7cmV0dXJuIGZrKFR0LkxlYXJuTW9yZU9mZmxpbmVBY2NvdW50LEV0LkxvZ2luLHtpc1dpZGVWaWV3OiEwLHNob3dJZGVudGl0eUJhbm5lcjohMSxzaG93UGFnZVRpdGxlOiExfSx7cmVzdG9yZVNob3dQYWdlVGl0bGU6ITB9KSxhayhnKSxuKCksKDAsJGUuanN4KShkRSx7c2Vjb25kYXJ5QnV0dG9uOmgsY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtpZDptLGNsYXNzTmFtZTpwLnNlY3Rpb24sY2hpbGRyZW46KDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKHAudGV4dEJvZHkscC50ZXh0QmxvY2tCb2R5LHAubXNhQWdyZWVtZW50TGF5b3V0KSxjaGlsZHJlbjpbKDAsJGUuanN4KShUXyx7cGFnZVRpdGxlOmkscGFnZVRpdGxlSWQ6XCJsZWFybk1vcmVPZmZsaW5lQWNjb3VudFBhZ2VUaXRsZVwifSksaEwoYSxsKSxoTChzLGMpLGhMKHUsZCx7Ym9sZFRleHQ6Zn0pXX0pfSl9KX0sdkw9e3Bhc3NrZXlJbnRlcnN0aXRpYWxWaWV3U3RyaW5nczp7dGl0bGU6XCJTaWduIGluIHdpdGggeW91ciBmYWNlLCBmaW5nZXJwcmludCwgb3IgUElOXCIsZGVzY3JpcHRpb246XCJXaXRoIGEgcGFzc2tleSwgeW91J2xsIHNpZ24gaW4gdG8geW91ciBNaWNyb3NvZnQgYWNjb3VudCB3aXRoIHlvdXIgZmFjZSwgZmluZ2VycHJpbnQsIG9yIGRldmljZSBQSU4uXCIsbmV4dExhYmVsOlwiTmV4dFwifX07ZnVuY3Rpb24gd0woZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIFNMKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgUEw9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/d0woT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtTTChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6d0woT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9KHt9LHZMKSx4TD1uZXcgTG0ucih7bG9naW5TdHJpbmdzOlBMfSk7ZnVuY3Rpb24gT0woZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIF9MKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIF9MKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBfTChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBDTD1mdW5jdGlvbigpe3ZhciBlLHQsbixyLGksYT1KdCgpLmdsb2JhbFN0YXRlLnVzZXIudXNlcm5hbWUsbD14TC5pbnN0YW5jZS5sb2dpblN0cmluZ3MucGFzc2tleUludGVyc3RpdGlhbFZpZXdTdHJpbmdzLHM9bC50aXRsZSxjPWwuZGVzY3JpcHRpb24sdT1sLm5leHRMYWJlbCxkPVNfKCksZj1kLnNob3dTd2l0Y2hUb0V2aWN0ZWRDcmVkUGlja2VyLHA9ZC5zaG93Q3JlZGVudGlhbFN3aXRjaENvbnRlbnQsZz0oZT0kUC5GaWRvLHQ9VE8oKS52aWV3U3RhdGUuY3JlZGVudGlhbHMuYXZhaWxhYmxlQ3JlZGVudGlhbHMsbj1PTCgoMCxvLnVzZVN0YXRlKSghMSksMikscj1uWzBdLGk9blsxXSx7aXNSZXF1ZXN0UGVuZGluZzpyLGNyZWRlbnRpYWxTd2l0Y2hMaW5rc1Byb3BzOntzb3VyY2VWaWV3SWQ6VHQuTG9naW5QYXNza2V5SW50ZXJzdGl0aWFsLGF2YWlsYWJsZUNyZWRlbnRpYWxzOnQsY3VycmVudENyZWRlbnRpYWw6e2NyZWRlbnRpYWxUeXBlOmV9LHNldFJlcXVlc3RQZW5kaW5nRmxhZzppLHNob3VsZFVwZGF0ZU90Y0NyZWRlbnRpYWw6ITB9fSkuY3JlZGVudGlhbFN3aXRjaExpbmtzUHJvcHMsbT1tXygpO3JldHVybnt0aXRsZTpzLGRlc2NyaXB0aW9uOmMsbmV4dExhYmVsOnUsc2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXI6ZixzaG93Q3JlZGVudGlhbFN3aXRjaENvbnRlbnQ6cCxjcmVkZW50aWFsU3dpdGNoTGlua3NQcm9wczpnLGZpZG9SZWRpcmVjdDpmdW5jdGlvbigpe3JldHVybiBtKHt1c2VybmFtZTpueChhLnVuc2FmZVVuZXNjYXBlZFN0cmluZyl9KX19fSxrTD1mdW5jdGlvbigpe3ZhciBlPSgwLFVtLmluc3RhbmNlLnVzZUNvbW1vblN0eWxlcykoKSx0PWUucGFzc2tleUltYWdlLG49ZS5yb3cscj1DTCgpLG89ci50aXRsZSxpPXIuZGVzY3JpcHRpb24sYT1yLm5leHRMYWJlbCxsPXIuc2hvd1N3aXRjaFRvRXZpY3RlZENyZWRQaWNrZXIscz1yLnNob3dDcmVkZW50aWFsU3dpdGNoQ29udGVudCxjPXIuY3JlZGVudGlhbFN3aXRjaExpbmtzUHJvcHMsdT1yLmZpZG9SZWRpcmVjdDtyZXR1cm4gcGsobyxUdC5Mb2dpblBhc3NrZXlJbnRlcnN0aXRpYWwsRXQuTG9naW4se3Nob3dCYWNrQnV0dG9uT25BY3RpdmVWaWV3OiEwfSksKDAsJGUuanN4KShkRSx7dGl0bGU6e3RpdGxlOm8sdGl0bGVJZDpcInBhc3NrZXlUaXRsZVwifSxwcmltYXJ5QnV0dG9uOntsYWJlbDphLHR5cGU6XCJzdWJtaXRcIixvbkNsaWNrOnV9LGltYWdlOnt1cmxzOmxiLHJvbGU6XCJwcmVzZW50YXRpb25cIixkYXRhVGVzdElkOlwicGFzc2tleVwiLGNsYXNzTmFtZTp0fSxkZXNjcmlwdGlvbjp7ZGVzY3JpcHRpb246aSxkZXNjcmlwdGlvbklkOlwicGFzc2tleUludGVyc3RpdGlhbFZpZXdEZXNjcmlwdGlvblwifSxjaGlsZHJlbjpzJiYoMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpuLGNoaWxkcmVuOigwLCRlLmpzeCkoX2sse2NoaWxkcmVuOigwLCRlLmpzeCkoUEEse2NyZWRlbnRpYWxTd2l0Y2hQcm9wczpjLHNob3dTd2l0Y2hUb0V2aWN0ZWRDcmVkUGlja2VyOmx9KX0pfSl9KX0sQUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvXihcXGQrKShweCk/JC8pO2lmKG51bGw9PT10KXJldHVybiBlO3ZhciBuPXBhcnNlSW50KHRbMV0sMTApO3JldHVyblwiXCIuY29uY2F0KG4rMzEsXCJweFwiKX07ZnVuY3Rpb24gVEwoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIEVMKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIEVMKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBFTChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBqTD1mdW5jdGlvbigpe3ZhciBlPVVtLmluc3RhbmNlLHQ9ZS51c2VDb21tb25TdHlsZXMsbj1lLnVzZVN0YXRpY0NvbW1vblN0eWxlcyxyPWZPLmluc3RhbmNlLmxvZ2luTW9kZSxpPXBoKCkuY3VzdG9taXphdGlvblN0YXRlLnN0eWxlcy5mcmllbmRseUFwcE5hbWUsYT10KCksbD1XTyhyLGkscEMpLHM9ZnVuY3Rpb24oZSl7dmFyIHQ9Zk8uaW5zdGFuY2Uub29iZVByb3BlcnRpZXMub29iZVNlcnZpY2VzSW5mb3JtYXRpb25MaW5rfHxcIlwiLG49VEwoKDAsby51c2VTdGF0ZSkoITApLDIpLHI9blswXSxpPW5bMV0sYT1UTCgoMCxvLnVzZVN0YXRlKSh7aGVpZ2h0OlwiMHB4XCIsdmlzaWJpbGl0eTpcImhpZGRlblwifSksMiksbD1hWzBdLHM9YVsxXSxjPWUuYmFja0J1dHRvbix1PXhfKCksZD1mdW5jdGlvbihlKXt2YXIgbj1uZXcgVVJMKHQpLm9yaWdpbjtlLm9yaWdpbj09PW4mJihzKHtoZWlnaHQ6QUwoZS5kYXRhKSx2aXNpYmlsaXR5OlwidmlzaWJsZVwifSksaSghMSkpfTtyZXR1cm4gVFMoKGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGQsITEpLGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGQsITEpfX0pKSx7cmVuZGVyUHJvZ3Jlc3NJbmRpY2F0b3I6cixzZHhJRnJhbWVJbmxpbmVTdHlsZXM6bCxzZHhJRnJhbWVTb3VyY2U6dCxzZWNvbmRhcnlCdXR0b25MYWJlbDpjLHNlY29uZGFyeUJ1dHRvbkNsaWNrSGFuZGxlcjp1fX0ocEMpLGM9cy5yZW5kZXJQcm9ncmVzc0luZGljYXRvcix1PXMuc2R4SUZyYW1lSW5saW5lU3R5bGVzLGQ9cy5zZHhJRnJhbWVTb3VyY2UsZj1zLnNlY29uZGFyeUJ1dHRvbkxhYmVsLHA9cy5zZWNvbmRhcnlCdXR0b25DbGlja0hhbmRsZXI7cmV0dXJuIGZrKFR0LlNlZUhvd0RhdGFJc01hbmFnZWQsRXQuTG9naW4se3Nob3dJZGVudGl0eUJhbm5lcjohMSxzaG93UGFnZVRpdGxlOiExfSx7cmVzdG9yZVNob3dQYWdlVGl0bGU6ITB9KSxhayhsKSxuKCksKDAsJGUuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOmEuc2VjdGlvbixjaGlsZHJlbjpbYyYmKDAsJGUuanN4KSh5Uyx7fSksKDAsJGUuanN4KShcImRpdlwiLHtpZDpcInNkeENvbnRhaW5lclwiLGNsYXNzTmFtZTphLmZsZXhDb250YWluZXIsY2hpbGRyZW46KDAsJGUuanN4KShcImlmcmFtZVwiLHtpZDpcInNkeElGcmFtZVwiLFwiZGF0YS10ZXN0aWRcIjpcInNkeElGcmFtZVwiLGNsYXNzTmFtZTphLmZsZXhJRnJhbWUsdGl0bGU6bCxzcmM6ZCxzdHlsZTp1fSl9KSwoMCwkZS5qc3gpKGRFLHtzZWNvbmRhcnlCdXR0b246e2hhc0ZvY3VzOiEwLGxhYmVsOmYsb25DbGljazpwfX0pXX0pfSxJTD1mdW5jdGlvbihlLHQpe3ZhciBuPXQuY29tbW9uTG9naW5TdHJpbmdzLHI9dC5zaWduSW5PcHRpb25zU3RyaW5ncyxvPUl0LmRlZmF1bHQuaW5zdGFuY2UuYWN0aXZlRmxhdm9yLGk9Zk8uaW5zdGFuY2UsYT1pLnNob3dGb3Jnb3RVc2VybmFtZUxpbmssbD1pLmZvcmdvdFVzZXJuYW1lVXJsLHM9W10sYz1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbW1vbkxvZ2luU3RyaW5ncyxuPWUuc2lnbkluT3B0aW9uc1N0cmluZ3Mscj1uLmxpbmtlZEluTWFpblRleHQsbz1uLmdpdEh1Yk1haW5UZXh0LGk9bi5naXRodWJIZWxwRGlhbG9nRGVzYyxhPW4uZ2l0aHViSGVscERpYWxvZ0Rlc2MyLGw9bi5mb3Jnb3RVc2VybmFtZU1haW5UZXh0LHM9bi5vZmZsaW5lQWNjb3VudE1haW5UZXh0LGM9JFMoKSx1PW1fKCksZD1CRSghMCksZj1mTy5pbnN0YW5jZSxwPWYubGlua2VkSW5GZWRVcmwsZz1mLmdpdGh1YkZlZFVybCxtPWYuZm9yZ290VXNlcm5hbWVVcmwsaD0oMCxVbS5pbnN0YW5jZS51c2VDb21tb25TdHlsZXMpKCksYj1nXyh0KSx5PWIuZmlkb0xpbmtUZXh0LHY9Yi5maWRvSGVscFRleHQsdz1iLmZpZG9EaWFsb2dIZWFkZXIsUz1iLmZpZG9EaWFsb2dEZXNjcmlwdGlvbixQPWIuZmlkb0ltYWdlLHg9e3VybHM6dGIsZGF0YVRlc3RJZDpcImdpdGh1Yi1pbWdcIn07cmV0dXJue2ZpZG9Qcm9wczp7bWFpblRleHQ6eSxoZWxwVGV4dDp2LGltYWdlOlAsb25DbGljazpmdW5jdGlvbigpe3JldHVybiB1KCl9LGFyaWFMYWJlbDp5LGhlbHBEaWFsb2dJY29uOnt1cmxzOnFoLGRhdGFUZXN0SWQ6XCJmaWRvLWhlbHBcIn0saGVscERpYWxvZ0hlYWRlcjp3LGhlbHBEaWFsb2dEZXNjcmlwdGlvbjpTfSxsaW5rZWRJblByb3BzOnttYWluVGV4dDpyLGltYWdlOnt1cmxzOm5iLGRhdGFUZXN0SWQ6XCJsaW5rZWRpbi1pbWdcIn0sb25DbGljazpmdW5jdGlvbigpe2MocCwhMCl9LGFyaWFMYWJlbDpyfSxnaXRIdWJQcm9wczp7bWFpblRleHQ6byxpbWFnZTp4LG9uQ2xpY2s6ZnVuY3Rpb24oKXtjKGcsITApfSxhcmlhTGFiZWw6byxoZWxwRGlhbG9nSWNvbjp7dXJsczpxaCxkYXRhVGVzdElkOlwiZ2l0aHViLWhlbHBcIn0saGVscERpYWxvZ0hlYWRlcjpRTyh4LG8pLGhlbHBEaWFsb2dEZXNjcmlwdGlvbjpYTyhpLGEsU2coaC5yb3csaC50ZXh0Qm9keSkpfSxvZmZsaW5lQWNjb3VudFByb3BzOnttYWluVGV4dDpzLGltYWdlOnt1cmxzOmliLGRhdGFUZXN0SWQ6XCJvZmZsaW5lLWFjY291bnQtaW1nXCJ9LG9uQ2xpY2s6ZCxhcmlhTGFiZWw6c30sZm9yZ290VXNlcm5hbWVQcm9wczp7bWFpblRleHQ6bCxpbWFnZTp7dXJsczpKaCxkYXRhVGVzdElkOlwiZm9yZ290LXVzZXJuYW1lLWhlbHBcIn0sb25DbGljazpmdW5jdGlvbigpe2MobSwhMCl9LGFyaWFMYWJlbDpsfX19KHtjb21tb25Mb2dpblN0cmluZ3M6bixzaWduSW5PcHRpb25zU3RyaW5nczpyfSksdT1jLmZpZG9Qcm9wcyxkPWMubGlua2VkSW5Qcm9wcyxmPWMuZ2l0SHViUHJvcHMscD1jLmZvcmdvdFVzZXJuYW1lUHJvcHMsZz1jLm9mZmxpbmVBY2NvdW50UHJvcHM7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jcmVkZW50aWFsVHlwZT09PSRQLkZpZG8/cy5wdXNoKHUpOmUuY3JlZGVudGlhbFR5cGU9PT0kUC5MaW5rZWRJbiYmZS5yZWRpcmVjdFVybD9zLnB1c2goZCk6ZS5jcmVkZW50aWFsVHlwZT09PSRQLkdpdEh1YiYmZS5yZWRpcmVjdFVybD9zLnB1c2goZik6bz09PWN0Lm9GLldpbjExT29iZUZhYnJpYyYmZS5jcmVkZW50aWFsVHlwZT09PSRQLk9mZmxpbmVBY2NvdW50JiZzLnB1c2goZyl9KSksYSYmbCYmcy5wdXNoKHApLHN9LExMPXtiYWNrTGFiZWw6XCJCYWNrXCIsc2lnbkluT3B0aW9uc1RpdGxlOlwiU2lnbi1pbiBvcHRpb25zXCIsZmlkb0hlbHBEaWFsb2dEZXNjMjpcIlRvIHVzZSB0aGlzIG9wdGlvbiwgeW91IG11c3QgaGF2ZSBwcmV2aW91c2x5IHNldCB0aGlzIHVwIG9uIHlvdXIgYWNjb3VudC4gPGZpZG9IZWxwTGluaz5MZWFybiBob3cgdG8gc2V0IHRoaXMgdXA8L2ZpZG9IZWxwTGluaz5cIixsaW5rZWRJbk1haW5UZXh0OlwiU2lnbiBpbiB3aXRoIExpbmtlZEluXCIsZ2l0SHViTWFpblRleHQ6XCJTaWduIGluIHdpdGggR2l0SHViXCIsZ2l0aHViSGVscERpYWxvZ0Rlc2M6XCJUbyB1c2UgdGhpcyBvcHRpb24sIHlvdSBtdXN0IGhhdmUgcHJldmlvdXNseSBsaW5rZWQgeW91ciBwZXJzb25hbCBNaWNyb3NvZnQgYWNjb3VudCB0byBhIEdpdEh1YiBhY2NvdW50LlwiLGdpdGh1YkhlbHBEaWFsb2dEZXNjMjpcIllvdSBjYW4ndCB1c2UgdGhpcyBvcHRpb24gdG8gYWNjZXNzIHdvcmsgb3Igc2Nob29sIHJlc291cmNlcy5cIixmb3Jnb3RVc2VybmFtZU1haW5UZXh0OlwiRm9yZ290IG15IHVzZXJuYW1lXCIsb2ZmbGluZUFjY291bnRNYWluVGV4dDpcIk9mZmxpbmUgYWNjb3VudFwifSxETD1mdW5jdGlvbigpe3ZhciBlPUxMLmJhY2tMYWJlbCx0PUxMLnNpZ25Jbk9wdGlvbnNUaXRsZSxuPVVtLmluc3RhbmNlLHI9bi51c2VDb21tb25TdHlsZXMsaT1uLnVzZVN0YXRpY0NvbW1vblN0eWxlcyxhPWZPLmluc3RhbmNlLGw9YS5pc0ZpZG9TdXBwb3J0ZWRIaW50LHM9YS51c2VXZWJ2aWV3Rmlkb0N1c3RvbVByb3RvY29sLGM9RGkobCxzKSx1PUtPKGMpLGQ9elMoKTtpKCk7dmFyIGY9cigpO2ZrKFR0LlNpZ25Jbk9wdGlvbnMsRXQuTG9naW4se3Nob3dJZGVudGl0eUJhbm5lcjohMX0pLCgwLG8udXNlQ29udGV4dCkoWnQpO3ZhciBwPUlMKHUse2NvbW1vbkxvZ2luU3RyaW5nczpwQyxzaWduSW5PcHRpb25zU3RyaW5nczpMTH0pO3JldHVybigwLCRlLmpzeHMpKFwiZGl2XCIse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFJPLHt0aXRsZUlkOlwic2lnbkluT3B0aW9uc1RpdGxlXCIsdGl0bGU6dH0pLCgwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmYuZm9ybUdyb3VwLGNoaWxkcmVuOigwLCRlLmpzeCkoQ2sse2FyaWFMYWJlbGxlZEJ5OnQsYXJpYURlc2NyaWJlZEJ5OnQsdGlsZUxpc3Q6cH0pfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Zi53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6Zi5idXR0b25NYXJnaW4sY2hpbGRyZW46KDAsJGUuanN4KShGXyx7Y2hpbGRyZW46KDAsJGUuanN4KShVXyx7YnV0dG9uSWQ6XCJiYWNrQnV0dG9uXCIsbGFiZWw6ZSxpc1ByaW1hcnk6ITEsYXJpYUxhYmVsOmUsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBkKFR0LlVzZXJuYW1lLC0xKX19KX0pfSl9KV19KX07ZnVuY3Rpb24gTkwoZSl7cmV0dXJuIE5MPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LE5MKGUpfXZhciBSTD1mdW5jdGlvbihlLHQsbil7dmFyIHI9KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKGUpe3JldHVybiEobnVsbCE9dCYmdC5pRnJhbWVVcmwpfHxUVChudWxsPT10P3ZvaWQgMDp0LmlGcmFtZVVybCxlKX0pLFtudWxsPT10P3ZvaWQgMDp0LmlGcmFtZVVybF0pLGk9KDAsby51c2VDYWxsYmFjaykoKGZ1bmN0aW9uKHQpe3ZhciBvLGk9dC5kYXRhLGE9dC5vcmlnaW47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGkpdHJ5e289SlNPTi5wYXJzZShpKX1jYXRjaChsKXtyZXR1cm59ZWxzZXtpZihcIm9iamVjdFwiIT09TkwoaSkpcmV0dXJuO289aX1uJiZvLmV2ZW50SWQhPT1ufHwhcihhKXx8ZShvKX0pLFtuLHIsZV0pOygwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaSksZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsaSl9fSksW24saV0pfSxCTD1mdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZyxuPXQuY29ubmVjdGlvbkRhdGEscj10LnRpbWVvdXQsaT10LnVybCxhPWUub25Mb2FkaW5nU3RhdGVDaGFuZ2UsbD1lLm9uU3VjY2VzcyxzPWUub25UaW1lb3V0LGM9ZS5vbkJhY2ssdT1lLm9uU2Vzc2lvblN0YXJ0LGQ9KDAsby51c2VSZWYpKG51bGwpLGY9KDAsby51c2VSZWYpKCkscD1cIlwiLmNvbmNhdChpKS5jb25jYXQobj9cIiZkYXRhPVwiLmNvbmNhdChuKTpcIlwiKTsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7YSghMCk7dmFyIGU9cGFyc2VJbnQociwxMCk7cmV0dXJuIGYuY3VycmVudD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2EoITEpLHMoKX0pLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dChmLmN1cnJlbnQpfX0pLFthLHMscl0pO3ZhciBnPWZ1bmN0aW9uKGUpe3ZhciB0PWUucGF5bG9hZCxuPXQuZnJhbWVIZWlnaHQscj10LmZyYW1lV2lkdGgsbz1kLmN1cnJlbnQ7byYmKG8uc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KG4rNDAsXCJweFwiKSxvLnN0eWxlLndpZHRoPVwiXCIuY29uY2F0KHIsXCJweFwiKSl9O3JldHVybiBSTCgoZnVuY3Rpb24oZSl7YSghMSksZyhlKSxjbGVhclRpbWVvdXQoZi5jdXJyZW50KSx1KHtzZXNzaW9uVG9rZW46ZS5wYXlsb2FkLnNlc3Npb25Ub2tlbix0eXBlOmN0Lk5XLkVuZm9yY2VtZW50fSl9KSx7aUZyYW1lVXJsOnB9LFwiY2hhbGxlbmdlLWxvYWRlZFwiKSxSTCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXlsb2FkLnNlc3Npb25Ub2tlbjtsKHtzb2x1dGlvbjp0LHR5cGU6Y3QuTlcuRW5mb3JjZW1lbnQsdG9rZW46dH0pfSkse2lGcmFtZVVybDpwfSxcImNoYWxsZW5nZS1jb21wbGV0ZVwiKSxSTChnLHtpRnJhbWVVcmw6cH0sXCJjaGFsbGVuZ2UtaWZyYW1lU2l6ZVwiKSxSTChjLHtpRnJhbWVVcmw6cH0sXCJiYWNrX2tleV9wcmVzc2VkXCIpLHthcmtvc2VVcmw6cCxpZnJhbWVSZWY6ZH19KGUpLG49dC5hcmtvc2VVcmwscj10LmlmcmFtZVJlZixpPSgwLFVtLmluc3RhbmNlLnVzZUFya29zZUVuZm9yY2VtZW50U3R5bGVzKSgpLmlmcmFtZSxhPWUuc3RyaW5ncyxsPWUuZXJyb3JNZXNzYWdlO3JldHVybigwLCRlLmpzeHMpKFwiZGl2XCIse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFwiaWZyYW1lXCIse3NyYzpuLHJlZjpyLGNsYXNzTmFtZTppLGlkOlwiZW5mb3JjZW1lbnRGcmFtZVwiLFwiZGF0YS10ZXN0aWRcIjpcImVuZm9yY2VtZW50RnJhbWVcIixzYW5kYm94OlwiYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHNcIix0aXRsZTphLmlmcmFtZVRpdGxlfSksbCYmKDAsJGUuanN4KShNayx7aWQ6XCJhcmtvc2VFbmZvcmNlbWVudEVycm9yXCIsZXJyb3JDb2RlOlwiYXJrb3NlRW5mb3JjZW1lbnRFcnJvclwiLGNoaWxkcmVuOmx9KV19KX07ZnVuY3Rpb24gVUwoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIEZMKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1VMKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7TUwoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOlVMKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIE1MKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiB6TChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gSEwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gSEwoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIEhMKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIFZMPXtsZWZ0OlwiMTBcIixlcnJvck1lc3NhZ2U6XCJcIixzaG93TWVudTohMSxzaG93RXJyb3I6ITEsaW5zdHJ1Y3Rpb25zSW5zaWRlOiExLHNob3dJbnN0cnVjdGlvbjohMSxpbnB1dFdpZHRoOlwiMTAwJVwiLGRvbmU6ITEsaG9sZGVyOlwiaGlwQ29udGVudFwiLHNjcmlwdEhvbGRlcjpcImhpcFNjcmlwdENvbnRhaW5lclwifSxXTD1mdW5jdGlvbihlKXt2YXIgdD1lLmNvbmZpZyxuPXQudXJsLHI9dC5tYXJrZXQsaT10LmZsb3dJZCxhPXZvaWQgMD09PWk/XCJcIjppLGw9ZS5pbml0aWFsVHlwZSxzPWUub25Mb2FkaW5nU3RhdHVzQ2hhbmdlLGM9ZS5vbkVycm9yTWVzc2FnZUNoYW5nZSx1PWUub25NZW51QnV0dG9uc0NoYW5nZSxkPWUub25JbnN0cnVjdGlvbk1lc3NhZ2VDaGFuZ2UsZj1lLm9uU2Vzc2lvblN0YXJ0LHA9KDAsby51c2VDb250ZXh0KShadCkuZ2xvYmFsU3RhdGUuYWN0aXZlRmxvdyxnPXpMKCgwLG8udXNlU3RhdGUpKFwiXCIpLDIpLG09Z1swXSxoPWdbMV0sYj1mdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSBFdC5Mb2dpbjpyZXR1cm5cIkhJUFwiO2Nhc2UgRXQuQWN3OmRlZmF1bHQ6cmV0dXJuXCJDaGFsbGVuZ2VDb250cm9sXCJ9fShwKSx5PSgwLG8udXNlQ2FsbGJhY2spKChmdW5jdGlvbigpe3MoITEpO3ZhciBlPXdpbmRvd1tiXS50eXBlO2lmKGYoe3Nlc3Npb25Ub2tlbjphLHR5cGU6ZX0pLHdpbmRvd1tiXSl7dmFyIHQ9d2luZG93W2JdLnNldEVycm9yLG49bnVsbD09dD92b2lkIDA6dCgpO2lmKG4pe3ZhciByPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG4pO3ImJnIuZm9jdXMoKX19fSksW2EsYixzLGZdKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS51cmwsbj1lLmVsZW1lbnRJZDsoMCxvLnVzZUVmZmVjdCkoKGZ1bmN0aW9uKCl7dmFyIGU9bj9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChuKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaGVhZFwiKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7cmV0dXJuIHIuc2V0QXR0cmlidXRlKFwic3JjXCIsdCksbnVsbD09ZXx8ZS5hcHBlbmRDaGlsZChyKSxmdW5jdGlvbigpe3ZhciBlLHQ7bnVsbD09PShlPXIucGFyZW50RWxlbWVudCl8fHZvaWQgMD09PWV8fG51bGw9PT0odD1lLnJlbW92ZUNoaWxkKXx8dm9pZCAwPT09dHx8dC5jYWxsKGUscil9fSksW3Qsbl0pfSh7dXJsOm0sZWxlbWVudElkOlZMLnNjcmlwdEhvbGRlcn0pLCgwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXt3aW5kb3dbYl18fChzKCEwKSx3aW5kb3dbYl09RkwoRkwoe30sVkwpLHt9LHt0eXBlOmwudG9TdHJpbmcoKSxtYXJrZXQ6cixwb3N0TG9hZDp5LHNob3dFcnJvckNhbGxiYWNrOmMscmVtb3ZlRXJyb3JDYWxsYmFjazpjLG1lbnVPdXRzaWRlQ2FsbGJhY2s6dSxpbnN0cnVjdGlvbk91dHNpZGVDYWxsYmFjazpkfSksaChuKSl9KSxbbCxyLGMsZCxzLHUsbix5LHAsYl0pLCgwLG8udXNlRWZmZWN0KSgoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt3aW5kb3dbYl09dm9pZCAwfX0pLFtiXSkse3ZhbGlkYXRlU29sdXRpb246ZnVuY3Rpb24oKXt2YXIgZSx0PXdpbmRvd1tiXSxuPXt0b2tlbjpcIlwiLHNvbHV0aW9uOlwiXCIsZXJyb3I6XCJcIn07dCYmKG51bGw9PT0oZT10LnZlcmlmeSl8fHZvaWQgMD09PWV8fGUuY2FsbCh0LChmdW5jdGlvbihlLHIpe3ZhciBvLGk7bnVsbD09PShvPXQuY2xpZW50VmFsaWRhdGlvbil8fHZvaWQgMD09PW98fG8uY2FsbCh0KSxuPXtlcnJvcjp0LmVycm9yP251bGw9PT0oaT10LmdldEVycm9yKXx8dm9pZCAwPT09aT92b2lkIDA6aS5jYWxsKHQpOlwiXCIsdG9rZW46cixzb2x1dGlvbjplfX0pKSk7cmV0dXJuIG59LHJlbG9hZEhJUDpmdW5jdGlvbigpe3ZhciBlPXdpbmRvd1tiXTtlJiZlLnJlbG9hZEhJUChlLnNob3dFcnJvcixlLnVybEZpZCxlLmRhdGFDZW50ZXIpfX19LEdMPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc3R5bGVzLG49VkwuaG9sZGVyLHI9Vkwuc2NyaXB0SG9sZGVyO3JldHVybigwLCRlLmpzeHMpKCRlLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6dCxpZDpuLFwiZGF0YS10ZXN0aWRcIjpufSksKDAsJGUuanN4KShcImRpdlwiLHtpZDpyLFwiZGF0YS10ZXN0aWRcIjpyfSldfSl9O2Z1bmN0aW9uICRMKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBLTChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBLTChlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gS0woZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgcUw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdHJpbmdzLG49ZS5vblNlc3Npb25TdGFydCxyPWUub25TdWNjZXNzLGk9ZS5vblZhbGlkYXRlLGE9ZS5pbml0aWFsVHlwZSxsPWUuY29uZmlnLHM9ZS5lcnJvck1lc3NhZ2UsYz1mdW5jdGlvbihlKXt2YXIgdD1lLmluaXRpYWxUeXBlLG49ZS5vblNlc3Npb25TdGFydCxyPWUub25TdWNjZXNzLGk9ZS5vblZhbGlkYXRlLGE9ZS5jb25maWcsbD0kTCgoMCxvLnVzZVN0YXRlKSghMSksMikscz1sWzBdLGM9bFsxXSx1PSRMKCgwLG8udXNlU3RhdGUpKFwiXCIpLDIpLGQ9dVswXSxmPXVbMV0scD0kTCgoMCxvLnVzZVN0YXRlKShcIlwiKSwyKSxnPXBbMF0sbT1wWzFdLGg9JEwoKDAsby51c2VTdGF0ZSkoW10pLDIpLGI9aFswXSx5PWhbMV0sdj1XTCh7Y29uZmlnOmEsaW5pdGlhbFR5cGU6dCxvbkxvYWRpbmdTdGF0dXNDaGFuZ2U6YyxvbkVycm9yTWVzc2FnZUNoYW5nZTpmLG9uSW5zdHJ1Y3Rpb25NZXNzYWdlQ2hhbmdlOm0sb25NZW51QnV0dG9uc0NoYW5nZTpmdW5jdGlvbihlKXt2YXIgdD1lLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS50ZXh0O3JldHVybnt0ZXh0OnQsYXJpYUxhYmVsOmUudGlwLGFjdGlvbjplLnRyaWdnZXIsa2V5OlwiSGlwQ2hhbGxlbmdlQnV0dG9uX1wiLmNvbmNhdCh0KX19KSk7eSh0KX0sb25TZXNzaW9uU3RhcnQ6bn0pLHc9di5yZWxvYWRISVAsUz12LnZhbGlkYXRlU29sdXRpb247cmV0dXJue2lzTG9hZGluZzpzLGVycm9yTWVzc2FnZTpkLGluc3RydWN0aW9uOmcsbWVudUl0ZW1zOmIsb25TdWJtaXQ6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPVMoKSxvPW4udG9rZW4sYT1uLnNvbHV0aW9uLGw9bi5lcnJvcjtpKHtzZXNzaW9uVG9rZW46byx0eXBlOnR9KSxsP2YobCk6cih7dG9rZW46byx0eXBlOnQsc29sdXRpb246YSxyZWxvYWRISVA6d30pfX19KHtpbml0aWFsVHlwZTphLG9uU2Vzc2lvblN0YXJ0Om4sb25TdWNjZXNzOnIsb25WYWxpZGF0ZTppLGNvbmZpZzpsfSksdT1jLmlzTG9hZGluZyxkPWMuZXJyb3JNZXNzYWdlLGY9Yy5pbnN0cnVjdGlvbixwPWMubWVudUl0ZW1zLGc9Yy5vblN1Ym1pdCxtPWR8fHMsaD1VbS5pbnN0YW5jZSxiPWgudXNlQ29tbW9uU3R5bGVzLHk9aC51c2VIaXBDaGFsbGVuZ2VTdHlsZXMsdj1oLnVzZVN0YXRpY0hpcENoYWxsZW5nZVN0eWxlcyx3PWIoKSxTPXkoKTtyZXR1cm4gdigpLCgwLCRlLmpzeHMpKFwiZm9ybVwiLHtuYW1lOlwiaGlwQ2hhbGxlbmdlRm9ybVwiLG5vVmFsaWRhdGU6ITAsbWV0aG9kOlwicG9zdFwiLG9uU3VibWl0OmcsY2hpbGRyZW46WygwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlMuaGlwQ2hhbGxlbmdlTGlua3MsY2hpbGRyZW46cC5tYXAoKGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uLmxlbmd0aDtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTp0KzE9PT1yP1MuaGlwQ2hhbGxlbmdlTWVudUJ1dHRvblN0eWxlOlMuaGlwQ2hhbGxlbmdlTWVudUJ1dHRvblN0eWxlV2l0aEJvcmRlcixjaGlsZHJlbjooMCwkZS5qc3gpKHRDLHt0ZXh0OmUudGV4dCxsaW5rSWQ6ZS5rZXksb25DbGljazplLmFjdGlvbn0pfSxlLmtleSl9KSl9KSwoMCwkZS5qc3gpKEdMLHtzdHlsZXM6Uy5oaXBDb250ZW50U3R5bGV9KSxmJiYhbSYmKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6dy5saW5rQnV0dG9uRm9udFNpemUsXCJkYXRhLXRlc3RpZFwiOlwiaW5mby1tZXNzYWdlXCIsY2hpbGRyZW46Zn0pLG0mJigwLCRlLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlNnKHcubGlua0J1dHRvbkZvbnRTaXplLHcuZXJyb3IpLFwiZGF0YS10ZXN0aWRcIjpcImVycm9yLW1lc3NhZ2VcIixjaGlsZHJlbjptfSksKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6dy53aW5CdXR0b25QaW5Cb3R0b20sY2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6dy5yb3csY2hpbGRyZW46KDAsJGUuanN4KShGXyx7Y3VzdG9tQ3NzOlMuaGlwQ2hhbGxlbmdlTmV4dEJ1dHRvbkNvbnRhaW5lclN0eWxlLGNoaWxkcmVuOigwLCRlLmpzeCkoVV8se2lzUHJpbWFyeTohMCxcImFyaWEtbGFiZWxcIjp0LmFyaWFOZXh0QnV0dG9uTGFiZWwsbGFiZWw6dC5uZXh0QnV0dG9uLGRpc2FibGVkOnUsdHlwZTpcInN1Ym1pdFwiLGJ1dHRvbklkOlwibmV4dEJ1dHRvblwifSl9KX0pfSldfSl9O2Z1bmN0aW9uIFFMKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBYTChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9RTChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe1lMKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpRTChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBZTChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIFpMPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWVudUl0ZW1zLG49KDAsVW0uaW5zdGFuY2UudXNlQ2FwdGNoYVZpZXdTdHlsZXMpKCk7cmV0dXJuKDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6bi5tZW51SXRlbXMsY2hpbGRyZW46dC5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PWUuaW1hZ2Uscj1lLmtleSxvPWUudGV4dCxpPXtpbWFnZTp7ZGF0YVRlc3RJZDpyLHVybHM6dH0sY2xhc3NOYW1lOm4uaW1hZ2VCdXR0b24sb25DbGljazplLm9uQ2xpY2t9O3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7Y2hpbGRyZW46KDAsJGUuanN4KShoUyxYTChYTCh7fSxpKSx7fSx7Y2hpbGRyZW46KDAsJGUuanN4KShcImRpdlwiLHtjbGFzc05hbWU6bi5pbWFnZUJ1dHRvblRleHQsY2hpbGRyZW46b30pfSkpfSxyKX0pKX0pfSxKTD1bXCJhdWRpb1VybFwiLFwiYnV0dG9uSWRcIixcImRhdGFUZXN0SWRcIixcImFyaWFMYWJlbFwiLFwiYXJpYURlc2NyaWJlZEJ5XCIsXCJjbGFzc05hbWVcIixcImltYWdlXCIsXCJub3RTdXBwb3J0ZWRUZXh0XCIsXCJ0b29sdGlwVGV4dFwiLFwib25DbGlja1wiLFwiY2hpbGRyZW5cIl07ZnVuY3Rpb24gZUQoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIHREKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2VEKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7bkQoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOmVEKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIG5EKGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1mdW5jdGlvbiByRChlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30saT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8aS5sZW5ndGg7cisrKW49aVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyluPWlbcl0sdC5pbmRleE9mKG4pPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99dmFyIG9EPWZ1bmN0aW9uKGUpe3ZhciB0PSgwLG8udXNlUmVmKShudWxsKSxuPWUuYXVkaW9Vcmwscj1lLmJ1dHRvbklkLGk9dm9pZCAwPT09cj9cImlkQnRuX0F1ZGlvUGxheWVyXCI6cixhPWUuZGF0YVRlc3RJZCxsPXZvaWQgMD09PWE/XCJhdWRpb1BsYXllckJ1dHRvblwiOmEscz1lLmFyaWFMYWJlbCxjPWUuYXJpYURlc2NyaWJlZEJ5LHU9ZS5jbGFzc05hbWUsZD1lLmltYWdlLGY9ZS5ub3RTdXBwb3J0ZWRUZXh0LHA9ZS50b29sdGlwVGV4dCxnPWUub25DbGljayxtPWUuY2hpbGRyZW4saD1yRChlLEpMKTtyZXR1cm4oMCwkZS5qc3gpKFwiZGl2XCIse3RpdGxlOnAsY2hpbGRyZW46KDAsJGUuanN4cykoaFMsdEQodEQoe30saCkse30se2ltYWdlOmQsYnV0dG9uSWQ6aSxhcmlhTGFiZWw6cyxhcmlhRGVzY3JpYmVkQnk6YyxjbGFzc05hbWU6dSxvbkNsaWNrOmZ1bmN0aW9uKGUpe3ZhciBuLHI7bnVsbD09PShuPXQuY3VycmVudCl8fHZvaWQgMD09PW58fG51bGw9PT0ocj1uLnBsYXkpfHx2b2lkIDA9PT1yfHxyLmNhbGwobiksZyYmZyhlKX0sY2hpbGRyZW46W20sKDAsJGUuanN4cykoXCJhdWRpb1wiLHtyZWY6dCxzcmM6bixcImRhdGEtdGVzdGlkXCI6bCxjaGlsZHJlbjpbZiwoMCwkZS5qc3gpKFwidHJhY2tcIix7a2luZDpcImNhcHRpb25zXCIsbGFiZWw6c30pXX0pXX0pKX0pfSxpRD1mdW5jdGlvbihlKXt2YXIgdD1lLm5hdGl2ZUhpcFRhcmdldCxuPWUubmF0aXZlSGlwVHlwZSxyPWUuc3RyaW5ncyxvPWUub25DbGljayxpPXIucGxhY2Vob2xkZXJGb3JBdWRpbyxhPXIucGxhY2Vob2xkZXJGb3JJbWFnZSxsPXIucGxheUF1ZGlvVG9vbHRpcCxzPSgwLFVtLmluc3RhbmNlLnVzZUNhcHRjaGFWaWV3U3R5bGVzKSgpLGM9dCx1PXMudGFyZ2V0SW1hZ2UsZD1cIm5hdGl2ZUhpcC10YXJnZXQtaWRcIjtyZXR1cm4oMCwkZS5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6cy50YXJnZXRJbWFnZUNvbnRhaW5lcixjaGlsZHJlbjpbbj09PWN0Lk5XLk5hdGl2ZUF1ZGlvJiYoMCwkZS5qc3gpKG9ELHthdWRpb1VybDpjLGFyaWFMYWJlbDppLGltYWdlOntkYXRhVGVzdElkOmQsdXJsczpXaH0sY2xhc3NOYW1lOnUsb25DbGljazpvLHRvb2x0aXBUZXh0Omx9KSxuPT09Y3QuTlcuTmF0aXZlVmlzdWFsJiYoMCwkZS5qc3gpKFwiaW1nXCIse1wiZGF0YS10ZXN0aWRcIjpkLHNyYzp0LGFsdDphLGNsYXNzTmFtZTp1fSldfSl9LGFEPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaGFuZGxlcnMsbj10Lm9uQ2hhbmdlLHI9dC5vbkJsdXIsbz10Lm9uRm9jdXMsaT1lLmhhc0ZvY3VzLGE9ZS5uYXRpdmVIaXBUYXJnZXQsbD1lLm5hdGl2ZUhpcFR5cGUscz1lLm1lbnVJdGVtcyxjPWUuZXJyb3IsdT1jLnNob3dFcnJvck1lc3NhZ2UsZD1jLmVycm9yTWVzc2FnZSxmPWMuZXh0ZXJuYWxFcnJvcixwPWUuc3RyaW5ncyxnPWUudmFsdWUsbT1lLm9uQ2xpY2s7cmV0dXJuKDAsJGUuanN4cykoJGUuRnJhZ21lbnQse2NoaWxkcmVuOltmJiYoMCwkZS5qc3gpKE1rLHtpZDpcImVycm9yVGV4dFwiLFwiYXJpYS1yZWxldmFudFwiOlwidGV4dFwiLFwiYXJpYS1hdG9taWNcIjpcInRydWVcIixjaGlsZHJlbjpmfSksKDAsJGUuanN4KShpRCx7bmF0aXZlSGlwVGFyZ2V0OmEsbmF0aXZlSGlwVHlwZTpsLHN0cmluZ3M6cCxvbkNsaWNrOm19KSwoMCwkZS5qc3gpKFpMLHttZW51SXRlbXM6c30pLCgwLCRlLmpzeCkoaWose25hbWU6XCJuYXRpdmVIaXBJbnB1dFwiLHR5cGU6XCJ0ZXh0XCIsdmFsdWU6ZyxwbGFjZWhvbGRlcjpwLnBsYWNlaG9sZGVyLG9uQ2hhbmdlOm4sc2hvd0Vycm9yTWVzc2FnZTp1LGVycm9yTWVzc2FnZTpkLFwiYXJpYS1sYWJlbFwiOnAucGxhY2Vob2xkZXIsXCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJuYXRpdmVIaXBEZXNjcmlwdGlvblwiLGhhc0ZvY3VzOmksaGFzSW5pdGlhbEZvY3VzOiEwLG9uRm9jdXM6byxvbkJsdXI6cn0pXX0pfSxsRD1cImh0dHBzOi8vZ28ubWljcm9zb2Z0LmNvbVwiLHNEPShcIlwiLmNvbmNhdChsRCxcIi9md2xpbmsvP0xpbmtJZD0yNjIwMzJcIiksXCJcIi5jb25jYXQobEQsXCIvZndsaW5rLz9saW5raWQ9MjIzNzQ1MFwiKSk7XCJcIi5jb25jYXQobEQsXCIvZndsaW5rLz9MaW5rSWQ9NTIxODM5XCIpLFwiXCIuY29uY2F0KGxELFwiL2Z3bGluay8/TGlua0lEPTI0ODY4MVwiKSxcImh0dHBzOi8vXCIuY29uY2F0KFwiYWthLm1zL3NpZ24taW4tc3VwcG9ydFwiKTtmdW5jdGlvbiBjRCgpe3JldHVybigwLCRlLmpzeCkoXCJkaXZcIix7aWQ6XCJCbG9ja0xlYXJuTW9yZUxpbmtcIixjaGlsZHJlbjooMCwkZS5qc3gpKFwiYVwiLHtpZDpcImxlYXJuTW9yZVwiLGhyZWY6c0QscmVsOlwibm9yZWZlcnJlciBub29wZW5lclwiLHRhcmdldDpcIl9ibGFua1wiLHRhYkluZGV4OjAsY2hpbGRyZW46XCJMZWFybiBtb3JlXCJ9KX0pfWZ1bmN0aW9uIHVEKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBkRChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj91RChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2ZEKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTp1RChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBmRChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIHBEPWZ1bmN0aW9uKGUpe3ZhciB0PWUuYXJrb3NlUHJvcHMsbj1lLmhpcFByb3BzLHI9ZS5uYXRpdmVIaXBQcm9wcyxvPWUuY2hhbGxlbmdlVHlwZSxpPWUuaXRlcmF0aW9uLGE9ZS5lcnJvckNvbnRhaW5lck1lc3NhZ2U7cmV0dXJuIG89PT1jdC5OVy5OYXRpdmVBdWRpb3x8bz09PWN0Lk5XLk5hdGl2ZVZpc3VhbD8oMCwkZS5qc3gpKFwiZGl2XCIse1wiZGF0YS1pdGVyYXRpb25cIjppLFwiZGF0YS10ZXN0aWRcIjpcInN3aXRjaC1uYXRpdmUtaGlwXCIsY2hpbGRyZW46ciYmKDAsJGUuanN4KShhRCxkRCh7fSxyKSl9KTpvPT09Y3QuTlcuQXVkaW98fG89PT1jdC5OVy5WaXN1YWw/KDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtaXRlcmF0aW9uXCI6aSxcImRhdGEtdGVzdGlkXCI6XCJzd2l0Y2gtaGlwXCIsY2hpbGRyZW46biYmKDAsJGUuanN4KShxTCxkRCh7fSxuKSl9KTpvPT09Y3QuTlcuRW5mb3JjZW1lbnQ/KDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtaXRlcmF0aW9uXCI6aSxcImRhdGEtdGVzdGlkXCI6XCJzd2l0Y2gtYXJrb3NlXCIsY2hpbGRyZW46dCYmKDAsJGUuanN4KShCTCxkRCh7fSx0KSl9KTpvPT09Y3QuTlcuQmxvY2s/KDAsJGUuanN4KShcImRpdlwiLHtcImRhdGEtdGVzdGlkXCI6XCJzd2l0Y2gtYmxvY2tcIixjaGlsZHJlbjooMCwkZS5qc3gpKGNELHt9KX0pOigwLCRlLmpzeCkoTWsse2Vycm9yQ29kZTphLGNoaWxkcmVuOmF9KX0sZ0Q9e3Nlc3Npb25FeHBpcmVkRXJyb3I6XCJXZSBjb3VsZG4ndCBzZW5kIHRoZSBjb2RlLiBQbGVhc2UgcmVmcmVzaCB5b3VyIGJyb3dzZXIgYW5kIHRyeSBhZ2Fpbi5cIixzZW5kRmFpbGVkRXJyb3I6XCJXZSBjb3VsZG4ndCBzZW5kIHRoZSBjb2RlLiBQbGVhc2UgdHJ5IGFnYWluLlwiLGludmFsaWRQcm9vZkVycm9yOlwiVGhhdCBkb2Vzbid0IG1hdGNoIHRoZSBwaG9uZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHlvdXIgYWNjb3VudC4gVGhlIGNvcnJlY3QgbnVtYmVyIGVuZHMgaW4gezB9LlwiLGhpcEludmFsaWRBbnN3ZXI6XCJUaGUgY2hhcmFjdGVycyB5b3UgdHlwZSBtdXN0IG1hdGNoIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBwaWN0dXJlIG9yIGF1ZGlvLiBQbGVhc2UgdHJ5IGFnYWluLlwiLG5leHRCdXR0b246XCJOZXh0XCIsc29sdmVUaXRsZTpcIkhlbHAgdXMgYmVhdCB0aGUgcm9ib3RzXCIsYmxvY2tUaXRsZTpcIlRyeSBhbm90aGVyIHZlcmlmaWNhdGlvbiBtZXRob2RcIixibG9ja0Rlc2NyaXB0aW9uOlwiVGhhdCB2ZXJpZmljYXRpb24gbWV0aG9kIGlzbid0IHdvcmtpbmcgcmlnaHQgbm93LiBQbGVhc2UgdHJ5IGFub3RoZXIgbWV0aG9kLlwiLGVycm9yQ29udGFpbmVyTWVzc2FnZTpcIlRoZXJlJ3MgYSB0ZW1wb3JhcnkgcHJvYmxlbSB3aXRoIHRoZSBzZXJ2aWNlLiBQbGVhc2UgdHJ5IGFnYWluLiBJZiB5b3UgY29udGludWUgdG8gZ2V0IHRoaXMgbWVzc2FnZSwgdHJ5IGFnYWluIGxhdGVyLlwifTtmdW5jdGlvbiBtRChlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKHI9ci5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gaEQoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/bUQoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtiRChlLHQsblt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6bUQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gYkQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciB5RD1mdW5jdGlvbihlKXt2YXIgdCxuPWUuY2hhbGxlbmdlVmlld1Byb3BzLHI9ZS5mbG93SWQsaT1uLmNoYWxsZW5nZVR5cGUsYT1uLmNvbnRhaW5lcixsPWkhPT1jdC5OVy5CbG9jaz9oRCh7dGl0bGU6e3RpdGxlOmdELnNvbHZlVGl0bGUsdGl0bGVJZDpcImNoYWxsZW5nZVZpZXdUaXRsZVwifX0sYSk6aEQoe3RpdGxlOnt0aXRsZTpnRC5ibG9ja1RpdGxlLHRpdGxlSWQ6XCJTbXNCbG9ja1RpdGxlXCJ9LGRlc2NyaXB0aW9uOntkZXNjcmlwdGlvbjpnRC5ibG9ja0Rlc2NyaXB0aW9uLGRlc2NyaXB0aW9uSWQ6XCJTbXNCbG9ja0Rlc2NyaXB0aW9uXCJ9fSxhKTtyZXR1cm4gcGsoKG51bGw9PT0odD1sLnRpdGxlKXx8dm9pZCAwPT09dD92b2lkIDA6dC50aXRsZSl8fGdELnNvbHZlVGl0bGUsVHQuQ2hhbGxlbmdlLHIse3Nob3dCYWNrQnV0dG9uT25BY3RpdmVWaWV3OiEwfSksKDAsby5jcmVhdGVFbGVtZW50KShkRSxoRChoRCh7fSxsKSx7fSx7a2V5OlwiY2hhbGxlbmdlLXZpZXdcIn0pLCgwLCRlLmpzeCkocEQsaEQoe30sbikpKX0sdkQ9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3ZhciBlPSgwLG8udXNlQ29udGV4dCkoQU8pLnZpZXdTdGF0ZS5jcmVkZW50aWFscy5vdGNDcmVkZW50aWFsLHQ9KHZvaWQgMD09PWU/e3Byb29mOnt0eXBlOkpQLlNNUyxkYXRhOlwiXCIsaXNFbmNyeXB0ZWQ6ITEsaXNOb3BhOiExfX06ZSkucHJvb2Ysbj10LnR5cGUscj10LmRhdGEsaT10LmlzRW5jcnlwdGVkLGE9dC5pc05vcGEsbD1JdC5kZWZhdWx0Lmluc3RhbmNlLmFjdGl2ZUZsYXZvcixzPSgwLG8udXNlQ29udGV4dCkoWnQpLGM9cy5nbG9iYWxTdGF0ZS51c2VyLnVzZXJuYW1lLHU9cy5kaXNwYXRjaFN0YXRlQ2hhbmdlLGQ9KDAsby51c2VDb250ZXh0KShaZSksZj1kLmF1dGhTdGF0ZS5mbG93VG9rZW5WYWx1ZSxwPWQuZGlzcGF0Y2hTdGF0ZUNoYW5nZSxnPSgwLG8udXNlQ29udGV4dCkoU3QpLG09Zy5jaGFsbGVuZ2VTdGF0ZS5waG9uZVJlcE1ldGFkYXRhLGg9Zy5kaXNwYXRjaENoYWxsZW5nZVN0YXRlQ2hhbmdlLGI9YUEoKSx5PXpTKCksdj1pQSgpO3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLnNvbHV0aW9uLG89ZS50eXBlLHM9ZS50b2tlbixkPWUucmVsb2FkSElQO2VBKHtvblN1Y2Nlc3M6ZnVuY3Rpb24oZSl7ZS5mbG93VG9rZW4mJnAoe3R5cGU6TWUuU2V0Rmxvd1Rva2VuVmFsdWUscGF5bG9hZDplLmZsb3dUb2tlbn0pLHUoe3R5cGU6THQuU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yLHBheWxvYWQ6ITF9KSxoKHt0eXBlOnZ0LlNldENvbW1vbkFjdGlvbixwYXlsb2FkOntlcnJvck1lc3NhZ2U6XCJcIn19KSx5KFR0LkNoYWxsZW5nZSxBdyhUdC5PbmVUaW1lQ29kZSksITEse3JlcGxhY2U6ITB9KX0sb25GYWlsdXJlOmZ1bmN0aW9uKGUpe3ZhciB0PWUub3RjU3RhdHVzfHwtMSxuPXYoZSk7ZS5mbG93VG9rZW4mJnAoe3R5cGU6TWUuU2V0Rmxvd1Rva2VuVmFsdWUscGF5bG9hZDplLmZsb3dUb2tlbn0pLHUoe3R5cGU6THQuU2V0U2hvd1Byb2dyZXNzSW5kaWNhdG9yLHBheWxvYWQ6ITF9KSxkJiZkKCksdD09PWx0LmZ0RXJyb3J8fHQ9PT1sdC5tZXRhRGF0YUV4cGlyZWQ/aCh7dHlwZTp2dC5TZXRDb21tb25BY3Rpb24scGF5bG9hZDp7ZXJyb3JNZXNzYWdlOmdELnNlc3Npb25FeHBpcmVkRXJyb3J9fSk6aChuP3t0eXBlOnZ0LlNldENvbW1vbkFjdGlvbixwYXlsb2FkOntlcnJvck1lc3NhZ2U6Z0QuaGlwSW52YWxpZEFuc3dlcn19Ont0eXBlOnZ0LlNldENvbW1vbkFjdGlvbixwYXlsb2FkOntlcnJvck1lc3NhZ2U6Z0Quc2VuZEZhaWxlZEVycm9yfX0pfSx1c2VybmFtZTpjLHByb29mRGF0YTpyLHByb29mVHlwZTpuLHB1cnBvc2U6YT9ydC5ub1Bhc3N3b3JkOnJ0Lm90Y0xvZ2luLGZsb3dUb2tlbjpmLGNoYW5uZWw6b3QubW9iaWxlU21zLGlzRW5jcnlwdGVkOmksY2hhbGxlbmdlU29sdXRpb246dCxjaGFsbGVuZ2VUeXBlOm8sY2hhbGxlbmdlSWQ6cyxjaGFsbGVuZ2VWaWV3U3VwcG9ydGVkOm9BKGwpLHBob25lUmVwTWV0YWRhdGE6bSx0ZWxlbWV0cnlDYWxsYmFjazpifSl9fSgpLHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9UHQoKS5jaGFsbGVuZ2VTdGF0ZSxuPXQudHlwZSxyPXQuZXJyb3JNZXNzYWdlLG89dC5hcmtvc2UsaT10LmhpcDtyZXR1cm57Y2hhbGxlbmdlVHlwZTpuLGFya29zZVByb3BzOntjb25maWc6e2Nvbm5lY3Rpb25EYXRhOm8uZGF0YUV4Y2hhbmdlQmxvYix1cmw6by51cmwsdGltZW91dDpvLnRpbWVvdXR9LHN0cmluZ3M6e2lmcmFtZVRpdGxlOmdELnNvbHZlVGl0bGV9LGVycm9yTWVzc2FnZTpyLG9uVGltZW91dDpmdW5jdGlvbigpe30sb25CYWNrOmZ1bmN0aW9uKCl7fSxvbkxvYWRpbmdTdGF0ZUNoYW5nZTpmdW5jdGlvbigpe30sb25TZXNzaW9uU3RhcnQ6ZnVuY3Rpb24oKXt9LG9uU3VjY2VzczplfSxoaXBQcm9wczp7aW5pdGlhbFR5cGU6bixjb25maWc6e3VybDppLnVybCxtYXJrZXQ6KDAsc3QuTFopKFwibWt0XCIpfSxzdHJpbmdzOnthcmlhTmV4dEJ1dHRvbkxhYmVsOmdELm5leHRCdXR0b24sbmV4dEJ1dHRvbjpnRC5uZXh0QnV0dG9ufSxlcnJvck1lc3NhZ2U6cixvblNlc3Npb25TdGFydDpmdW5jdGlvbigpe30sb25WYWxpZGF0ZTpmdW5jdGlvbigpe30sb25TdWNjZXNzOmV9LGVycm9yQ29udGFpbmVyTWVzc2FnZTpnRC5lcnJvckNvbnRhaW5lck1lc3NhZ2V9fShlKTtyZXR1cm4oMCwkZS5qc3gpKHlELHtjaGFsbGVuZ2VWaWV3UHJvcHM6dCxmbG93SWQ6RXQuTG9naW59KX0sd0Q9ZnVuY3Rpb24oKXtyZXR1cm4oMCwkZS5qc3hzKShCZSx7Y2hpbGRyZW46WygwLCRlLmpzeCkoTmUse3BhdGg6XCIqXCIsZWxlbWVudDooMCwkZS5qc3gpKG1MLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuVXNlcm5hbWUpLGVsZW1lbnQ6KDAsJGUuanN4KShpTCx7fSl9KSwoMCwkZS5qc3gpKE5lLHtwYXRoOkF3KFR0LlBhc3N3b3JkKSxlbGVtZW50OigwLCRlLmpzeCkoSWose30pfSksKDAsJGUuanN4KShOZSx7cGF0aDpBdyhUdC5QaG9uZURpc2FtYmlndWF0aW9uKSxlbGVtZW50OigwLCRlLmpzeCkobkkse30pfSksKDAsJGUuanN4KShOZSx7cGF0aDpBdyhUdC5TaWduSW5PcHRpb25zKSxlbGVtZW50OigwLCRlLmpzeCkoREwse30pfSksKDAsJGUuanN4KShOZSx7cGF0aDpBdyhUdC5FcnJvciksZWxlbWVudDooMCwkZS5qc3gpKHFFLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuSWRwRGlzYW1iaWd1YXRpb24pLGVsZW1lbnQ6KDAsJGUuanN4KShMayx7fSl9KSwoMCwkZS5qc3gpKE5lLHtwYXRoOkF3KFR0LklkcFJlZGlyZWN0KSxlbGVtZW50OigwLCRlLmpzeCkoRmsse30pfSksKDAsJGUuanN4KShOZSx7cGF0aDpBdyhUdC5QdXNoTm90aWZpY2F0aW9ucyksZWxlbWVudDooMCwkZS5qc3gpKHVULHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuQWNjb3VudFBpY2tlciksZWxlbWVudDooMCwkZS5qc3gpKEpULHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuUmVtb3RlQ29ubmVjdENhbmFyeVZhbGlkYXRpb24pLGVsZW1lbnQ6KDAsJGUuanN4KShoVCx7bmV4dFZpZXc6VHQuVXNlcm5hbWV9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuQ3JlZGVudGlhbFBpY2tlciksZWxlbWVudDooMCwkZS5qc3gpKHpFLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuSWRwUmVkaXJlY3RTcGVlZGJ1bXApLGVsZW1lbnQ6KDAsJGUuanN4KShDQSx7fSl9KSwoMCwkZS5qc3gpKE5lLHtwYXRoOkF3KFR0LkZldGNoU2Vzc2lvbnNQcm9ncmVzcyksZWxlbWVudDooMCwkZS5qc3gpKHhrLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuRmlkbyksZWxlbWVudDooMCwkZS5qc3gpKE9rLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuT25lVGltZUNvZGUpLGVsZW1lbnQ6KDAsJGUuanN4KShQaix7fSl9KSwoMCwkZS5qc3gpKE5lLHtwYXRoOkF3KFR0LkNvbmZpcm1TZW5kKSxlbGVtZW50OigwLCRlLmpzeCkoREUse30pfSksKDAsJGUuanN4KShOZSx7cGF0aDpBdyhUdC5Qcm9vZkNvbmZpcm1hdGlvbiksZWxlbWVudDooMCwkZS5qc3gpKHhJLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuQ2hhbGxlbmdlKSxlbGVtZW50OigwLCRlLmpzeCkodkQse30pfSksKDAsJGUuanN4KShOZSx7cGF0aDpBdyhUdC5MZWFybk1vcmVPZmZsaW5lQWNjb3VudCksZWxlbWVudDooMCwkZS5qc3gpKHlMLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuU2VlSG93RGF0YUlzTWFuYWdlZCksZWxlbWVudDooMCwkZS5qc3gpKGpMLHt9KX0pLCgwLCRlLmpzeCkoTmUse3BhdGg6QXcoVHQuQmVuZWZpdHMpLGVsZW1lbnQ6KDAsJGUuanN4KShoRSx7fSl9KSwoMCwkZS5qc3gpKE5lLHtwYXRoOkF3KFR0LkxvZ2luUGFzc2tleUludGVyc3RpdGlhbCksZWxlbWVudDooMCwkZS5qc3gpKGtMLHt9KX0pXX0pfSxTRD1mdW5jdGlvbigpe3JldHVybigwLCRlLmpzeHMpKFhDLHtjaGlsZHJlbjpbKDAsJGUuanN4KShOZSx7cGF0aDpcIipcIixlbGVtZW50OigwLCRlLmpzeCkod0Qse30pfSksKDAsJGUuanN4KShOZSx7cGF0aDpEdCxlbGVtZW50OigwLCRlLmpzeCkoUGsse2hvc3RpbmdGbG93OkV0LkxvZ2lufSl9KV19KX0sUEQ9bmV3IE1hcChbW2N0Lm9GLkZhYnJpYyx3a10sW2N0Lm9GLldpbmRvd3NGYWJyaWMsd2tdLFtjdC5vRi5XaW4xMU9vYmVGYWJyaWMsd2tdLFtjdC5vRi5YYm94LHdrXV0pO2Z1bmN0aW9uIHhEKGUpe1NrLmluaXRpYWxpemUoe2FncmVlbWVudFZpZXdTdHJpbmdzOlBELmdldChlKX0pfXZhciBPRD1mdW5jdGlvbihlKXtpZihlKXJldHVybiBlKCk7dmFyIHQ9SXQuZGVmYXVsdC5pbnN0YW5jZSxuPXQuc2lnbkluTmFtZSxyPXQucG9zdFVzZXJuYW1lO3JldHVybigwLEl0LnNpZ25Jbk5hbWVVc2VyT3B0aW9ucykobnVsbCE9biYmbi51bnNhZmVVbmVzY2FwZWRTdHJpbmc/bjpyKX0sX0Q9ZnVuY3Rpb24oZSx0KXt2YXIgbj0hKGFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdKXx8YXJndW1lbnRzWzJdLHI9YXJndW1lbnRzLmxlbmd0aD4zP2FyZ3VtZW50c1szXTp2b2lkIDA7KDAsSXQuaW5pdEdsb2JhbENvbmZpZykoZSx0LHtpc0hpc3RvcnlTdXBwb3J0ZWQ6bn0pLCR3KGUpLEh3KGUscil9LENEPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0hKGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdKXx8YXJndW1lbnRzWzNdLG89YXJndW1lbnRzLmxlbmd0aD40P2FyZ3VtZW50c1s0XTp2b2lkIDA7X0QoZSx0LHIpLEZtKHQpLHhEKHQpO3ZhciBpPXRuKGUsT0QobyksbiksYT1oaChlKTtyZXR1cm57aW5pdGlhbEdsb2JhbFN0YXRlOmksaW5pdGlhbEhpc3RvcnlTdGF0ZTpCUyxpbml0aWFsQ3VzdG9taXphdGlvblN0YXRlOmF9fSxrRD1uZXcgTWFwKFtbY3Qub0YuRmFicmljLHZMXV0pO2Z1bmN0aW9uIEFEKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBURChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9BRChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0VEKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpBRChPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBFRChlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIGpEPVREKFREKHt9LGF4KSx7fSx7YmFkVXNlcm5hbWU6XCJFbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MsIHBob25lIG51bWJlciwgb3IgU2t5cGUgbmFtZS5cIixpbnZhbGlkTnVtYmVyOlwiVGhlIHBob25lIG51bWJlciB5b3UgZW50ZXJlZCBpc24ndCB2YWxpZC4gWW91ciBwaG9uZSBudW1iZXIgY2FuIGNvbnRhaW4gbnVtYmVycywgc3BhY2VzLCBhbmQgdGhlc2Ugc3BlY2lhbCBjaGFyYWN0ZXJzOiAoICkgWyBdIC4gLSAjICogL1wiLGZlZGVyYXRpb25Ob3RBbGxvd2VkOlwiVHJ5IGEgZGlmZmVyZW50IG9yIG5ldyBhY2NvdW50LiBUaGlzIG9uZSBiZWxvbmdzIHRvIGFuIG9yZ2FuaXphdGlvbiwgc28gaXQgY2FuJ3QgYmUgdXNlZCBoZXJlLlwiLGRpc2FibGVkQWxpYXM6XCJUaGlzIHVzZXJuYW1lIGhhcyBiZWVuIHR1cm5lZC1vZmYgZm9yIHNpZ24gaW4uIFRyeSBhIGRpZmZlcmVudCBvbmUgb3IgdG8gZmluZCB0aGUgYWNjb3VudCB0aGlzIHVzZXJuYW1lIGlzIGFzc29jaWF0ZWQgd2l0aCwgc2VsZWN0IEZvcmdvdCB5b3VyIGFjY291bnQuXCJ9KSxJRD1uZXcgTWFwKFtbY3Qub0YuRmFicmljLHJ4XSxbY3Qub0YuV2luMTFPb2JlRmFicmljLHJ4XSxbY3Qub0YuWGJveCxqRF1dKTtmdW5jdGlvbiBMRChlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gREQoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gREQoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIEREKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gTkQoKXt2YXIgZT1JdC5kZWZhdWx0Lmluc3RhbmNlLHQ9ZS5wb3N0VXNlcm5hbWUsbj1lLnNpZ25JblVzZXJuYW1lLHI9Zk8uaW5zdGFuY2Usbz1yLnByZWZpbGxVc2VybmFtZSxpPXIuenRkVXBuSGludCxhPSgwLHN0LlVjKSh0LnNhZmVIdG1sRXNjYXBlZFN0cmluZ3x8bnx8b3x8aSk7cmV0dXJue3VzZXJuYW1lOigwLEJ0LlUpKG54KGEpLCExKSxkaXNwbGF5VXNlcm5hbWU6KDAsQnQuVSkoYSwhMSl9fXZhciBSRD1mdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxpLGE9Q0QoZSx0LEV0LkxvZ2luLCEwLE5EKSxsPWEuaW5pdGlhbEdsb2JhbFN0YXRlLHM9YS5pbml0aWFsSGlzdG9yeVN0YXRlLGM9YS5pbml0aWFsQ3VzdG9taXphdGlvblN0YXRlO2lmKEd3Lmluc3RhbmNlLmlzU2ltcGxpZmllZENoaWxkQWNjb3VudENyZWF0aW9uKXt2YXIgdT0obj17dXNlckZsb3dUeXBlOlwidWZ0XCJ9LG89e30sT2JqZWN0LmVudHJpZXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9TEQoZSwyKSxuPXRbMF0saT10WzFdLGE9KDAsc3QuTFopKGkscik7YSYmKG9bbl09YSl9KSksbyksZD11LnVzZXJGbG93VHlwZTtsLnVzZXJGbG93VHlwZT1WdChsLnVzZXJGbG93VHlwZSxkKX1wTyhlKSxpPXQsbHguaW5pdGlhbGl6ZSh7Z2N0U3RyaW5nczpJRC5nZXQoaSl9KSxmdW5jdGlvbihlKXt4TC5pbml0aWFsaXplKHtsb2dpblN0cmluZ3M6a0QuZ2V0KGUpfSl9KHQpO3ZhciBmPWpPKGUpLHA9dHQoZSksZz1mdW5jdGlvbihlKXt2YXIgdD1idCh7fSx3dCk7aWYobnVsbCE9ZSYmZS5vQ2FwdGNoYUluZm8pe3ZhciBuPWUub0NhcHRjaGFJbmZvLHI9bi51cmxIaXBDaGFsbGVuZ2Usbz12b2lkIDA9PT1yP1wiXCI6cixpPW4udXJsQXJrb3NlRW5mb3JjZW1lbnQsYT12b2lkIDA9PT1pP1wiXCI6aSxsPW4udXJsRGZwLHM9dm9pZCAwPT09bD9cIlwiOmwsYz1uLnNIaXBGaWQsdT12b2lkIDA9PT1jP1wiXCI6YyxkPW4uc0hpcERjLGY9dm9pZCAwPT09ZD9cIlwiOmQscD1uLnNBcmtvc2VFbmZvcmNlbWVudFBpZCxnPXZvaWQgMD09PXA/XCJcIjpwLG09bi5zQXJrb3NlRW5mb3JjZW1lbnRUaW1lb3V0LGg9dm9pZCAwPT09bT9cIlwiOm0sYj1uLnNDaGFsbGVuZ2VTaWQseT12b2lkIDA9PT1iP1wiXCI6YjtvJiYoeT0oMCxzdC5MWikoXCJpZFwiLG8pKSx0PWJ0KGJ0KHt9LHd0KSx7fSx7Zmxvd0lkOnUsc2NlbmFyaW9JZDp5LHJlcE1hcE1ldGFkYXRhOmJ0KGJ0KHt9LHd0LnJlcE1hcE1ldGFkYXRhKSx7fSx7ZGZwVXJsOnN9KSxhcmtvc2U6YnQoYnQoe30sd3QuYXJrb3NlKSx7fSx7cGFydG5lcklkOmcsdXJsOmEsdGltZW91dDpofSksaGlwOmJ0KGJ0KHt9LHd0LmhpcCkse30se3VybDpvLGRhdGFjZW50ZXI6Zn0pfSl9ZWxzZSBudWxsIT1lJiZlLnVybEhJUFNjcmlwdCYmKHQuaGlwLnVybD1lLnVybEhJUFNjcmlwdCksbnVsbCE9ZSYmZS51cmxBcmtvc2VFbmZvcmNlbWVudCYmKHQuYXJrb3NlLnVybD1lLnVybEFya29zZUVuZm9yY2VtZW50KSxudWxsIT1lJiZlLmlBcmtvc2VFbmZvcmNlbWVudFRpbWVvdXRNcyYmKHQuYXJrb3NlLnRpbWVvdXQ9ZS5pQXJrb3NlRW5mb3JjZW1lbnRUaW1lb3V0TXMudG9TdHJpbmcoKSk7cmV0dXJuIHR9KGUpO3JldHVybntpbml0aWFsQXV0aGVudGljYXRpb25TdGF0ZTpwLGluaXRpYWxHbG9iYWxTdGF0ZTpsLGluaXRpYWxIaXN0b3J5U3RhdGU6cyxpbml0aWFsTG9naW5TdGF0ZTpmLGluaXRpYWxDdXN0b21pemF0aW9uU3RhdGU6Yyxpbml0aWFsQ2hhbGxlbmdlU3RhdGU6Z319KHdpbmRvdy5TZXJ2ZXJEYXRhLGN0Lm9GLkZhYnJpYyksQkQ9UkQuaW5pdGlhbEdsb2JhbFN0YXRlLFVEPVJELmluaXRpYWxMb2dpblN0YXRlLEZEPVJELmluaXRpYWxBdXRoZW50aWNhdGlvblN0YXRlLE1EPVJELmluaXRpYWxIaXN0b3J5U3RhdGUsekQ9UkQuaW5pdGlhbEN1c3RvbWl6YXRpb25TdGF0ZSxIRD1SRC5pbml0aWFsQ2hhbGxlbmdlU3RhdGUsVkQ9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvLGksYT0oZT1mTy5pbnN0YW5jZSx0PWUubG9ja1VzZXJuYW1lLG49ZS5wcmVmaWxsVXNlcm5hbWUscj1lLnp0ZFVwbkhpbnQsbz1WTygpLChpPXRfKCkpLmluaXRpYWxWaWV3SWQ9PT1UdC5Ob25lfHxpLmluaXRpYWxWaWV3SWQ9PT1UdC5Vc2VybmFtZXx8bnx8b3x8dHx8cj9bXCIvXCJdOltBdyhUdC5Vc2VybmFtZSksXCIvXCJdKTtyZXR1cm4oMCwkZS5qc3gpKERlLHtpbml0aWFsRW50cmllczphLGNoaWxkcmVuOigwLCRlLmpzeCkoZXQse2luaXRpYWxTdGF0ZTpGRCxjaGlsZHJlbjooMCwkZS5qc3gpKFFDLHtpbml0aWFsR2xvYmFsU3RhdGU6QkQsaW5pdGlhbEhpc3RvcnlTdGF0ZTpNRCxpbml0aWFsQ3VzdG9taXphdGlvblN0YXRlOnpELGNoaWxkcmVuOigwLCRlLmpzeCkoRU8se2luaXRpYWxTdGF0ZTpVRCxjaGlsZHJlbjooMCwkZS5qc3gpKGp0LHtpbml0aWFsU3RhdGU6SEQsY2hpbGRyZW46KDAsJGUuanN4cykocUMse2NoaWxkcmVuOlsoMCwkZS5qc3gpKFNELHt9KSwoMCwkZS5qc3gpKEFvLHt9KV19KX0pfSl9KX0pfSl9O2kucmVuZGVyKCgwLCRlLmpzeCkoby5TdHJpY3RNb2RlLHtjaGlsZHJlbjooMCwkZS5qc3gpKFZELHt9KX0pLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicm9vdFwiKSl9LDI0NDU3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe3JldHVybiByPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIGV9LHIoZSl9ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gaShlLHQpe2lmKHQmJihcIm9iamVjdFwiPT09cih0KXx8XCJmdW5jdGlvblwiPT10eXBlb2YgdCkpcmV0dXJuIHQ7aWYodm9pZCAwIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfShlKX1mdW5jdGlvbiBhKGUpe3ZhciB0PVwiZnVuY3Rpb25cIj09dHlwZW9mIE1hcD9uZXcgTWFwOnZvaWQgMDtyZXR1cm4gYT1mdW5jdGlvbihlKXtpZihudWxsPT09ZXx8KG49ZSwtMT09PUZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwobikuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIikpKXJldHVybiBlO3ZhciBuO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2lmKHZvaWQgMCE9PXQpe2lmKHQuaGFzKGUpKXJldHVybiB0LmdldChlKTt0LnNldChlLHIpfWZ1bmN0aW9uIHIoKXtyZXR1cm4gbChlLGFyZ3VtZW50cyx1KHRoaXMpLmNvbnN0cnVjdG9yKX1yZXR1cm4gci5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnIsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksYyhyLGUpfSxhKGUpfWZ1bmN0aW9uIGwoZSx0LG4pe3JldHVybiBsPXMoKT9SZWZsZWN0LmNvbnN0cnVjdDpmdW5jdGlvbihlLHQsbil7dmFyIHI9W251bGxdO3IucHVzaC5hcHBseShyLHQpO3ZhciBvPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KGUscikpO3JldHVybiBuJiZjKG8sbi5wcm90b3R5cGUpLG99LGwuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIHMoKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIGM9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGMoZSx0KX1mdW5jdGlvbiB1KGUpe3JldHVybiB1PU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LHUoZSl9bi5kKHQseyRPOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LE5XOmZ1bmN0aW9uKCl7cmV0dXJuIFN9LFBBOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LFZSOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LFk2OmZ1bmN0aW9uKCl7cmV0dXJuIGt9LGdFOmZ1bmN0aW9uKCl7cmV0dXJuIGd9LGh4OmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGtqOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LGt2OmZ1bmN0aW9uKCl7cmV0dXJuIF99LG9GOmZ1bmN0aW9uKCl7cmV0dXJuIE99LHB0OmZ1bmN0aW9uKCl7cmV0dXJuIG19LHVFOmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LHhJOmZ1bmN0aW9uKCl7cmV0dXJuIFB9LHo5OmZ1bmN0aW9uKCl7cmV0dXJuIEN9fSk7dmFyIGQsZixwLGc9e3Bhc3N3b3JkOjExLGZlZGVyYXRpb246MTMsc2hhMToxNSxzdHJvbmdBdXRoOjE4LHN0cm9uZ0F1dGhUb3RwOjE5LGx3YUNvbnNlbnQ6MzAscGFzc3dvcmRJbmxpbmU6MjAscmVtb3RlTkdDOjIxLHNlc3Npb25BcHByb3ZhbDoyMixuZ2M6MjMsb3RjTm9QYXNzd29yZDoyNCxyZW1vdGVDb25uZWN0X25hdGl2ZVBsYXRmb3JtOjI1LG90YzoyNyxrbXNpOjI4LHRyYW5zZmVyVG9rZW5PdGM6MzEsc3NvQ29uc2VudDozMyxwaW5DaGFuZ2U6MzR9LG09e2RvTm90UmVtZW1iZXI6MCxyZW1lbWJlclB3ZDoxLG5vdGhpbmdDaGVja2VkOjN9OyFmdW5jdGlvbihlKXtlW2UuQWNjb3VudF9DaGVja1VwV2l6YXJkPTEwMDIyOF09XCJBY2NvdW50X0NoZWNrVXBXaXphcmRcIixlW2UuUmVzZXRfUGFzc3dvcmQ9MTAwMTAzXT1cIlJlc2V0X1Bhc3N3b3JkXCJ9KGR8fChkPXt9KSksZnVuY3Rpb24oZSl7ZS5ub25lPVwiXCIsZS5kYXJrPVwiZGFya1wiLGUubGlnaHQ9XCJsaWdodFwifShmfHwoZj17fSkpLGZ1bmN0aW9uKGUpe2Uubm9uZT1cIlwiLGUuZGFyaz1cImRhcmtcIixlLmxpZ2h0PVwibGlnaHRcIn0ocHx8KHA9e30pKTt2YXIgaCxiLHksdix3LFMsUCx4LE8sXyxDLGssQTtFcnJvcjshZnVuY3Rpb24oZSl7ZVtlLkxpZ2h0Ym94PTBdPVwiTGlnaHRib3hcIixlW2UuVmVydGljYWxTcGxpdD0xXT1cIlZlcnRpY2FsU3BsaXRcIn0oaHx8KGg9e30pKSxmdW5jdGlvbihlKXtlLmJhY2tncm91bmRBbHdheXNWaXNpYmxlPVwiZXh0LWJhY2tncm91bmQtYWx3YXlzLXZpc2libGVcIixlLmJhY2tncm91bmRJbWFnZT1cImV4dC1iYWNrZ3JvdW5kLWltYWdlXCIsZS5iYWNrZ3JvdW5kT3ZlcmxheT1cImV4dC1iYWNrZ3JvdW5kLW92ZXJsYXlcIixlLmJhbm5lckxvZ289XCJleHQtYmFubmVyLWxvZ29cIixlLmJvaWxlclBsYXRlVGV4dD1cImV4dC1ib2lsZXJwbGF0ZS10ZXh0XCIsZS5idXR0b249XCJleHQtYnV0dG9uXCIsZS5idXR0b25GaWVsZENvbnRhaW5lcj1cImV4dC1idXR0b24tZmllbGQtY29udGFpbmVyXCIsZS5idXR0b25JdGVtPVwiZXh0LWJ1dHRvbi1pdGVtXCIsZS5lcnJvcj1cImV4dC1lcnJvclwiLGUuZGVidWdJdGVtPVwiZXh0LWRlYnVnLWl0ZW1cIixlLmZvb3Rlcj1cImV4dC1mb290ZXJcIixlLmZvb3RlckNvbnRlbnQ9XCJleHQtZm9vdGVyLWNvbnRlbnRcIixlLmZvb3Rlckl0ZW09XCJleHQtZm9vdGVyLWl0ZW1cIixlLmZvb3RlckxpbmtzPVwiZXh0LWZvb3Rlci1saW5rc1wiLGUuaGFzQmFja2dyb3VuZD1cImV4dC1oYXMtYmFja2dyb3VuZFwiLGUuaGVhZGVyPVwiZXh0LWhlYWRlclwiLGUuaGVhZGVyTG9nbz1cImV4dC1oZWFkZXItbG9nb1wiLGUubWlkZGxlPVwiZXh0LW1pZGRsZVwiLGUucHJpbWFyeT1cImV4dC1wcmltYXJ5XCIsZS5zZWNvbmRhcnk9XCJleHQtc2Vjb25kYXJ5XCIsZS5zaWduSW5Cb3g9XCJleHQtc2lnbi1pbi1ib3hcIixlLnZlcnRpY2FsU3BsaXRNYWluU2VjdGlvbj1cImV4dC12ZXJ0aWNhbC1zcGxpdC1tYWluLXNlY3Rpb25cIixlLnZlcnRpY2FsU3BsaXRCYWNrZ3JvdW5kSW1hZ2VDb250YWluZXI9XCJleHQtdmVydGljYWwtc3BsaXQtYmFja2dyb3VuZC1pbWFnZS1jb250YWluZXJcIn0oYnx8KGI9e30pKSxmdW5jdGlvbihlKXtlW2UuR2VuZXJhbEVycm9yPTZlM109XCJHZW5lcmFsRXJyb3JcIixlW2UuQXV0aEZhaWx1cmU9NjAwMV09XCJBdXRoRmFpbHVyZVwiLGVbZS5JbnZhbGlkQXJncz02MDAyXT1cIkludmFsaWRBcmdzXCIsZVtlLkdlbmVyaWM9OGUzXT1cIkdlbmVyaWNcIixlW2UuVGltZW91dD04MDAxXT1cIlRpbWVvdXRcIixlW2UuQWJvcnRlZD04MDAyXT1cIkFib3J0ZWRcIn0oeXx8KHk9e30pKSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0tMV09XCJVbmtub3duXCIsZVtlLkV4aXN0cz0wXT1cIkV4aXN0c1wiLGVbZS5Ob3RFeGlzdD0xXT1cIk5vdEV4aXN0XCIsZVtlLlRocm90dGxlZD0yXT1cIlRocm90dGxlZFwiLGVbZS5FcnJvcj00XT1cIkVycm9yXCIsZVtlLkV4aXN0c0luT3RoZXJNaWNyb3NvZnRJRFA9NV09XCJFeGlzdHNJbk90aGVyTWljcm9zb2Z0SURQXCIsZVtlLkV4aXN0c0JvdGhJRFBzPTZdPVwiRXhpc3RzQm90aElEUHNcIn0odnx8KHY9e30pKSxmdW5jdGlvbihlKXtlLlVua25vd249XCJVbmtub3duXCIsZS5DcmVhdGVBY2NvdW50PVwiQ3JlYXRlQWNjb3VudFwiLGUuU2VuZE90dD1cIlNlbmRPdHRcIixlLkdldE90Yz1cIkdldE90Y1wifSh3fHwodz17fSkpLGZ1bmN0aW9uKGUpe2UuVW5rbm93bj1cInVua25vd25cIixlLkVuZm9yY2VtZW50PVwiZW5mb3JjZW1lbnRcIixlLlNtcz1cInNtc1wiLGUuQXVkaW89XCJhdWRpb1wiLGUuVmlzdWFsPVwidmlzdWFsXCIsZS5CbG9jaz1cImJsb2NrXCIsZS5OYXRpdmVBdWRpbz1cIm5hdGl2ZS1hdWRpb1wiLGUuTmF0aXZlVmlzdWFsPVwibmF0aXZlLXZpc3VhbFwifShTfHwoUz17fSkpLGZ1bmN0aW9uKGUpe2UuQmFja2dyb3VuZENvbG9yPVwiI0ZBRjlGOFwifShQfHwoUD17fSkpLGZ1bmN0aW9uKGUpe2VbZS5QdXNoTm90aWZpY2F0aW9uPTFdPVwiUHVzaE5vdGlmaWNhdGlvblwiLGVbZS5MaXN0U2Vzc2lvbnM9M109XCJMaXN0U2Vzc2lvbnNcIn0oeHx8KHg9e30pKSxmdW5jdGlvbihlKXtlLk5vbmU9XCJub25lXCIsZS5GYWJyaWM9XCJmYWJyaWNcIixlLkZsdWVudD1cImZsdWVudFwiLGUuVHdvVUk9XCJ0d29VaVwiLGUuWGJveD1cInhib3hcIixlLldpbmRvd3NGYWJyaWM9XCJ3aW5kb3dzRmFicmljXCIsZS5XaW4xMU9vYmVGYWJyaWM9XCJ3aW4xMU9vYmVGYWJyaWNcIn0oT3x8KE89e30pKSxmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0tMV09XCJVbmtub3duXCIsZVtlLkxpbmtlZEluPTBdPVwiTGlua2VkSW5cIixlW2UuR2l0SHViPTFdPVwiR2l0SHViXCIsZVtlLkdvb2dsZT0yXT1cIkdvb2dsZVwiLGVbZS5TYW1zdW5nPTNdPVwiU2Ftc3VuZ1wiLGVbZS5GYWNlYm9vaz00XT1cIkZhY2Vib29rXCJ9KF98fChfPXt9KSksZnVuY3Rpb24oZSl7ZVtlLk5vdFRocm90dGxlZD0wXT1cIk5vdFRocm90dGxlZFwiLGVbZS5BYWRUaHJvdHRsZWQ9MV09XCJBYWRUaHJvdHRsZWRcIixlW2UuTXNhVGhyb3R0bGVkPTJdPVwiTXNhVGhyb3R0bGVkXCJ9KEN8fChDPXt9KSksZnVuY3Rpb24oZSl7ZVtlLlVua25vd249MF09XCJVbmtub3duXCIsZVtlLkFkdWx0PTFdPVwiQWR1bHRcIixlW2UuUGFyZW50PTJdPVwiUGFyZW50XCIsZVtlLkNoaWxkPTNdPVwiQ2hpbGRcIixlW2UuQWR1bHRXaXRoQ2hpbGQ9NF09XCJBZHVsdFdpdGhDaGlsZFwifShrfHwoaz17fSkpLGZ1bmN0aW9uKGUpe2VbZS5UYWI9OV09XCJUYWJcIixlW2UuRW50ZXI9MTNdPVwiRW50ZXJcIixlW2UuRXNjYXBlPTI3XT1cIkVzY2FwZVwiLGVbZS5TcGFjZT0zMl09XCJTcGFjZVwiLGVbZS5QYWdlVXA9MzNdPVwiUGFnZVVwXCIsZVtlLlBhZ2VEb3duPTM0XT1cIlBhZ2VEb3duXCIsZVtlLkVuZD0zNV09XCJFbmRcIixlW2UuSG9tZT0zNl09XCJIb21lXCIsZVtlLkFycm93VXA9MzhdPVwiQXJyb3dVcFwiLGVbZS5BcnJvd0Rvd249NDBdPVwiQXJyb3dEb3duXCIsZVtlLldpbktleUxlZnQ9OTFdPVwiV2luS2V5TGVmdFwiLGVbZS5GNj0xMTddPVwiRjZcIixlW2UuR2FtZVBhZEI9MTk2XT1cIkdhbWVQYWRCXCJ9KEF8fChBPXt9KSl9LDI4NzYxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt0LlE9dm9pZCAwO3ZhciByPXdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic2NyaXB0W25vbmNlXVwiKTt0LlE9cj9yLm5vbmNlfHxyLmdldEF0dHJpYnV0ZShcIm5vbmNlXCIpOnZvaWQgMCxuLm5jPXQuUX0sMTM2ODQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtpbml0R2xvYmFsQ29uZmlnOmZ1bmN0aW9uKCl7cmV0dXJuIGd9LHNpZ25Jbk5hbWVVc2VyT3B0aW9uczpmdW5jdGlvbigpe3JldHVybiBwfX0pO3ZhciByPW4oODkzNzEpLG89big1OTE0MiksaT1uKDM4NjI3KSxhPW4oNjQwMSksbD1uKDc5OTM5KTtmdW5jdGlvbiBzKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBjKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP3MoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXt1KGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpzKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIHUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfXZhciBkPXthYWRQb3N0VXJsOlwiXCIsYWxsb3dDYW5jZWw6ITEsYXBpQ2FuYXJ5OlwiXCIsYXBwTmFtZTp7fSxheGlzQnVuZGxlVmVyc2lvbjpcIlwiLGFjdGl2ZUZsYXZvcjpuKDI0NDU3KS5vRi5Ob25lLGJhbm5lckVudmlyb25tZW50OjAsYmFubmVyRW52aXJvbm1lbnRVcmw6XCJcIixiYWNrVXJsOlwiXCIsY2FuYXJ5VG9rZW5OYW1lOlwiY2FuYXJ5XCIsY2FuYXJ5VG9rZW5WYWx1ZTpcIlwiLGNhbmNlbFVybDpcIlwiLGNhcHRjaGFDb25maWc6e2Fya29zZUVuZm9yY2VtZW50UGFydG5lcklkOlwiXCIsYXJrb3NlRW5mb3JjZW1lbnRUaW1lb3V0OlwiXCIscHJvdmlkZXJVcmxzOnthcmtvc2VFbmZvcmNlbWVudFVybDpcIlwiLGhpcENoYWxsZW5nZVVybDpcIlwifSxjaGFsbGVuZ2VTY2VuYXJpb0lkOlwiXCIsaGlwRGM6XCJcIixoaXBGaWQ6XCJcIn0sY2xpZW50RXhwZXJpbWVudFVybDpcIlwiLGNsaWVudElkOlwiXCIsY2hlY2tBdmFpbGFibGVTaWduaW5OYW1lc1VybDpcIlwiLGNoZWNrUHJvb2ZGb3JBbGlhc2VzOiExLGNsaWVudEZsaWdodDpcIlwiLGNvbXBsaWFuY2VRdWVyeVVybDpcIlwiLGNvbnRleHQ6XCJcIixjb3JyZWxhdGlvbklkOlwiXCIsZGVidWdNb2RlVXJsOlwiXCIsZGZwVXJsOlwiXCIsZG9jdW1lbnREaXJlY3Rpb246XCJsdHJcIixlbmNyeXB0ZWRQVUlEOlwiXCIsZW5hYmxlSHVtYW5TZW5zb3JPblNpZ251cDohMCxlbnZpcm9ubWVudDpcIlwiLGVycm9yVGV4dDpcIlwiLGVycm9yVXJsOlwiXCIsZmF2SWNvblVybDpcIlwiLGZpZG9Mb2dpblVybDpcIlwiLGZsb3dUb2tlbk5hbWU6XCJcIixmb3J3YXJkZWRDbGllbnRJZDpcIlwiLGdldE90Y0pzb25Vcmw6XCJcIixoYXNEZWZhdWx0RGFya0JhY2tncm91bmQ6ITEsaGlkZURlYnVnRGV0YWlsczohMSxoaWRlVG9wVmlld0FncmVlbWVudEJhY2tCdXR0b246ITEsaG9zdFBhZ2VJZDpcIlwiLGh1bWFuSWZyYW1lVXJsOlwiaHR0cHM6Ly9odW1hbklmcmFtZS5odG1sXCIsaHVtYW5Db29raWVEb21haW46XCIuc2lnbnVwLmxpdmUtaW50LmNvbVwiLGluaXRpYWxBY3Rpb25JZDowLGluaXRpYWxQYWdlSWQ6MCxpc0NpYW1Vc2VyRmxvdzohMSxpc0NoaW5hRGM6ITEsaXNDbG91ZEJ1aWxkOiExLGlzSG9zdGVkOiExLGlzTm9QYXNzd29yZE9uZVRpbWVDb2RlRGlzYWJsZWQ6ITEsaXNQaG9uZU51bWJlclNpZ251cERpc2FsbG93ZWQ6ITEsaXNSdGxNYXJrZXQ6ITEsbG9jYWxlSWQ6MCxsb2dpblVybDpcIlwiLGxvZ291dFVybDpcIlwiLG1hbmFnZUNvbnNlbnRVcmw6XCJodHRwczovL2FrYS5tcy9NYW5hZ2VDb25zZW50XCIsbWFuYWdlQ3JlZHNVcmw6XCJcIixtYXJrZXQ6XCJcIixtYXhQb2xsaW5nRXJyb3JzOjUsbXNhUG9zdFVybDpcIlwiLG1pY3Jvc29mdFN1cHBvcnRDb21tTWdyVXJsOlwiXCIsbm9QYUJ1YmJsZVZlcnNpb246XCJcIixwb2xsaW5nSW50ZXJ2YWxNczoxZTMscG9sbGluZ1RpbWVvdXRNczo2ZTQscG9zdFVybDpcIlwiLHBvc3RVc2VybmFtZTp7fSxwdWlkOlwiXCIscmVtb3RlQ29ubmVjdEVuYWJsZWQ6ITEscmVzZXRQYXNzd29yZFVybDpcIlwiLHJlc3VtZVBvc3RQYXJhbXM6e30scmVzdW1lVXJsOlwiXCIscmV0dXJuVXJsOlwiXCIsc2NlbmFyaW9JZDowLHNlbmRPdHRVcmw6XCJcIixzZXNzaW9uSWQ6XCJcIixzZXNzaW9uTG9va3VwS2V5OlwiXCIsc2Vzc2lvblN0YXRlVXJsOlwiXCIsc2hvd0J1dHRvbnM6ITEsc2hvd0Nvb2tpZUJhbm5lcjohMSxzaG93Q29weURlYnVnRGV0YWlsc0xpbms6ITEsc2hvd0xvZ291dE9uRm9vdGVyOiExLHNob3dTaWduSW5PcHRpb25zQXNCdXR0b246ITEsc2lnbkluTmFtZTp7fSxzaWduSW5Vc2VybmFtZTpcIlwiLHNpdGVJZDpcIlwiLHNraXBVcmw6XCJcIixzdXBwb3J0V2luZG93c1N0eWxlczohMSxzd2l0Y2hVc2VyVXJsOlwiXCIsdGVsZW1ldHJ5Om5ldyByLkUsdHJhbnNmZXJUb2tlblVybDpcIlwiLHVpRmxhdm9yOjAsdW5hdXRoZW50aWNhdGVkU2Vzc2lvbklkOlwiXCIsaXNIaXN0b3J5U3VwcG9ydGVkOiEwfSxmPW5ldyBvLnIoZCk7dC5kZWZhdWx0PWY7dmFyIHA9ZnVuY3Rpb24oZSl7cmV0dXJue3VzZXJuYW1lOmUsZGlzcGxheVVzZXJuYW1lOmUsaXNVbnNhZmVUZXh0OiExfX07ZnVuY3Rpb24gZyhlLHQsbil7dmFyIG8scyx1LGQ9e307aWYobnVsbCE9ZSYmZS5zZXNzaW9uSWQmJihkLnNlc3Npb25JZD1lLnNlc3Npb25JZCksbnVsbCE9ZSYmZS5jb3JyZWxhdGlvbklkJiYoZC5jb3JyZWxhdGlvbklkPWUuY29ycmVsYXRpb25JZCksbnVsbCE9ZSYmZS5zUE9TVF9Vc2VybmFtZSYmKGQucG9zdFVzZXJuYW1lPSgwLGwuVSkoZS5zUE9TVF9Vc2VybmFtZSkpLG51bGwhPWUmJmUuaXNDaGluYURjJiYoZC5pc0NoaW5hRGM9ZS5pc0NoaW5hRGMpLG51bGwhPWUmJm51bGwhPT0obz1lLmNsaWVudEV2ZW50cykmJnZvaWQgMCE9PW8mJm8udGVsZW1ldHJ5RW5hYmxlZCYmbnVsbCE9PShzPWUuY2xpZW50RXZlbnRzKSYmdm9pZCAwIT09cyYmbnVsbCE9PSh1PXMuYXBwSW5zaWdodHNDb25maWcpJiZ2b2lkIDAhPT11JiZ1Lmluc3RydW1lbnRhdGlvbktleSl7dmFyIHAsZyxtLGg9bmV3IHIuVSxiPSgwLGkueSkobnVsbD09PShwPWUuY2xpZW50RXZlbnRzKXx8dm9pZCAwPT09cHx8bnVsbD09PShnPXAuYXBwSW5zaWdodHNDb25maWcpfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLmluc3RydW1lbnRhdGlvbktleSkseT1udWxsPT09KG09ZS5jbGllbnRFdmVudHMpfHx2b2lkIDA9PT1tP3ZvaWQgMDptLmVuZHBvaW50VXJsO2guaW5pdGlhbGl6ZShjKHtpbnN0cnVtZW50YXRpb25LZXk6Yn0seSYme2VuZHBvaW50VXJsOnl9KSksZC50ZWxlbWV0cnk9aH1pZihudWxsIT1lJiZlLmZJc1JUTE1hcmtldCYmKGQuaXNSdGxNYXJrZXQ9ZS5mSXNSVExNYXJrZXQpLG51bGwhPWUmJmUuc01rdCYmKGQubWFya2V0PWUuc01rdCksbnVsbCE9ZSYmZS5mU2hvd0NvcHlEZWJ1Z0RldGFpbHNMaW5rJiYoZC5zaG93Q29weURlYnVnRGV0YWlsc0xpbms9ZS5mU2hvd0NvcHlEZWJ1Z0RldGFpbHNMaW5rKSxudWxsIT1lJiZlLnVybFNldERlYnVnTW9kZSYmKGQuZGVidWdNb2RlVXJsPWUudXJsU2V0RGVidWdNb2RlKSxudWxsIT1lJiZlLmZJc0hvc3RlZCYmKGQuaXNIb3N0ZWQ9ZS5mSXNIb3N0ZWQpLG51bGwhPWUmJmUuaHBnaWQmJihkLmluaXRpYWxQYWdlSWQ9ZS5ocGdpZCksbnVsbCE9ZSYmZS5ocGdhY3QmJihkLmluaXRpYWxBY3Rpb25JZD1lLmhwZ2FjdCksbnVsbCE9ZSYmZS5hcGlDYW5hcnkmJihkLmFwaUNhbmFyeT1lLmFwaUNhbmFyeSksbnVsbCE9ZSYmZS5mSGlkZVRvcFZpZXdBZ3JlZW1lbnRCYWNrQnV0dG9uJiYoZC5oaWRlVG9wVmlld0FncmVlbWVudEJhY2tCdXR0b249ZS5mSGlkZVRvcFZpZXdBZ3JlZW1lbnRCYWNrQnV0dG9uKSxudWxsIT1lJiZlLmZIYXNCYWNrZ3JvdW5kQ29sb3ImJihkLmhhc0RlZmF1bHREYXJrQmFja2dyb3VuZD1lLmZIYXNCYWNrZ3JvdW5kQ29sb3IpLG51bGwhPWUmJmUuc0FwcE5hbWUmJihkLmFwcE5hbWU9KDAsbC5VKShlLnNBcHBOYW1lKSksbnVsbCE9ZSYmZS5zVW5hdXRoU2Vzc2lvbklEJiYoZC51bmF1dGhlbnRpY2F0ZWRTZXNzaW9uSWQ9ZS5zVW5hdXRoU2Vzc2lvbklELGQuY29ycmVsYXRpb25JZHx8KGQuY29ycmVsYXRpb25JZD1lLnNVbmF1dGhTZXNzaW9uSUQpKSxudWxsIT1lJiZlLmlVaUZsYXZvciYmKGQudWlGbGF2b3I9ZS5pVWlGbGF2b3IpLG51bGwhPWUmJmUuaVNjZW5hcmlvSWQmJihkLnNjZW5hcmlvSWQ9ZS5pU2NlbmFyaW9JZCksbnVsbCE9ZSYmZS51cmxMb2dvdXQmJihkLmxvZ291dFVybD1lLnVybExvZ291dCksbnVsbCE9ZSYmZS51cmxMb2dpbiYmKGQubG9naW5Vcmw9ZS51cmxMb2dpbiksbnVsbCE9ZSYmZS5mSGlkZURlYnVnRGV0YWlscyYmKGQuaGlkZURlYnVnRGV0YWlscz1lLmZIaWRlRGVidWdEZXRhaWxzKSxudWxsIT1lJiZlLnNDdHgmJihkLmNvbnRleHQ9ZS5zQ3R4KSxudWxsIT1lJiZlLnNGVE5hbWUmJihkLmZsb3dUb2tlbk5hbWU9ZS5zRlROYW1lKSxudWxsIT1lJiZlLnNDYW5hcnlUb2tlbk5hbWUmJihkLmNhbmFyeVRva2VuTmFtZT1lLnNDYW5hcnlUb2tlbk5hbWUpLG51bGwhPWUmJmUuY2FuYXJ5P2QuY2FuYXJ5VG9rZW5WYWx1ZT1lLmNhbmFyeTpudWxsIT1lJiZlLnNDYW5hcnkmJihkLmNhbmFyeVRva2VuVmFsdWU9ZS5zQ2FuYXJ5KSxudWxsIT1lJiZlLnVybFBvc3QmJihkLnBvc3RVcmw9ZS51cmxQb3N0KSxudWxsIT1lJiZlLmZTaG93Q29va2llQmFubmVyJiYoZC5zaG93Q29va2llQmFubmVyPWUuZlNob3dDb29raWVCYW5uZXIpLG51bGwhPWUmJmUuZkFsbG93UmVtb3RlQ29ubmVjdCYmKGQucmVtb3RlQ29ubmVjdEVuYWJsZWQ9ISFlLmZBbGxvd1JlbW90ZUNvbm5lY3QpLG51bGwhPWUmJmUudXJsUlUmJihkLnJldHVyblVybD1lLnVybFJVKSxudWxsIT1lJiZlLnVybFRyYW5zZmVyVG9rZW4mJihkLnRyYW5zZmVyVG9rZW5Vcmw9ZS51cmxUcmFuc2ZlclRva2VuKSxudWxsIT1lJiZlLmhwZ2lkP2QuaG9zdFBhZ2VJZD1lLmhwZ2lkLnRvU3RyaW5nKCk6bnVsbCE9ZSYmZS5zUGFnZUlkJiYoZC5ob3N0UGFnZUlkPWUuc1BhZ2VJZCksbnVsbCE9ZSYmZS51cmxDYW5jZWwmJihkLmNhbmNlbFVybD1lLnVybENhbmNlbCksbnVsbCE9ZSYmZS5zRXJyVHh0JiYoZC5lcnJvclRleHQ9ZS5zRXJyVHh0KSxudWxsIT1lJiZlLnVybE1hbmFnZUNyZWRzJiYoZC5tYW5hZ2VDcmVkc1VybD1lLnVybE1hbmFnZUNyZWRzKSxudWxsIT1lJiZlLnVybFJlc2V0UGFzc3dvcmQmJihkLnJlc2V0UGFzc3dvcmRVcmw9ZS51cmxSZXNldFBhc3N3b3JkKSxudWxsIT1lJiZlLnVybFN3aXRjaCYmKGQuc3dpdGNoVXNlclVybD1lLnVybFN3aXRjaCksbnVsbCE9ZSYmZS5zU2lnbmluTmFtZSYmKGQuc2lnbkluTmFtZT0oMCxsLlUpKGUuc1NpZ25pbk5hbWUpKSxudWxsIT1lJiZlLnNTaWduSW5Vc2VybmFtZSYmKGQuc2lnbkluVXNlcm5hbWU9ZS5zU2lnbkluVXNlcm5hbWUpLG51bGwhPWUmJmUuZklzQ2lhbVVzZXJGbG93VXgmJihkLmlzQ2lhbVVzZXJGbG93PSEwKSxudWxsIT1lJiZlLnVybFNlc3Npb25TdGF0ZSYmKGQuc2Vzc2lvblN0YXRlVXJsPWUudXJsU2Vzc2lvblN0YXRlKSxudWxsIT1lJiZlLnNTZXNzaW9uTG9va3VwS2V5JiYoZC5zZXNzaW9uTG9va3VwS2V5PWUuc1Nlc3Npb25Mb29rdXBLZXkpLG51bGwhPWUmJmUuaVBvbGxpbmdJbnRlcnZhbD9kLnBvbGxpbmdJbnRlcnZhbE1zPTFlMyplLmlQb2xsaW5nSW50ZXJ2YWw6bnVsbCE9ZSYmZS5pT3RjUG9sbGluZ0ludGVydmFsJiYoZC5wb2xsaW5nSW50ZXJ2YWxNcz0xZTMqZS5pT3RjUG9sbGluZ0ludGVydmFsKSxudWxsIT1lJiZlLmlQb2xsaW5nVGltZW91dD9kLnBvbGxpbmdUaW1lb3V0TXM9MWUzKmUuaVBvbGxpbmdUaW1lb3V0Om51bGwhPWUmJmUuaU90Y1BvbGxpbmdUaW1lb3V0JiYoZC5wb2xsaW5nVGltZW91dE1zPTFlMyplLmlPdGNQb2xsaW5nVGltZW91dCksbnVsbCE9ZSYmZS5pTWF4UG9sbEVycm9ycyYmKGQubWF4UG9sbGluZ0Vycm9ycz1lLmlNYXhQb2xsRXJyb3JzKSxudWxsIT1lJiZlLnVybFBvc3RBYWQmJihkLmFhZFBvc3RVcmw9ZS51cmxQb3N0QWFkKSxudWxsIT1lJiZlLnVybFBvc3RNc2EmJihkLm1zYVBvc3RVcmw9ZS51cmxQb3N0TXNhKSxudWxsIT1lJiZlLnVybFJlc3VtZSYmKGQucmVzdW1lVXJsPWUudXJsUmVzdW1lKSxudWxsIT1lJiZlLnVybEZpZG9Mb2dpbiYmKGQuZmlkb0xvZ2luVXJsPWUudXJsRmlkb0xvZ2luKSxudWxsIT1lJiZlLnNTaXRlSWQmJihkLnNpdGVJZD1lLnNTaXRlSWQpLG51bGwhPWUmJmUuc0NsaWVudElkJiYoZC5jbGllbnRJZD1lLnNDbGllbnRJZCksbnVsbCE9ZSYmZS5mU2hvd0J1dHRvbnMmJihkLnNob3dCdXR0b25zPWUuZlNob3dCdXR0b25zKSxudWxsIT1lJiZlLm9DYXB0Y2hhSW5mbyl7dmFyIHY9ZS5vQ2FwdGNoYUluZm8sdz12LnVybEhpcENoYWxsZW5nZSxTPXZvaWQgMD09PXc/XCJcIjp3LFA9di51cmxBcmtvc2VFbmZvcmNlbWVudCx4PXZvaWQgMD09PVA/XCJcIjpQLE89di5zSGlwRmlkLF89dm9pZCAwPT09Tz9cIlwiOk8sQz12LnNIaXBEYyxrPXZvaWQgMD09PUM/XCJcIjpDLEE9di5zQXJrb3NlRW5mb3JjZW1lbnRQaWQsVD12b2lkIDA9PT1BP1wiXCI6QSxFPXYuc0Fya29zZUVuZm9yY2VtZW50VGltZW91dCxqPXZvaWQgMD09PUU/XCJcIjpFLEk9di5zQ2hhbGxlbmdlU2lkLEw9dm9pZCAwPT09ST9cIlwiOkk7ZC5jYXB0Y2hhQ29uZmlnPXtwcm92aWRlclVybHM6e2Fya29zZUVuZm9yY2VtZW50VXJsOngsaGlwQ2hhbGxlbmdlVXJsOlN9LGhpcEZpZDpfLGhpcERjOmssYXJrb3NlRW5mb3JjZW1lbnRQYXJ0bmVySWQ6VCxhcmtvc2VFbmZvcmNlbWVudFRpbWVvdXQ6aixjaGFsbGVuZ2VTY2VuYXJpb0lkOkx9fW51bGwhPWUmJmUub1Jlc3VtZVBvc3RQYXJhbXMmJihkLnJlc3VtZVBvc3RQYXJhbXM9KDAsYS5SNCkoZS5vUmVzdW1lUG9zdFBhcmFtcykpLG51bGwhPWUmJmUuZkFsbG93Q2FuY2VsJiYoZC5hbGxvd0NhbmNlbD1lLmZBbGxvd0NhbmNlbCksbnVsbCE9ZSYmZS5zRG9jdW1lbnREaXJlY3Rpb24mJihkLmRvY3VtZW50RGlyZWN0aW9uPWUuc0RvY3VtZW50RGlyZWN0aW9uKSxudWxsIT1lJiZlLnNQVUlEJiYoZC5wdWlkPWUuc1BVSUQpLG51bGwhPWUmJmUuc0VuY3J5cHRlZFBVSUQmJihkLmVuY3J5cHRlZFBVSUQ9ZS5zRW5jcnlwdGVkUFVJRCksbnVsbCE9ZSYmZS5zQ2xpZW50RmxpZ2h0JiYoZC5jbGllbnRGbGlnaHQ9ZS5zQ2xpZW50RmxpZ2h0KSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mU2hvd0xvZ291dE9uRm9vdGVyKSYmKGQuc2hvd0xvZ291dE9uRm9vdGVyPWUuZlNob3dMb2dvdXRPbkZvb3Rlciksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZklzQ2xvdWRCdWlsZCkmJihkLmlzQ2xvdWRCdWlsZD1lLmZJc0Nsb3VkQnVpbGQpLG51bGwhPWUmJmUudXJsR2V0T25lVGltZUNvZGUmJihkLmdldE90Y0pzb25Vcmw9ZS51cmxHZXRPbmVUaW1lQ29kZSksbnVsbCE9ZSYmZS5pUmVxdWVzdExDSUQmJihkLmxvY2FsZUlkPWUuaVJlcXVlc3RMQ0lEKSxudWxsIT1lJiZlLnNGb3J3YXJkZWRDbGllbnRJZCYmKGQuZm9yd2FyZGVkQ2xpZW50SWQ9ZS5zRm9yd2FyZGVkQ2xpZW50SWQpLG51bGwhPWUmJmUuc05vUGFCdWJibGVWZXJzaW9uJiYoZC5ub1BhQnViYmxlVmVyc2lvbj1lLnNOb1BhQnViYmxlVmVyc2lvbiksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZlNob3dTaWduSW5PcHRpb25zQXNCdXR0b24pJiYoZC5zaG93U2lnbkluT3B0aW9uc0FzQnV0dG9uPWUuZlNob3dTaWduSW5PcHRpb25zQXNCdXR0b24pLG51bGwhPWUmJmUuZW52aXJvbm1lbnQmJihkLmVudmlyb25tZW50PWUuZW52aXJvbm1lbnQpLG51bGwhPWUmJmUuaUJhbm5lckVudmlyb25tZW50JiYoZC5iYW5uZXJFbnZpcm9ubWVudD1lLmlCYW5uZXJFbnZpcm9ubWVudCksbnVsbCE9ZSYmZS51cmxFbnZCYW5uZXJMaW5rJiYoZC5iYW5uZXJFbnZpcm9ubWVudFVybD1lLnVybEVudkJhbm5lckxpbmspLG51bGwhPWUmJmUudXJsQmFjayYmKGQuYmFja1VybD1lLnVybEJhY2spLHZvaWQgMCE9PShudWxsPT1lP3ZvaWQgMDplLmZDaGVja1Byb29mRm9yQWxpYXNlcykmJihkLmNoZWNrUHJvb2ZGb3JBbGlhc2VzPWUuZkNoZWNrUHJvb2ZGb3JBbGlhc2VzKSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSXNOb1BhT3RjRGlzYWJsZWQpJiYoZC5pc05vUGFzc3dvcmRPbmVUaW1lQ29kZURpc2FibGVkPWUuZklzTm9QYU90Y0Rpc2FibGVkKSxudWxsIT1lJiZlLnVybENsaWVudEV4cGVyaW1lbnQmJihkLmNsaWVudEV4cGVyaW1lbnRVcmw9ZS51cmxDbGllbnRFeHBlcmltZW50KSx2b2lkIDAhPT0obnVsbD09ZT92b2lkIDA6ZS5mSXNQaG9uZU51bWJlclNpZ251cERpc2FsbG93ZWQpJiYoZC5pc1Bob25lTnVtYmVyU2lnbnVwRGlzYWxsb3dlZD0hIWUuZklzUGhvbmVOdW1iZXJTaWdudXBEaXNhbGxvd2VkKSxudWxsIT1lJiZlLnVybFNlbmRPdHQmJihkLnNlbmRPdHRVcmw9ZS51cmxTZW5kT3R0KSxudWxsIT1lJiZlLnVybENoZWNrQXZhaWxhYmxlU2lnbmluTmFtZXMmJihkLmNoZWNrQXZhaWxhYmxlU2lnbmluTmFtZXNVcmw9ZS51cmxDaGVja0F2YWlsYWJsZVNpZ25pbk5hbWVzKSxlLnVybENvbXBsaWFuY2VRdWVyeSYmKGQuY29tcGxpYW5jZVF1ZXJ5VXJsPWUudXJsQ29tcGxpYW5jZVF1ZXJ5KSxlLnVybERmcCYmKGQuZGZwVXJsPWUudXJsRGZwKSxudWxsIT1lJiZlLnVybE1pY3Jvc29mdFN1cHBvcnRDb21tTWdyJiYoZC5taWNyb3NvZnRTdXBwb3J0Q29tbU1nclVybD1lLnVybE1pY3Jvc29mdFN1cHBvcnRDb21tTWdyKSxuJiZ2b2lkIDAhPT1uLmlzSGlzdG9yeVN1cHBvcnRlZCYmKGQuaXNIaXN0b3J5U3VwcG9ydGVkPW4uaXNIaXN0b3J5U3VwcG9ydGVkKSxudWxsIT1lJiZlLnVybEVycm9yJiYoZC5lcnJvclVybD1lLnVybEVycm9yKSxudWxsIT1lJiZlLnNBeGlzQnVuZGxlVmVyc2lvbiYmKGQuYXhpc0J1bmRsZVZlcnNpb249ZS5zQXhpc0J1bmRsZVZlcnNpb24pLG51bGwhPWUmJmUudXJsRGVmYXVsdEZhdmljb24mJihkLmZhdkljb25Vcmw9ZS51cmxEZWZhdWx0RmF2aWNvbiksdm9pZCAwIT09KG51bGw9PWU/dm9pZCAwOmUuZkVuYWJsZUh1bWFuU2Vuc29yT25TaWdudXApJiYoZC5lbmFibGVIdW1hblNlbnNvck9uU2lnbnVwPWUuZkVuYWJsZUh1bWFuU2Vuc29yT25TaWdudXApLG51bGwhPWUmJmUudXJsSHVtYW5JZnJhbWUmJihkLmh1bWFuSWZyYW1lVXJsPWUudXJsSHVtYW5JZnJhbWUpLG51bGwhPWUmJmUuc0h1bWFuQ29va2llRG9tYWluJiYoZC5odW1hbkNvb2tpZURvbWFpbj1lLnNIdW1hbkNvb2tpZURvbWFpbiksbnVsbCE9ZSYmZS5mU3VwcG9ydFdpbmRvd3NTdHlsZXMmJihkLnN1cHBvcnRXaW5kb3dzU3R5bGVzPWUuZlN1cHBvcnRXaW5kb3dzU3R5bGVzKSxmLmluaXRpYWxpemUoYyhjKHt9LGQpLHt9LHthY3RpdmVGbGF2b3I6dH0pKX19LDIwNjk1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7dDpmdW5jdGlvbigpe3JldHVybiBhfX0pO3ZhciByLG89bigxMzY4NCksaT1uKDIwMTEzKTshZnVuY3Rpb24oZSl7ZS5CbGFua1BhZ2VFcnJvcj1cIkJsYW5rUGFnZUVycm9yXCJ9KHJ8fChyPXt9KSk7dmFyIGE9e2NsaWVudEVycm9yczpbXSxpc1Jlc3BvbnNlRXJyb3I6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWV9LGdldEV4Y2VwdGlvbkRhdGE6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLG8sbCxzPSh0fHx7fSkuZGltZW5zaW9ucyxjPVwiaW5pdGlhbFwiLHU9XCJcIixkPVwiXCIsZj1cIlwiLHA9XCJcIjtlIGluc3RhbmNlb2YgRXJyb3JFdmVudD8oZD0obnVsbD09PShyPWUuZXJyb3IpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLm1lc3NhZ2UpfHxlLm1lc3NhZ2UsdT1ufHwobnVsbD09PShvPWUuZXJyb3IpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLm5hbWUpfHxlLm1lc3NhZ2UsZj0obnVsbD09PShsPWUuZXJyb3IpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLnN0YWNrKXx8XCJcIixwPVwiXCIuY29uY2F0KGUuZmlsZW5hbWUsXCI6XCIpLmNvbmNhdChlLmxpbmVubyxcIjpcIikuY29uY2F0KGUuY29sbm8pKTplIGluc3RhbmNlb2YgRXJyb3I/KGQ9ZS5tZXNzYWdlLHU9bnx8ZS5uYW1lLGY9ZS5zdGFja3x8XCJcIik6KGQ9ZSx1PW58fGUpOyFkfHwtMT09PWQudG9Mb3dlckNhc2UoKS5pbmRleE9mKFwiZmFpbGVkIHRvIGxvYWQgZXh0ZXJuYWwgcmVzb3VyY2VcIikmJi0xPT09ZC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoXCJmYWlsZWQgdG8gbG9hZCByZXNvdXJjZVwiKXx8KGM9XCJDRE4gZG93bmxvYWQgZXJyb3JcIiksYS5jbGllbnRFcnJvcnMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1kfSkpP2M9XCJzdWJzZXF1ZW50XCI6YS5jbGllbnRFcnJvcnMucHVzaChkKTt2YXIgZz17X3RhYmxlOmkuUi5FeGNlcHRpb24sbWVzc2FnZTpkLGVycm9yTmFtZTp1LHN0YWNrOmYsc291cmNlOnAsY3VycmVudFN0YXRlOntlcnJvclR5cGU6Y30sZGltZW5zaW9uczpzfTtpZih0aGlzLmlzUmVzcG9uc2VFcnJvcihlKSl0cnl7Zy5jdXJyZW50U3RhdGUucmVzcG9uc2VCb2R5PUpTT04uc3RyaW5naWZ5KGUucmVzcG9uc2VCb2R5KX1jYXRjaChtKXtnLmN1cnJlbnRTdGF0ZS5yZXNwb25zZUJvZHk9XCJFcnJvciBwYXJzaW5nIHJlc3BvbnNlIGJvZHk6IFwiLmNvbmNhdChtLm1lc3NhZ2UpfXJldHVybiBnfSxpZ25vcmVFeGNlcHRpb246ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZih0KXtpZihuZXcgVVJMKHQpLmhvc3Q9PT13aW5kb3cubG9jYXRpb24uaG9zdClyZXR1cm4hMX1lbHNlIGlmKHZvaWQgMD09PWUuc3RhY2t8fG51bGwhPT0obj1lLnN0YWNrKSYmdm9pZCAwIT09biYmbi5pbmNsdWRlcyh3aW5kb3cubG9jYXRpb24uaG9zdCkpcmV0dXJuITE7cmV0dXJuITB9LGlzRXJyb3JMb2dnZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuXCJpc0xvZ2dlZFwiaW4gZSYmISFlLmlzTG9nZ2VkfSxsb2dFeGNlcHRpb246ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWEuZ2V0RXhjZXB0aW9uRGF0YShlLHQsbik7by5kZWZhdWx0Lmluc3RhbmNlLnRlbGVtZXRyeS5hZGRFdmVudChyKX0sbG9nUGFnZUlzQmxhbmtFcnJvcjpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRXJyb3Ioci5CbGFua1BhZ2VFcnJvciksbj1hLmdldEV4Y2VwdGlvbkRhdGEodCxlKTtvLmRlZmF1bHQuaW5zdGFuY2UudGVsZW1ldHJ5LmFkZEV2ZW50KG4pfX19LDIwMTEzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7R2s6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sSUs6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sUjpmdW5jdGlvbigpe3JldHVybiByfX0pO3ZhciByLG89bigxMzY4NCksaT1mdW5jdGlvbihlKXtyZXR1cm4gZT9cInN0cmluZ1wiPT10eXBlb2YgZT9lOkpTT04uc3RyaW5naWZ5KGUpOlwiXCJ9O2Z1bmN0aW9uIGEoZSl7cmV0dXJue3ZpZXc6ZS5hY3RpdmVWaWV3LGZsb3c6ZS5hY3RpdmVGbG93LGZsYXZvcjplLmFjdGl2ZUZsYXZvcixjb3JyZWxhdGlvbklkOm8uZGVmYXVsdC5pbnN0YW5jZS5jb3JyZWxhdGlvbklkLGhvc3RQYWdlSWQ6by5kZWZhdWx0Lmluc3RhbmNlLmhvc3RQYWdlSWQscHVpZDpvLmRlZmF1bHQuaW5zdGFuY2UucHVpZCxjbGllbnRGbGlnaHQ6by5kZWZhdWx0Lmluc3RhbmNlLmNsaWVudEZsaWdodCxidW5kbGVWZXJzaW9uOm8uZGVmYXVsdC5pbnN0YW5jZS5heGlzQnVuZGxlVmVyc2lvbixjbGllbnRJZDpvLmRlZmF1bHQuaW5zdGFuY2UuY2xpZW50SWR9fSFmdW5jdGlvbihlKXtlLkV4Y2VwdGlvbj1cIklEVVhfQ2xpZW50VGVsZW1ldHJ5X0V4Y2VwdGlvbnNcIixlLlBsdD1cIklEVVhfQ2xpZW50VGVsZW1ldHJ5X1BsdEV2ZW50c1wiLGUuU2VydmljZURpYWc9XCJJRFVYX0NsaWVudFRlbGVtZXRyeV9TZXJ2aWNlRGlhZ1wiLGUuVXNlckFjdGlvbj1cIklEVVhfQ2xpZW50VGVsZW1ldHJ5X1VzZXJBY3Rpb25zXCIsZS5GbGlnaHRBc3NpZ25tZW50cz1cIklEVVhfQ2xpZW50VGVsZW1ldHJ5X0ZsaWdodEFzc2lnbm1lbnRzXCIsZS5BcGk9XCJJRFVYX0NsaWVudFRlbGVtZXRyeV9BcGlFdmVudHNcIn0ocnx8KHI9e30pKX0sNTkxNDI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLG4ucHVzaC5hcHBseShuLHIpfXJldHVybiBufWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI/cihPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2EoZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnIoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19ZnVuY3Rpb24gYShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9bi5kKHQse3I6ZnVuY3Rpb24oKXtyZXR1cm4gbH19KTt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSxhKHRoaXMsXCJpc0luaXRpYWxpemVkXCIsITEpLGEodGhpcyxcImRlZmF1bHRDb25maWdWYWx1ZXNcIix7fSksdGhpcy5jb25maWc9dCx0aGlzLmRlZmF1bHRDb25maWdWYWx1ZXM9byh7fSx0KX12YXIgdCxuLHI7cmV0dXJuIHQ9ZSwobj1be2tleTpcImluaXRpYWxpemVcIix2YWx1ZTpmdW5jdGlvbihlKXtpZih0aGlzLmlzSW5pdGlhbGl6ZWQpdGhyb3cgbmV3IEVycm9yKFwiQ29uZmlnIGFscmVhZHkgaW5pdGlhbGl6ZWRcIik7dGhpcy5pc0luaXRpYWxpemVkPSEwLHRoaXMuY29uZmlnPW8obyh7fSx0aGlzLmNvbmZpZyksZSl9fSx7a2V5OlwiaW5zdGFuY2VcIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25maWd9fSx7a2V5OlwiY2xlYW51cFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb25maWc9dGhpcy5kZWZhdWx0Q29uZmlnVmFsdWVzLHRoaXMuaXNJbml0aWFsaXplZD0hMX19XSkmJmkodC5wcm90b3R5cGUsbiksciYmaSh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksZX0oKX0sMzg2Mjc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHt5OmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7dmFyIHI9XCJkNjhlNTdmNDcxMTQ0ZGYyOWQ5N2UxNjIxZjI3NzRmYi04YzEzZDgyZS0zMDY2LTRiZWItOWI5ZS1jZWZkYmNjYmFkNTYtNzUxMVwiLG89XCI5YmU0Zjk5Yzg3MzU0ZjZlOTRmOGY5OTY2NDU0NWFhMC1iZTg5MGM5ZS1hMGMzLTRlOTMtYTEyYS0wNDBmNjFmZDUxMjAtNzAxM1wiLGk9XCI0ZTAwNDRkNzBiOWQ0ZGUxOWVkMDM5YTdiMTExN2YzNS03NWJlNmI5YS0zOGMzLTQyN2QtYTFhZi0xMTIyNzE0OTAyMDAtNjY1NVwiLGE9XCI2OWFkYzNjNzY4YmQ0ZGMwOGMxOTQxNjEyMTI0OWZjYy02NmYxNjY4YS03OTdiLTQyNDktOTVlMy02YzY2NTE3NjhjMjgtNzI5M1wiLGw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gZT09PXI/dD1pOmU9PT1vJiYodD1hKSx0fX0sNjQwMTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsPT1uKXJldHVybjt2YXIgcixvLGk9W10sYT0hMCxsPSExO3RyeXtmb3Iobj1uLmNhbGwoZSk7IShhPShyPW4ubmV4dCgpKS5kb25lKSYmKGkucHVzaChyLnZhbHVlKSwhdHx8aS5sZW5ndGghPT10KTthPSEwKTt9Y2F0Y2gocyl7bD0hMCxvPXN9ZmluYWxseXt0cnl7YXx8bnVsbD09bi5yZXR1cm58fG4ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fXJldHVybiBpfShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZihcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvKGUsdCl9KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBvKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1uZXcgQXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9bi5kKHQse01QOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LFI0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LFRvOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIGk9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW51bGw7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpeyhlPT09dHx8biYmZS50b0xvd2VyQ2FzZSgpPT09dC50b0xvd2VyQ2FzZSgpKSYmKHI9ZSl9KSkscn0sYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9XCJcIjtyZXR1cm4gZSYmT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obyl7ciYmKHIrPXQpLHIrPW8rbisoZVtvXXx8XCJcIil9KSkscn0sbD1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49cihlLDIpLG89blswXSxpPW5bMV07aSYmXCJzdHJpbmdcIj09dHlwZW9mIGkmJih0W29dPWkpfSkpLHR9fSw1MDAwNTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0IkOmZ1bmN0aW9uKCl7cmV0dXJuIG19LE1XOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LFE6ZnVuY3Rpb24oKXtyZXR1cm4gan0sVTI6ZnVuY3Rpb24oKXtyZXR1cm4gRX0sdl86ZnVuY3Rpb24oKXtyZXR1cm4ga319KTt2YXIgcj1uKDEzNjg0KSxvPW4oMjA2OTUpLGk9bigyMDExMyksYT1uKDI2NjE4KTtmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGw9PW4pcmV0dXJuO3ZhciByLG8saT1bXSxhPSEwLGw9ITE7dHJ5e2ZvcihuPW4uY2FsbChlKTshKGE9KHI9bi5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKHIudmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChzKXtsPSEwLG89c31maW5hbGx5e3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgb319cmV0dXJuIGl9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBzKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO1wiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHMoZSx0KX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHMoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPW5ldyBBcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBjKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiB1KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2MoT2JqZWN0KG4pLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtkKGUsdCxuW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpjKE9iamVjdChuKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGQoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIGYoZSx0LG4scixvLGksYSl7dHJ5e3ZhciBsPWVbaV0oYSkscz1sLnZhbHVlfWNhdGNoKGMpe3JldHVybiB2b2lkIG4oYyl9bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBwKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8pe3ZhciBpPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBhKGUpe2YoaSxyLG8sYSxsLFwibmV4dFwiLGUpfWZ1bmN0aW9uIGwoZSl7ZihpLHIsbyxhLGwsXCJ0aHJvd1wiLGUpfWEodm9pZCAwKX0pKX19dmFyIGc9XCJSZXF1ZXN0RXJyb3JcIixtPVwianNvbiBwYXJzZSBmYWlsZWRcIixoPVwicmVxdWVzdCBmYWlsZWRcIjtmdW5jdGlvbiBiKGUpe3IuZGVmYXVsdC5pbnN0YW5jZS5hcGlDYW5hcnk9ZX1mdW5jdGlvbiB5KGUsdCxuKXt2YXIgbz1yLmRlZmF1bHQuaW5zdGFuY2UudGVsZW1ldHJ5LGE9dC5hcGlOYW1lLGw9dC5uZXR3b3JrQ2FsbFN0YXJ0VGltZSxzPXQubmV0d29ya0NhbGxFbmRUaW1lLGM9dC5wcm9jZXNzaW5nU3RhcnRUaW1lO28uYWRkRXZlbnQoe190YWJsZTppLlIuQXBpLGFwaU5hbWU6YSxuZXR3b3JrRHVyYXRpb246cy5nZXRUaW1lKCktbC5nZXRUaW1lKCkscmVzcG9uc2VDb2RlOmUuc3RhdHVzLHRvdGFsUHJvY2Vzc2luZ1RpbWU6KG5ldyBEYXRlKS5nZXRUaW1lKCktYy5nZXRUaW1lKCksZGltZW5zaW9uczoobnVsbD09bj92b2lkIDA6bi5kaW1lbnNpb25zKXx8e319KX12YXIgdj1mdW5jdGlvbigpe3ZhciBlPXAocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIG4scixvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbj0hMSxyPThlMyxvPVwiUmVxdWVzdCBGYWlsZWQgLS0gTm8gUmVzcG9uc2UgZnJvbSBTZXJ2ZXJcIixlLm5leHQ9NSx0LmNsb25lKCkudGV4dCgpO2Nhc2UgNTppPWUuc2VudCxlLnQwPXQuc3RhdHVzVGV4dCxlLm5leHQ9XCJ0aW1lb3V0XCI9PT1lLnQwPzk6XCJhYm9ydFwiPT09ZS50MD8xMzpcImVycm9yXCI9PT1lLnQwPzE2OlwicGFyc2VyZXJyb3JcIj09PWUudDA/MTg6MjE7YnJlYWs7Y2FzZSA5OnJldHVybiByPTgwMDEsbz1cIlRpbWVvdXQgRXJyb3JcIixuPSEwLGUuYWJydXB0KFwiYnJlYWtcIiwyMik7Y2FzZSAxMzpyZXR1cm4gcj04MDAyLG89XCJBYm9ydGVkXCIsZS5hYnJ1cHQoXCJicmVha1wiLDIyKTtjYXNlIDE2OnJldHVybiB0LnN0YXR1cz49NDAwJiYobj0hMCksZS5hYnJ1cHQoXCJicmVha1wiLDIyKTtjYXNlIDE4OnJldHVybiBvPVwiVW5hYmxlIHRvIHBhcnNlIHJlc3BvbnNlXCIsbj0hMCxlLmFicnVwdChcImJyZWFrXCIsMjIpO2Nhc2UgMjE6cmV0dXJuIGUuYWJydXB0KFwiYnJlYWtcIiwyMik7Y2FzZSAyMjpyZXR1cm4gZS5hYnJ1cHQoXCJyZXR1cm5cIix7Y29kZTpyLG1lc3NhZ2U6byxkZWJ1Z01lc3NhZ2U6XCIocmVzcG9uc2Uuc3RhdHVzIFwiLmNvbmNhdCh0LnN0YXR1cyxcIikgcmVzcG9uc2UudGV4dCBcIikuY29uY2F0KGkpLGlzRmF0YWw6bn0pO2Nhc2UgMjM6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx3PWZ1bmN0aW9uKCl7dmFyIGU9cChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocj01MDA9PT10LnN0YXR1cz9uOnt9LGUudDA9ci5lcnJvcixlLnQwKXtlLm5leHQ9NjticmVha31yZXR1cm4gZS5uZXh0PTUsdih0KTtjYXNlIDU6ci5lcnJvcj1lLnNlbnQ7Y2FzZSA2OnJldHVybiBlLmFicnVwdChcInJldHVyblwiLHIpO2Nhc2UgNzpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksUz1mdW5jdGlvbigpe3ZhciBlPXAocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUodCxuLHIpe3ZhciBpLGE7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZigoaT11KHt9LG4pKS5uZXR3b3JrQ2FsbEVuZFRpbWU9bmV3IERhdGUsdC5vayl7ZS5uZXh0PTc7YnJlYWt9dGhyb3cgYT1uZXcgRXJyb3IoaCksby50LmxvZ0V4Y2VwdGlvbihhLHIsZyksYS5yZXNwb25zZT10LGE7Y2FzZSA3OnJldHVybiB5KHQsaSxyKSxlLmFicnVwdChcInJldHVyblwiLHQpO2Nhc2UgOTpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKTtmdW5jdGlvbiBQKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sbj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXSYmYXJndW1lbnRzWzJdLG89ci5kZWZhdWx0Lmluc3RhbmNlLGk9by5pbml0aWFsQWN0aW9uSWQsYT1vLmluaXRpYWxQYWdlSWQsbD1vLmFwaUNhbmFyeSxzPW8uY29ycmVsYXRpb25JZCxjPW8uc2Vzc2lvbklkLGQ9e2hwZ2lkOmEudG9TdHJpbmcoKSxocGdhY3Q6aS50b1N0cmluZygpfTtyZXR1cm4gbnx8KGQuQWNjZXB0PVwiYXBwbGljYXRpb24vanNvblwiLHQmJmwmJihkLmNhbmFyeT1sKSkscyYmKGQuY29ycmVsYXRpb25JZD1zLGRbXCJjbGllbnQtcmVxdWVzdC1pZFwiXT1zKSxjJiYoZC5zZXNzaW9uSWQ9YyksdSh1KHt9LGQpLGUpfXZhciB4PWZ1bmN0aW9uKCl7dmFyIGU9cChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByLGkscyxjLGQsZixwO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHI9e2FwaU5hbWU6bi5hcGlOYW1lfHx0LHByb2Nlc3NpbmdTdGFydFRpbWU6bi5wcm9jZXNzaW5nU3RhcnRUaW1lfHxuZXcgRGF0ZSxuZXR3b3JrQ2FsbFN0YXJ0VGltZTpuZXcgRGF0ZSxuZXR3b3JrQ2FsbEVuZFRpbWU6bmV3IERhdGV9LGk9dSh7fSxuKSxzPSExLGUubmV4dD01LGEuTC5ydW5CZWZvcmVSZXF1ZXN0KHQsaSk7Y2FzZSA1OnJldHVybiBjPWUuc2VudCxkPWwoYywyKSxmPWRbMF0scD1kWzFdLGUuYWJydXB0KFwicmV0dXJuXCIsZmV0Y2goZixwKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUyhlLHIsbnVsbD09bj92b2lkIDA6bi50ZWxlbWV0cnlTdGF0ZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe2lmKGUubWVzc2FnZT09PWgpdGhyb3cgZTt2YXIgdD1uZXcgRXJyb3Iocz9cInJlcXVlc3QgdGltZW91dFwiOlwibmV0d29yayBlcnJvclwiKTt0aHJvdyBvLnQubG9nRXhjZXB0aW9uKHQsbnVsbD09bj92b2lkIDA6bi50ZWxlbWV0cnlTdGF0ZSxnKSx0fSkpKTtjYXNlIDEwOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxPPXtjcmVkZW50aWFsczpcInNhbWUtb3JpZ2luXCJ9LF89dSh1KHt9LE8pLHt9LHttZXRob2Q6XCJQT1NUXCJ9KSxDPXUodSh7fSxPKSx7fSx7bWV0aG9kOlwiR0VUXCJ9KSxrPWZ1bmN0aW9uKCl7dmFyIGU9cChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIseCh0LHUodSh1KHt9LF8pLG4pLHt9LHtoZWFkZXJzOlAobnVsbD09bj92b2lkIDA6bi5oZWFkZXJzLG51bGw9PW4/dm9pZCAwOm4udXNlQXBpQ2FuYXJ5KX0pKSk7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxBPWZ1bmN0aW9uKCl7dmFyIGU9cChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByLGksYSxsLHMsYyxkLGY7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4ocj11KHt9LG4pKS5oZWFkZXJzPXUodSh7fSxyLmhlYWRlcnMpLHt9LHtcIkNvbnRlbnQtdHlwZVwiOlwiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOFwifSksaT1udWxsLGE9e30sbD0hMSxzPSExLGM9ITEsZD1udWxsLGUucHJldj04LGUubmV4dD0xMSxrKHQscik7Y2FzZSAxMTppPWUuc2VudCxlLm5leHQ9MTg7YnJlYWs7Y2FzZSAxNDplLnByZXY9MTQsZS50MD1lLmNhdGNoKDgpLGw9ITAsZS50MCBpbnN0YW5jZW9mIEVycm9yJiYoZD1lLnQwKS5yZXNwb25zZSYmKGk9ZC5yZXNwb25zZSk7Y2FzZSAxODppZighaSl7ZS5uZXh0PTMwO2JyZWFrfXJldHVybiBlLnByZXY9MTksZS5uZXh0PTIyLGkuanNvbigpO2Nhc2UgMjI6YT1lLnNlbnQsYz0hMCxlLm5leHQ9MzA7YnJlYWs7Y2FzZSAyNjplLnByZXY9MjYsZS50MT1lLmNhdGNoKDE5KSxzPSEwLGw9ITA7Y2FzZSAzMDppZighbCl7ZS5uZXh0PTM2O2JyZWFrfXRocm93IGY9cz9tOmgsZHx8KGQ9bmV3IEVycm9yKGYpKSxpJiZjJiYoZC5yZXNwb25zZUJvZHk9YSkscyYmby50LmxvZ0V4Y2VwdGlvbihkLG51bGw9PW4/dm9pZCAwOm4udGVsZW1ldHJ5U3RhdGUsZyksZDtjYXNlIDM2OnJldHVybiBlLmFicnVwdChcInJldHVyblwiLGEpO2Nhc2UgMzc6Y2FzZVwiZW5kXCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzgsMTRdLFsxOSwyNl1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxUPWZ1bmN0aW9uKCl7dmFyIGU9cChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByLG8saSxhLGw7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gcj1udWxsLG89ITEsaT17fSxlLnByZXY9MyxlLm5leHQ9NixBKHQsbik7Y2FzZSA2OihpPWUuc2VudCkuZXJyb3ImJihvPSEwKSxlLm5leHQ9MTQ7YnJlYWs7Y2FzZSAxMDplLnByZXY9MTAsZS50MD1lLmNhdGNoKDMpLG89ITAsZS50MCBpbnN0YW5jZW9mIEVycm9yJiYocj1lLnQwKTtjYXNlIDE0OmlmKCFvKXtlLm5leHQ9MjQ7YnJlYWt9aWYocnx8KHI9bmV3IEVycm9yKGgpKSxpJiYoKGw9cikucmVzcG9uc2VCb2R5fHwobC5yZXNwb25zZUJvZHk9aSkpLCFyLnJlc3BvbnNlfHwhci5yZXNwb25zZUJvZHl8fG51bGwhPT0oYT1yLnJlc3BvbnNlQm9keSkmJnZvaWQgMCE9PWEmJmEuZXJyb3Ipe2UubmV4dD0yMTticmVha31yZXR1cm4gZS5uZXh0PTIwLHcoci5yZXNwb25zZSxyLnJlc3BvbnNlQm9keSk7Y2FzZSAyMDpyLnJlc3BvbnNlQm9keT1lLnNlbnQ7Y2FzZSAyMTp0aHJvdyByO2Nhc2UgMjQ6aS5hcGlDYW5hcnkmJihiKGkuYXBpQ2FuYXJ5KSxkZWxldGUgaS5hcGlDYW5hcnkpO2Nhc2UgMjU6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIsaSk7Y2FzZSAyNjpjYXNlXCJlbmRcIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMywxMF1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxFPWZ1bmN0aW9uKCl7dmFyIGU9cChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KFwicmV0dXJuXCIseCh0LHUodSh1KHt9LEMpLG4pLHt9LHtoZWFkZXJzOlAobnVsbD09bj92b2lkIDA6bi5oZWFkZXJzLG51bGw9PW4/dm9pZCAwOm4udXNlQXBpQ2FuYXJ5KX0pKSk7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxqPWZ1bmN0aW9uKCl7dmFyIGU9cChyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSh0LG4pe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHgodCx1KHUoe30sQyksbikpO2Nhc2UgMjpyZXR1cm4gcj1lLnNlbnQsZS5hYnJ1cHQoXCJyZXR1cm5cIixyLnRleHQoKSk7Y2FzZSA0OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0sMjY2MTg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbD09bilyZXR1cm47dmFyIHIsbyxpPVtdLGE9ITAsbD0hMTt0cnl7Zm9yKG49bi5jYWxsKGUpOyEoYT0ocj1uLm5leHQoKSkuZG9uZSkmJihpLnB1c2goci52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7YT0hMCk7fWNhdGNoKHMpe2w9ITAsbz1zfWZpbmFsbHl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX1yZXR1cm4gaX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZighZSlyZXR1cm47aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG8oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7XCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSk7aWYoXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gbyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9bmV3IEFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fW4uZCh0LHtMOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIHQsbixyO2lmKGZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX0odGhpcyxlKSxyPVtdLChuPVwicmVxSW50ZXJjZXB0b3JzXCIpaW4odD10aGlzKT9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtuXT1yLGUuaW5zdGFuY2UpdGhyb3cgbmV3IEVycm9yKFwiRmV0Y2hSZXF1ZXN0SW50ZXJjZXB0b3I6IEluc3RhbnRpYXRpb24gZmFpbGVkOiBVc2UgRmV0Y2hSZXF1ZXN0SW50ZXJjZXB0b3IuZ2V0SW5zdGFuY2UoKSBpbnN0ZWFkIG9mIG5ldy5cIil9dmFyIHQsbixvO3JldHVybiB0PWUsbz1be2tleTpcImdldEluc3RhbmNlXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZS5pbnN0YW5jZXx8KGUuaW5zdGFuY2U9bmV3IGUpLGUuaW5zdGFuY2V9fV0sKG49W3trZXk6XCJvblJlcXVlc3RcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5yZXFJbnRlcmNlcHRvcnMucHVzaCh7aW50ZXJjZXB0b3I6ZX0pLGV9fSx7a2V5OlwicmVtb3ZlSW50ZXJjZXB0b3JcIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcUludGVyY2VwdG9ycz10aGlzLnJlcUludGVyY2VwdG9ycy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmludGVyY2VwdG9yIT09ZX0pKX19LHtrZXk6XCJyZXNldFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5yZXFJbnRlcmNlcHRvcnM9W119fSx7a2V5OlwicnVuQmVmb3JlUmVxdWVzdFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPWUsbz10LGk9MDtpPHRoaXMucmVxSW50ZXJjZXB0b3JzLmxlbmd0aDtpKz0xKXt2YXIgYT1yKHRoaXMucmVxSW50ZXJjZXB0b3JzW2ldLmludGVyY2VwdG9yKG4sbyksMik7bj1hWzBdfHxuLG89YVsxXXx8b31yZXR1cm5bbixvXX19XSkmJmkodC5wcm90b3R5cGUsbiksbyYmaSh0LG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwicHJvdG90eXBlXCIse3dyaXRhYmxlOiExfSksZX0oKS5nZXRJbnN0YW5jZSgpfSw5NDU1NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0ViOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9LEtrOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LExaOmZ1bmN0aW9uKCl7cmV0dXJuIHh9LE5pOmZ1bmN0aW9uKCl7cmV0dXJuIE99LFBrOmZ1bmN0aW9uKCl7cmV0dXJuIFB9LFNMOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LFRwOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LFVjOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LFo3OmZ1bmN0aW9uKCl7cmV0dXJuIG99LGF1OmZ1bmN0aW9uKCl7cmV0dXJuIF99LGZDOmZ1bmN0aW9uKCl7cmV0dXJuIFN9LGZ5OmZ1bmN0aW9uKCl7cmV0dXJuIG19LHZNOmZ1bmN0aW9uKCl7cmV0dXJuIGd9fSk7dmFyIHI9big2NDAxKTtmdW5jdGlvbiBvKGUpe3ZhciB0PWU7aWYoZSlmb3IodmFyIG49MDtuPChhcmd1bWVudHMubGVuZ3RoPD0xPzA6YXJndW1lbnRzLmxlbmd0aC0xKTtuKz0xKXQ9dC5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXFxce1wiLmNvbmNhdChuLFwiXFxcXH1cIiksXCJnXCIpLG4rMTwxfHxhcmd1bWVudHMubGVuZ3RoPD1uKzE/dm9pZCAwOmFyZ3VtZW50c1tuKzFdKTtyZXR1cm4gdH12YXIgaT1mdW5jdGlvbihlKXtyZXR1cm4gZS5pbmNsdWRlcyhcIj9cIik/ZS5zbGljZSgwLGUuaW5kZXhPZihcIj9cIikpOmV9LGE9e1wiJlwiOlwiJmFtcDtcIixcIjxcIjpcIiZsdDtcIixcIj5cIjpcIiZndDtcIiwnXCInOlwiJnF1b3Q7XCIsXCInXCI6XCImIzM5O1wifSxsPXtcIiZhbXA7XCI6XCImXCIsXCImbHQ7XCI6XCI8XCIsXCImZ3Q7XCI6XCI+XCIsXCImcXVvdDtcIjonXCInLFwiJiMzOTtcIjpcIidcIn0scz0vWyY8PlwiJ10vZyxjPVJlZ0V4cChzLnNvdXJjZSksdT0vJig/OmFtcHxsdHxndHxxdW90fCMzOSk7L2csZD1SZWdFeHAodS5zb3VyY2UpLGY9ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmMudGVzdChlKT9lLnJlcGxhY2UocywoZnVuY3Rpb24oZSl7cmV0dXJuIGFbZV19KSk6ZX0scD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZC50ZXN0KGUpP2UucmVwbGFjZSh1LChmdW5jdGlvbihlKXtyZXR1cm4gbFtlXX0pKTplfTtmdW5jdGlvbiBnKGUsdCxuLHIsbyl7dmFyIGk9e307cmV0dXJuIGUmJmUuc3BsaXQodCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9ZS5zcGxpdChuKSxhPXRbMF07byYmKGE9byhhKSksMT09PXQubGVuZ3RoP2lbYV09bnVsbDppW2FdPXI/dC5zbGljZSgxKTp0LnNsaWNlKDEpLmpvaW4obil9fSkpLGl9ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpfXZhciBoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUhPT10P1wiXCIuY29uY2F0KGUsXCIgKFwiKS5jb25jYXQodCxcIilcIik6ZX0sYj1mdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtuLmlubmVySFRNTD1lO2Zvcih2YXIgcj1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYVwiKSxvPXIubGVuZ3RoLGk9by0xO2k+PTA7aS09MSl7dmFyIGE9cltpXSxsPWEuaW5uZXJUZXh0LHM9YS5wcm90b2NvbCxjPSExO2lmKFwibWFpbHRvOlwiPT09c3x8XCJ0ZWw6XCI9PT1zP3Q/Yz0hMDpsPWgobCxhLnBhdGhuYW1lKTpsPWgobCxhLmdldEF0dHJpYnV0ZShcImhyZWZcIikpLCFjKXt2YXIgdSxkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2QuaW5uZXJUZXh0PWwsbnVsbD09PSh1PWEucGFyZW50Tm9kZSl8fHZvaWQgMD09PXV8fHUucmVwbGFjZUNoaWxkKGQsYSl9fXJldHVybiBuLmlubmVySFRNTH0seT1mdW5jdGlvbihlKXt2YXIgdD1lLG49bnVsbCxyPW51bGw7aWYoZSl7dmFyIG89ZS5pbmRleE9mKFwiP1wiKSxpPWUuaW5kZXhPZihcIiNcIik7LTEhPT1pJiYoLTE9PT1vfHxpPG8pPyh0PWUuc3Vic3RyaW5nKDAsaSkscj1nKGUuc3Vic3RyaW5nKGkrMSksXCImXCIsXCI9XCIpKTotMSE9PW8mJi0xPT09aT8odD1lLnN1YnN0cmluZygwLG8pLG49ZyhlLnN1YnN0cmluZyhvKzEpLFwiJlwiLFwiPVwiKSk6LTEhPT1vJiYtMSE9PWkmJih0PWUuc3Vic3RyaW5nKDAsbyksbj1nKGUuc3Vic3RyaW5nKG8rMSxpKSxcIiZcIixcIj1cIikscj1nKGUuc3Vic3RyaW5nKGkrMSksXCImXCIsXCI9XCIpKX1yZXR1cm57b3JpZ2luQW5kUGF0aDp0LHF1ZXJ5Om4sZnJhZ21lbnQ6cn19LHY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcmlnaW5BbmRQYXRofHxcIlwiO3JldHVybiBlLnF1ZXJ5JiYodCs9XCI/XCIuY29uY2F0KCgwLHIuTVApKGUucXVlcnksXCImXCIsXCI9XCIpKSksZS5mcmFnbWVudCYmKHQrPVwiI1wiLmNvbmNhdCgoMCxyLk1QKShlLmZyYWdtZW50LFwiJlwiLFwiPVwiKSkpLHR9LHc9ZnVuY3Rpb24oZSx0KXtpZihlJiZ0LnNpemUpe3ZhciBuPXkoZSkscj1uLnF1ZXJ5fHx7fTtpZihudWxsIT09cilyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlLHQpe3JbdF09ZX0pKSxuLnF1ZXJ5PXIsdihuKX1yZXR1cm4gZX0sUz1mdW5jdGlvbihlLHQpe3ZhciBuPW5ldyBVUkxTZWFyY2hQYXJhbXMoZSkscj1uZXcgVVJMKHQpO3JldHVybiBuLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7ci5zZWFyY2hQYXJhbXMuaGFzKHQpfHxyLnNlYXJjaFBhcmFtcy5zZXQodCxlKX0pKSxyLmhyZWZ9LFA9ZnVuY3Rpb24oZSx0KXt2YXIgbj15KGUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe24ucXVlcnk9bi5xdWVyeXx8e307dmFyIHQ9KDAsci5Ubykobi5xdWVyeSxlLCEwKTt0JiZkZWxldGUgbi5xdWVyeVt0XX0pKSx2KG4pfSx4PWZ1bmN0aW9uKGUsdCl7dmFyIG49dDtufHxcIlwiPT09bnx8KG49d2luZG93LmxvY2F0aW9uLnNlYXJjaCk7dmFyIG89eShuKTtvLnF1ZXJ5PW8ucXVlcnl8fHt9O3ZhciBpPSgwLHIuVG8pKG8ucXVlcnksZSwhMCk7cmV0dXJuIGk/by5xdWVyeVtpXTpcIlwifSxPPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXkoZSksaT1vLnF1ZXJ5fHx7fSxhPVwic3RyaW5nXCI9PXR5cGVvZiB0P2codCxcIiZcIixcIj1cIik6dDtvLnF1ZXJ5PU9iamVjdC5rZXlzKGEpLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVtuP3QudG9Mb3dlckNhc2UoKTp0XT1hW3RdfHxudWxsLGV9KSxpKTt2YXIgbD12KG8pO3JldHVybiByJiZsLmxlbmd0aD5yP2U6bH0sXz1mdW5jdGlvbihlKXtyZXR1cm4geShlKS5vcmlnaW5BbmRQYXRofX0sNzk5Mzk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtVOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGg6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTt2YXIgcj1uKDk0NTU0KTtmdW5jdGlvbiBvKGUpe3JldHVyblwic3RyaW5nXCIhPXR5cGVvZiBlfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXSxuPXt9O3JldHVybiBuLnNhZmVIdG1sRXNjYXBlZFN0cmluZz10P2U6KDAsci5UcCkoZSksbi51bnNhZmVVbmVzY2FwZWRTdHJpbmc9dD8oMCxyLlVjKShlKTplLG59fSwzMjEzMTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse0U6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGUucHJvdG90eXBlLmFkZEV2ZW50PWZ1bmN0aW9uKGUpe2NvbnNvbGUubG9nKFwiTG9nZ2VkIGV2ZW50OiBcIi5jb25jYXQoSlNPTi5zdHJpbmdpZnkoZSx2b2lkIDAsMikpKX0sZX0oKX0sODkzNzE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtFOmZ1bmN0aW9uKCl7cmV0dXJuIHIuRX0sVTpmdW5jdGlvbigpe3JldHVybiBvLlV9fSk7dmFyIHI9bigzMjEzMSksbz1uKDI0MDI5KX0sMjQwMjk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtVOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7dmFyIHIsbz1mdW5jdGlvbigpe3JldHVybiBvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuPTEscj1hcmd1bWVudHMubGVuZ3RoO248cjtuKyspZm9yKHZhciBvIGluIHQ9YXJndW1lbnRzW25dKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG8pJiYoZVtvXT10W29dKTtyZXR1cm4gZX0sby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9OyFmdW5jdGlvbihlKXtlW2UuTm90U3RhcnRlZD0wXT1cIk5vdFN0YXJ0ZWRcIixlW2UuSW5Qcm9ncmVzcz0xXT1cIkluUHJvZ3Jlc3NcIixlW2UuRG9uZT0yXT1cIkRvbmVcIixlW2UuRmFpbGVkPTNdPVwiRmFpbGVkXCJ9KHJ8fChyPXt9KSk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5ldmVudEJ1ZmZlcj1bXSx0aGlzLm9uZURzTG9hZFN0YXRlPXIuTm90U3RhcnRlZH1yZXR1cm4gZS5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXt2YXIgaT10aGlzO2lmKHRoaXMub25lRHNMb2FkU3RhdGUhPT1yLk5vdFN0YXJ0ZWQpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIk9uZURzVGVsZW1ldHJ5UHJvdmlkZXIgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZFwiKSk7dmFyIGE9byhvKHtpbnN0cnVtZW50YXRpb25LZXk6dC5pbnN0cnVtZW50YXRpb25LZXl9LHQuZW5kcG9pbnRVcmwmJntlbmRwb2ludFVybDp0LmVuZHBvaW50VXJsfSkse2V4dGVuc2lvbnM6W10sZXh0ZW5zaW9uQ29uZmlnOltdLGNoYW5uZWxDb25maWd1cmF0aW9uOntldmVudHNMaW1pdEluTWVtOjUwfSxwcm9wZXJ0eUNvbmZpZ3VyYXRpb246e2hhc2hJZGVudGlmaWVyczohMCxncGNEYXRhU2hhcmluZ09wdEluOiExfSxjb29raWVDZmc6e2lnbm9yZUNvb2tpZXM6W1wiQU5PTlwiXX19KSxsPW4uZSgyNTEpLnRoZW4obi5iaW5kKG4sNDE2OTYpKS50aGVuKChmdW5jdGlvbih0KXtpLm9uZURzPW5ldyB0LkFwcGxpY2F0aW9uSW5zaWdodHMsaS5vbmVEcy5pbml0aWFsaXplKGEpLGkub25lRHNMb2FkU3RhdGU9ci5Eb25lLGkuZXZlbnRCdWZmZXIuZm9yRWFjaCgoZnVuY3Rpb24odCl7aS5vbmVEcy50cmFjayhlLmZvcm1hdEV2ZW50KHQpKX0pKSxpLmV2ZW50QnVmZmVyPVtdfSksKGZ1bmN0aW9uKCl7aS5vbmVEc0xvYWRTdGF0ZT1yLkZhaWxlZH0pKTtyZXR1cm4gdGhpcy5vbmVEc0xvYWRTdGF0ZT1yLkluUHJvZ3Jlc3MsbH0sZS5wcm90b3R5cGUuYWRkRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIG49dGhpcztpZih0aGlzLm9uZURzTG9hZFN0YXRlIT09ci5GYWlsZWQpdHJ5e2lmKHRoaXMub25lRHNMb2FkU3RhdGU9PT1yLkRvbmUpcmV0dXJuIHRoaXMub25lRHMudHJhY2soZS5mb3JtYXRFdmVudCh0KSksdm9pZCh0aGlzLmV2ZW50QnVmZmVyLmxlbmd0aD4wJiYodGhpcy5ldmVudEJ1ZmZlci5mb3JFYWNoKChmdW5jdGlvbih0KXtuLm9uZURzLnRyYWNrKGUuZm9ybWF0RXZlbnQodCkpfSkpLHRoaXMuZXZlbnRCdWZmZXI9W10pKTt0aGlzLmV2ZW50QnVmZmVyLnB1c2godCl9Y2F0Y2gobyl7Y29uc29sZS53YXJuKFwiRmFpbGVkIHRvIGxvZyB0ZWxlbWV0cnk6IFwiLmNvbmNhdChvIGluc3RhbmNlb2YgRXJyb3I/by5tZXNzYWdlOm8pKX19LGUuZm9ybWF0RXZlbnQ9ZnVuY3Rpb24odCl7dmFyIG49byh7fSx0KTtuLl90YWJsZT12b2lkIDAsbj1lLnJlbW92ZVF1ZXJ5UGFyYW1zKG4pO3ZhciByPXtuYW1lOnQuX3RhYmxlLGRhdGE6bixzeW5jOiExLGJhc2VEYXRhOnt9fTtyZXR1cm4gcn0sZS5yZW1vdmVRdWVyeVBhcmFtcz1mdW5jdGlvbihlKXt0cnl7dmFyIHQ9SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIHQ9dC5yZXBsYWNlKC9cXD8oW2EtekEtWjAtOX4rXFwtLl8lOi9dKz1bYS16QS1aMC05fitcXC0uXyU6L10rJj8pKy9nLFwiPyoqXCIpLEpTT04ucGFyc2UodCl9Y2F0Y2gobil7cmV0dXJuIGV9fSxlfSgpfSw4MDQ5OTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLHQuZGVmYXVsdD1uLnArXCJpbWFnZXMvbXNhc2VydmVyc2lnbmlubG90dGllXzFfM2QwODM1ODAyNTA2MTdhMDE4ZWE4YzdiN2E3NmY0MGMuanNvblwifSwzMDg2MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLHQuZGVmYXVsdD1uLnArXCJpbWFnZXMvbXNhc2VydmVyc2lnbmlubG90dGllXzJfOTcxY2FkMzIxZmYwMDMwMDFiOGJlZjA1ZTA3M2YxMDAuanNvblwifSw0MTY5NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLHQuZGVmYXVsdD1uLnArXCJpbWFnZXMvbXNhc2VydmVyc2lnbmlubG90dGllXzNfZTMzMDk3N2Q2MDc2NzUyZjNmMzZmNWFkZjU0NzQwNTYuanNvblwifSwyNTk2NzpmdW5jdGlvbihlLHQsbil7dmFyIHI9e1wiLi9tc2FzZXJ2ZXJzaWduaW5sb3R0aWVfMS5qc29uXCI6ODA0OTksXCIuL21zYXNlcnZlcnNpZ25pbmxvdHRpZV8yLmpzb25cIjozMDg2MSxcIi4vbXNhc2VydmVyc2lnbmlubG90dGllXzMuanNvblwiOjQxNjk3fTtmdW5jdGlvbiBvKGUpe3JldHVybiBpKGUpLnRoZW4obil9ZnVuY3Rpb24gaShlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoZnVuY3Rpb24oKXtpZighbi5vKHIsZSkpe3ZhciB0PW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrZStcIidcIik7dGhyb3cgdC5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLHR9cmV0dXJuIHJbZV19KSl9by5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHIpfSxvLnJlc29sdmU9aSxvLmlkPTI1OTY3LGUuZXhwb3J0cz1vfSwzMjczMDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8wXzAxODA1MjkwNTkwMjgyMWRlOWQ0LmpwZ1wifSw3NzU2NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xX2U4MjIwNGYzNzE1NzY3ZmIzZTg5LmpwZ1wifSw3NjUzODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xMF85NTQ5MzUwNjFhNWI3NmM2NzRlZi5qcGdcIn0sNzIxOTE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMTFfY2ZlOWNiNjJlYmI2NjA1ZTAzZmIuanBnXCJ9LDc5NzQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMTNfYmJlMjk1NGU1YWRlM2E4NjcxZTcuanBnXCJ9LDg3Mzc3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzE0XzA2MDE5ZjVmYjZiMmJhMzhiODZkLmpwZ1wifSwxODgxNDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xNV82MDI4ZWE4MTMzYjQ2NGRmNDMwZi5qcGdcIn0sMTA0MDY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMTZfMTEyZjhmMDNjNGFmZmU0YjNhYzcuanBnXCJ9LDUxMTg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMTdfYTMzYzgwNmIyYzdhNmU1Nzg5YjkuanBnXCJ9LDI2NzExOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzE4XzVjMzM0MTIxOWM4OGIwMzkxMDA4LmpwZ1wifSw2MjA2MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xOV84Y2VjMWNiMTAyNGM2ZGVkZmRmNi5qcGdcIn0sODY5ODI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMl80OWQzMWFhNzg0OWMwNjdiMjA4Zi5qcGdcIn0sMzAyODk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMjBfNmUyZjQxMWMwZjc4NjUwN2FkYzcuanBnXCJ9LDcyMzI5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzIxX2EwOWM4YTU4MzU5OGQ0ODQ5NzJmLmpwZ1wifSw5NzAyMzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yMl8wNzdjM2NhNDkwNWE3MDcyMzM0Ni5qcGdcIn0sMjM1MzQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMjNfZWFkYjVjZDNmMTk5ZjkxMjhkNGMuanBnXCJ9LDY5NjA4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzI0X2JlODk1OWUzNWE3ZjBmZTQ1YmRjLmpwZ1wifSwzNjUzNDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yNV8wZTlkN2JiMDBhYmM4MWViMWJmNy5qcGdcIn0sNzQ0NTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yNl8xOGZiNjQ2OGE5ZmQwZDBjMzcwOC5qcGdcIn0sNDAyMzI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMjdfMTVhNGRiN2M0MDgxOGMyZjg2ZDUuanBnXCJ9LDk3OTU5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzI4XzY1ZjdhYWNjYTYxOTNhNzU3NjVhLmpwZ1wifSwxNjAxNjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yOV8wMWE3NGRhNjQxNmNhY2M1MzM0Mi5qcGdcIn0sODIwMDg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvM183MzY3YTk0NzI3Y2I1MjUzOGU0Mi5qcGdcIn0sNDg2NzM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMzBfN2FiM2QwMjBjZjAxMGM5ODJlNzkuanBnXCJ9LDM5MjQwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzMxX2NjYzM2ODcyNDQ0MTlkODE2YTZhLmpwZ1wifSw0NDQ0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzMyX2FjZTMwZmFiNjc3YTI0ODYyN2NmLmpwZ1wifSw4NTY2MDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8zM19hNWRiZDQzOTNmZjZhNzI1YzdlNi5qcGdcIn0sNTI5MDk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMzRfYjM3MmFmN2YwM2IyMTA2ZGRlM2MuanBnXCJ9LDkzNDgwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzM1XzZiZTU3YWRiYWQ2ZTU0NDFmYzYzLmpwZ1wifSwyODA3NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8zNl8yYjc1MGZmMTI5MmJmYjEyMGQ3Yy5qcGdcIn0sMzc1MzY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMzdfOWRkZjY3MTI3OGVkZTFjMTViM2IuanBnXCJ9LDk0NTUyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzM4XzdiZTZjMmIwODNkZTFhYzdmNmQ1LmpwZ1wifSw1ODYzNjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8zOV85MzFkYTNiNzM4NDFmOWQ1MzQzMC5qcGdcIn0sNTE1Njk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNF84YmMyNzQ1MTRjNmM0YzRhODhlZS5qcGdcIn0sNTg2Njc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNDBfMGY2ODhhMTE4ZTI0YjU2YzE3MTMuanBnXCJ9LDIyNTEwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQxX2Q2NWFiN2ZhOWE5M2FmYWQwOGYyLmpwZ1wifSwxMjk3OTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy80Ml8xNTVjNWZjZjA4ZGMwYWJmZDhmMS5qcGdcIn0sMjYzNjk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNDNfOTQyYzRhY2ZhNDY1YzNlOWUzZmYuanBnXCJ9LDY0OTkwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQ0XzdmMjJhY2I2YWQ0YTE3YWUwMjY1LmpwZ1wifSwxMDUzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQ1XzRiZDg2YjVhYWZiZjI1M2JmOTRlLmpwZ1wifSw3MjEyNTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy80Nl9jYmFhNDQyNWVhMzBlZTg0NTlkMi5qcGdcIn0sMTU1MTQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNDdfOWQ2NTdkY2MxOTlhY2JlOTU1OWIuanBnXCJ9LDQxMjM1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQ4XzJjYTE1MGNiYjFkMGY3ZmQ0OWVlLmpwZ1wifSwzMjUwMDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy80OV83OTE2YTg5NGViZGU3ZDI5YzJjYy5qcGdcIn0sMTM0NDI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNV84NTU2Y2NhMjFkZjNiN2UzZWI3MS5qcGdcIn0sNTI5MDY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNTBfNjViNTg5ZGYyMjAzNWE5ZDk4NjEuanBnXCJ9LDE3OTExOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzUxX2Q4ZmRkMzljYzNhMTRlMmE5NGY5LmpwZ1wifSw2NTI5MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81Ml8xYWYzZjY2ODE2OWNhZTdlOTkyMy5qcGdcIn0sMzQ5MjQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNTNfYTZiMTY1ZjU3N2YwZDZmMWE3NzQuanBnXCJ9LDc3MjI3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzU0X2FkNThkMjQ5NTk0NzcyNWI4YWQ5LmpwZ1wifSw1Mjg3ODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81NV8wN2FkMzU2NmQzOTk3ZjhhMzdiNy5qcGdcIn0sMTc0NzI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNTZfYmQ0YzFjN2VjNTQwN2RiMDliOWIuanBnXCJ9LDczNzgxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzU3XzFkZjVkMGFkOWNmYzFlYjVlMDVkLmpwZ1wifSw0MDY2OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzU4X2ZlNmQ3ZDNlNzZhNjU4YWYzZDk0LmpwZ1wifSwzODc3MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81OV8xOTk1N2U3NDliODA3NjRmNjEwZi5qcGdcIn0sMzU1NzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNl9kNDA1Y2U0ZWRmNDlkODNjOTk2NC5qcGdcIn0sNDU3NTk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjBfZTE5ZTIyMTkwYThkZjdjMmE5YmQuanBnXCJ9LDMwNTUwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzYxXzQ2ZWFlMTFkOWFmZTc1YWM3NzIxLmpwZ1wifSw2MjM4MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy82Ml9jN2NiYTUzNmYwYjBhNzg5NmM5Ni5qcGdcIn0sNDg4MDg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjNfNjhhNDI1N2ViZjEyODI5M2I5YmYuanBnXCJ9LDg2MzA5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzY0XzM1YTMwOTFlNzBlNzI5ZDA4YTZjLmpwZ1wifSw3ODYxMzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy82NV9lZDYzMzU2YTExYmZjMzY4MGU1MC5qcGdcIn0sODcwODc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjZfYjJjMjBiY2IxYjEwZmQxM2RmYjguanBnXCJ9LDY4ZTM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjdfNzQ5NjJkOTZlZDQ0OThhNTNiMjcuanBnXCJ9LDk5NDE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjhfYmZhZGYyZTk0YmY2ZDFhMzJmYTEuanBnXCJ9LDg1OTA3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzY5XzgyM2FlMTVjMWI4YjZmZDI4MDQ5LmpwZ1wifSw1MDU1NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy83XzI4YzY3ODljODA5NTkyZjk0OGQ2LmpwZ1wifSwxOTc5MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy83MF8yZmZkYzA2ZWQyMmJiNDMwN2NmZC5qcGdcIn0sNjIyMTQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNzFfZGRjM2JlYWI1NGVlN2FhM2M0YTMuanBnXCJ9LDg4MzkzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzcyX2EzYzliNmM3Zjg2ZjFlZTA2NzczLmpwZ1wifSwzMjU0OTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy83M19iNDYwMzFlMDJiNjljNTViNDMwNS5qcGdcIn0sNjI3NzM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNzRfNDQ2YjhmZmNlZDYzZDQyMjE5NzguanBnXCJ9LDk2Mjg5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzc1XzE2ZDY4NGY0ODFmMzFhNTU5MWNhLmpwZ1wifSw5MjYwODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy83Nl8yMTg5ZGU1ZjQzOTI3ODliYzE1OS5qcGdcIn0sMTIxMjk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvOF8xMjhjZDExN2VjMTQxNTViNjg1OS5qcGdcIn0sNTg2MTU6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvOV84MzJkMjE5NzZjNWQ1OTZmMmNlMS5qcGdcIn0sOTM3ODA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMF8zYjZmMDdlNmQ4YzU0ZTZlNzMwOS5wbmdcIn0sMjUxNTk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMV83OWNlOWYwN2IzMmYxMzEyMGIyNi5wbmdcIn0sMzA0MTQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMTBfMTdmZDA2ODg3NTZiZjQwYThkMTIucG5nXCJ9LDE4MTk0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzExXzk4MmM0M2EzZmI0MjlmOTk5MmExLnBuZ1wifSw0NzEwNzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xMl9lMTU4Njk0OTRhMTQ0NjE2OTE1OS5wbmdcIn0sNTAzMDI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMTNfOTVhMDUzNWUzNDY0ZWJmOTQ3MTYucG5nXCJ9LDk0MDcwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzE0XzI5ODE3NjY1N2Y4MDY5ZWE1MjIwLnBuZ1wifSw3ODE0MDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xNV9hODQ2NDE2NjAyZmI5NTc4YWJlNC5wbmdcIn0sNDkxMTQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMTdfMzdlNGVjYmYzOGIyNmJmOTZhOGUucG5nXCJ9LDM4NjIxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzE4XzE0MDQ5MTI1ZWMyMGJkZDVkNmM2LnBuZ1wifSw3NDg2MjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xOV9iZTc5M2I3NjYyZDYxZmE5ZDU2MC5wbmdcIn0sNjc4NTI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMl9jNjAxZGRiN2U5OWE4ZTY5NDYxOS5wbmdcIn0sNjQ3MzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMjBfNzFjNWRkMzcxNTk2MjczZmQzNDYucG5nXCJ9LDcyNzQ0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzIxX2NjZjk0NDUxNjRmYzk4ZmI3MzUxLnBuZ1wifSw3NTk0NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yMl9hZDA4MzIxYmEyOTMwYjE3YWJmZi5wbmdcIn0sNzQ1MTA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMjNfNDBjODc0NjgzZTMyNjQxZjc4MzEucG5nXCJ9LDU2NzYyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzI0X2U5NjdhZTQzYjVhOTJmYzU3YzVkLnBuZ1wifSw3MDQ4NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yNV9jNjJlODRhZjAyMzlmYjg3OTYxMC5wbmdcIn0sMzY2MTk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMjZfN2JkZWQ1N2NiOTlmYjhkNTQyZTEucG5nXCJ9LDY3ODk4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzI3Xzg1MTg4N2NhYWFiMWI3YTRlNDUwLnBuZ1wifSwxMjM3MjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yOF83NzNhMjViNjI2MTYyNjgwODBlYi5wbmdcIn0sNzQ3ODc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMjlfNzExOTY0MjcwZjVkM2RmODJlODYucG5nXCJ9LDQ4NDMxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzNfOTE3Yzk1MTg0ZmM0ZjlmNmU1ZDgucG5nXCJ9LDIxODA4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzMwXzFmNWIwNDE0NDE2ZGQ3YzRjNmM5LnBuZ1wifSwxODkzNDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8zMV9lMTZkNTA5NjAzNjc2N2JkNDBkMi5wbmdcIn0sNTE1MjE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMzJfZDEyYTI4MWFjYzFiZTQwYTZlMzkucG5nXCJ9LDkyMTk3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzMzX2ZiNjU4ZjljN2EyM2EwYmU2MmVlLnBuZ1wifSw3MTM3MDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8zNF84ZDg0NDEwM2ZkMjA1NDAxMTcyMC5wbmdcIn0sNzk2NjA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMzVfZTZiZjMwOTcwNjExYzQ0OTIxYTkucG5nXCJ9LDMxMzU6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMzZfOGI1MWU4NjFmNjMzMGEzN2ExODEucG5nXCJ9LDQwMjk2OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzM3XzUzM2UyOTNmMGM4OTQ3YWRhNjUzLnBuZ1wifSw3OTQzNDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8zOF80MGNkNDI4NTY3NjQ0ZWFiZjJlZC5wbmdcIn0sMzU2NjU6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvMzlfNjUxMDI2NGQ0NmI5MWUzNTQxYTAucG5nXCJ9LDY3NzgwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzRfMWQ5MjkwMjU5Njc3M2ZlZjFlZmMucG5nXCJ9LDU1NDQ3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQwXzAyZTc5M2ZlY2UxNDMzZTZhZDAzLnBuZ1wifSwxODIxMjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy80MV9jOTYzYWUyMDA2YWJiNDg1NWMyYi5wbmdcIn0sNDk4OTc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNDJfMzQ3YzJkYWNiZmUwNDBhNjE0ZWUucG5nXCJ9LDcxMTgyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQzXzlhODI5Y2UzMmU2NTdlYjA4NTRjLnBuZ1wifSw1MTE5OTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy80NF8wOGVkNjU3ZTQ4ZjE0NTg2NDFiNS5wbmdcIn0sODQ4Nzg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNDVfZTk0NTE4NmY4YTFjMTUxZGZjMGUucG5nXCJ9LDY0NTU4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQ2X2M0ZjdiZDg3MzAyZGE1MWI2MmU4LnBuZ1wifSw1ODUwNzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy80N184MTY1OTFiZWVhYTM4ZjU3NmZkNS5wbmdcIn0sODQwMjA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNDhfMTA2NGNjMjJhNWM4OTAxOTc5Y2YucG5nXCJ9LDg5NzUyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzQ5XzIzODdjNjIxNDQ2MmViMjM1YTNiLnBuZ1wifSw1NTg2MDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81X2IzN2JhYmE5ZWJkMjA5OGY5MWFlLnBuZ1wifSw0MTQ5MjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81MF82N2RhZWZjNDVhNTMzYTIyMWQ3MC5wbmdcIn0sNDk5MTE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNTFfOWE4MjljZTMyZTY1N2ViMDg1NGMucG5nXCJ9LDQ0Nzc5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzUyXzMwZjMxYTVkZGViMDVmNWI1ZmM5LnBuZ1wifSw0ODU0NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81M184YjM2MzM3MDM3Y2ZmODhjM2RmMi5wbmdcIn0sODI3NzQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNTRfMzQ5MjAzNGY4MWYyYTA4ZjZlNTYucG5nXCJ9LDU5MDM3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzU1X2JiYTUxOGJmNGY4YTc2ZDc1OTE3LnBuZ1wifSw1MzcyMTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81Nl8zMmFjMzU3MjA2NmVhZjQzMWM2MC5wbmdcIn0sNTI5NzU6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNTdfZjk3YTRkYmRhOTUzZTUyN2U4ZmYucG5nXCJ9LDg3MzU0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzU4XzRmNjUzNTRlMDhhYzRmNzA0OTVkLnBuZ1wifSwxMjc1MjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy81OV81ZjA2MGYzYjBkYzc5OTRmMTEwNi5wbmdcIn0sNzkxNjg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNl9iMDk1NzRmZTM4NzE4ZGNjZmNiOC5wbmdcIn0sNzM4MjE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjBfMTdiNzk3MGUyM2E0ZTQ1NzY4YjUucG5nXCJ9LDc5NzEyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzYxX2M5NWNhODc3MWI3OWFlN2QwYWU5LnBuZ1wifSw0NDE0NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy82Ml81ZjYwMTRjMDVmMWI1OTk3YjE2Zi5wbmdcIn0sOTEwOTA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjNfZGE5YzMzZDY1MjVhOGI3MTE0MjMucG5nXCJ9LDk1MTAxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzY0X2VmNWQ4OGU2ODNiNTllZTdlODk2LnBuZ1wifSwxMjc1MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy82NV9jYjM0OWE4MDdhODEyZDE4YzgwOC5wbmdcIn0sODM5NDE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjZfOTc5NjgyYTc3MTcyM2RhMDY1YzgucG5nXCJ9LDc4MTc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNjdfZDRkMmY0ZTU1NTM1N2MxNjk2NmEucG5nXCJ9LDYyMjAxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzY4Xzk4Y2RlOTdjZjBmZmE3M2I3MWI2LnBuZ1wifSw5MTI4MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy82OV83Yjk4NmUzNmVmYzhjYzdkYWMzYi5wbmdcIn0sMTM0NDM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvN19kODc4OWEwY2UyYzBlMWE2M2IwYS5wbmdcIn0sOTk1MzI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNzBfMmY4ZDRmYzZmM2FkYzQ1NTJmZDkucG5nXCJ9LDM2OTA0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzcxXzk3NzJiYWQyMmYzNmU3OTA0YjBhLnBuZ1wifSw1OTYyNTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy83Ml84ZGM4NjEyMzJiNTNkYTQ4ODE1MC5wbmdcIn0sNjI4OTY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvNzNfYjc2N2E1NTQ5ZWU5N2YzZmU2MDkucG5nXCJ9LDk0NTkyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzc0X2NmYWUxYzhiZmQ2MTlkY2JlMTMyLnBuZ1wifSw5OTM0NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy83NV8xOTY0ODE3ZjNhZmNiYzc0ZDYxMi5wbmdcIn0sNjIyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzc2X2FjNzEyODI3MmZmNjdhODQ4NWE0LnBuZ1wifSwxODc3MDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy84XzhhNTg2NTliMDVhMGNlMmRhMGM0LnBuZ1wifSw2MzY2MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8xXzlkNjU3ZGNjMTk5YWNiZTk1NTliLmpwZ1wifSw2MDY0OTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy8yXzc5MTZhODk0ZWJkZTdkMjljMmNjLmpwZ1wifSwyMDUzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzLzJfYmMzZDMyYTY5Njg5NWY3OGMxOWQuc3ZnXCJ9LDY4NDQwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2ZsdWVudF93ZWJfZGFya19mNTM4YzJhYzAyZWM5ZWQzM2NkNi5qcGdcIn0sODI5NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9mbHVlbnRfd2ViX2xpZ2h0X2FiOWFjMmQzZGI5OTMyYjZlMWRhLmpwZ1wifSwxNzcwMzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9hY2Nlc3NwYXNzXzM0M2EwMDdiMTI1ZDM0ZmUzY2NiLnBuZ1wifSwxNzk5MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9hY2Nlc3NwYXNzXzg2ZjQwM2FmNjQ0NWIyNGNmNjVhLnN2Z1wifSw3OTg1MDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9hY2Nlc3NwYXNzX3doaXRlXzBmMzdiMmQ2MzQ0ZTczZGJjNzgzLnBuZ1wifSwxMzQ5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2FjY2Vzc3Bhc3Nfd2hpdGVfNWFmNzRjYmI4NTM2YThiNjE3OWQuc3ZnXCJ9LDk1MjEwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2F1dGhlbnRpY2F0b3JfOTQyYWM3MWY3N2NiMDQwMDRiMGEucG5nXCJ9LDgzMjQ2OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2F1dGhlbnRpY2F0b3JfZjA3YWZiMjdhZDUxMGRjNzg1YTkuc3ZnXCJ9LDQ5MzE0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2F1dGhlbnRpY2F0b3Jfd2hpdGVfOWZlNGM3YzhiNDEzNTM4NDM5OTYucG5nXCJ9LDExNTMxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2F1dGhlbnRpY2F0b3Jfd2hpdGVfYWY3MDkxZDc1MjQ2ZjFiMmJmOWMuc3ZnXCJ9LDg4NzA1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2NlcnRpZmljYXRlX2Y4NjM5MDU1NmQ2MmM1MDhhY2FmLnBuZ1wifSw2OTMzMTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9jZXJ0aWZpY2F0ZV9kY2QxNTk0YzNhZjFkY2QwNTQ1Zi5zdmdcIn0sODk4OTQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fY2VydGlmaWNhdGVfd2hpdGVfMzE1MWEwYmQ1M2JkOGEwODI5NTEucG5nXCJ9LDQ5MzM1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2NlcnRpZmljYXRlX3doaXRlXzFhYzAwNWYwYjgyM2Q3NTRhZGJiLnN2Z1wifSw3NzQyNTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9maWRvX2VlYjA5N2NlZmI1ZjA4OTE3YzQ4LnBuZ1wifSw3OTkyODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9maWRvXzQ5OGE0ZDdiYjk4NGU1NDM2YTUyLnN2Z1wifSw0MDUxMjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9maWRvX3doaXRlXzQ2MzFhMTUzNzMyM2JlMzZjNzZhLnBuZ1wifSw3MTg3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2ZpZG9fd2hpdGVfMmYwZWM1NTdhNWM0NTgwZWVkYzUuc3ZnXCJ9LDczNjc4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2ZvcmdvdF85NDEwMWQwNTAwZDEzYTY1Y2U2My5wbmdcIn0sMzA2NDk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fZm9yZ290XzJjYTJlYTg5MTdmOTdhZWY0N2QwLnN2Z1wifSw4OTY3MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9mb3Jnb3Rfd2hpdGVfYzQ3Yzg3YTcwOTdlZjBkNmM1ODUucG5nXCJ9LDc2NTI3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2ZvcmdvdF93aGl0ZV84MTcyOTJkYWZkNDA3ZGY5ZjkxYy5zdmdcIn0sNDg2ODQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fZ2VuZXJpY19hcHBfYTZmN2I0NGVhNDVjYWI4OTZiODcucG5nXCJ9LDg0ODA5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2dlbmVyaWNfYXBwX2M4MDY4MzI1NzM2YzA1OTAxMmJiLnN2Z1wifSwxMjI5NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9nZW5lcmljX2FwcF93aGl0ZV8zYWU5YzQzYWQ4MGVmN2U2NGNkNi5wbmdcIn0sMzIzNDQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fZ2VuZXJpY19hcHBfd2hpdGVfNDFmMjFlZTBkY2RmY2E1YjEyODAuc3ZnXCJ9LDIyNDc1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2dpdGh1Yl9hOTUxYWVkNjQ3NGQ4NTQ0NTQ0OC5wbmdcIn0sNTExMzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fZ2l0aHViX2E3Yzc2OWUzMWE2MjhlNjQzODQxLnN2Z1wifSw4MDUyMjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9naXRodWJfd2hpdGVfNTc5YTNjYzgxZjg4NDViY2RmOWMucG5nXCJ9LDE0Njg4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2dpdGh1Yl93aGl0ZV9kMGY4NmM4OTA4YTMwMTZmMTExZC5zdmdcIn0sNDU1MTE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fbGlua2VkaW5fYTM2NmZkMTc5Mjg2ZDNlZDVhMzYucG5nXCJ9LDc2OTc0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX2xpbmtlZGluXzE2MDg1NTg4MmY5MzFjYTViNThkLnN2Z1wifSw0NDYyOTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9saW5rZWRpbl93aGl0ZV9mNjgxZGQ1MDM0Y2FhM2EzN2E0Mi5wbmdcIn0sMzI2MzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fbGlua2VkaW5fd2hpdGVfZmMzYjE1ZmY0MTExZDZkM2I3ZmQuc3ZnXCJ9LDUxMjM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fb2ZmbGluZWFjY291bnRfZTAwZjVlNzYwMzEzYjk5NWJiM2IucG5nXCJ9LDY5NDQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fb2ZmbGluZWFjY291bnRfOTIwMWQ4ZjA3YjJjOGVhYmUxNGMuc3ZnXCJ9LDk4MzA5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX29mZmxpbmVhY2NvdW50X3doaXRlXzIxNmZmOTIxMzk3N2RlZTlmNjc1LnBuZ1wifSwyMTA5NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9vZmZsaW5lYWNjb3VudF93aGl0ZV8zZWM0MTFhZmZiOTZlNWNlZmQ4NS5zdmdcIn0sNjMzMTM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fcGFzc2tleV82ZjY4MTJiYzVhNTA5ZDU1MjJhYi5wbmdcIn0sODM2NjM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fcGFzc2tleV9jZDZhNmE0YWQzYmQyNzJhZTVjMi5zdmdcIn0sOTM1NTI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fcGFzc2tleV93aGl0ZV80NzNhZjI0MjYyZGJmMmIzMjBjNS5wbmdcIn0sNTc1OTM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fcGFzc2tleV93aGl0ZV9lMTcwMmQ3MGQ0OGRmOTY4ZTE0MS5zdmdcIn0sNjMxNTk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fcGFzc3dvcmRfNGExZmZlMjgwMjJiY2U2MGE2NmUucG5nXCJ9LDMwNjEzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NyZWRfb3B0aW9uX3Bhc3N3b3JkXzgxNzllOGRjODU4NjE2NjdhM2QyLnN2Z1wifSwxNjkxODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jcmVkX29wdGlvbl9wYXNzd29yZF93aGl0ZV9mMWQzNmExN2ZlYWRjMjk1OTkzMy5wbmdcIn0sMTAzNzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY3JlZF9vcHRpb25fcGFzc3dvcmRfd2hpdGVfODZhODI3N2FlNWNjMTMxMDUyZDQuc3ZnXCJ9LDg0NDQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvYWRkX3VzZXJfYTAzMGI5NDNlMTM2YmExNjAyNzIucG5nXCJ9LDY4MDYwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2FkZF91c2VyX3doaXRlXzlmOTRjZDFmOGQ0ZTg1MzcyMDgyLnBuZ1wifSw3Nzk0NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9hcnJvd19sZWZ0XzdjYzA5NmRhNmFhMmRiYTNmODFmLnBuZ1wifSw5Mzc1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2Fycm93X2xlZnRfYTljYzI4MjRlZjM1MTdiNmM0MTYuc3ZnXCJ9LDkzMzY0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2Fycm93X2xlZnRfd2hpdGVfOGM5NThmMjEwZjlkMTc0NjIxYzIucG5nXCJ9LDU4MDI1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2Fycm93X2xlZnRfd2hpdGVfZTNjNzEwYmUzMDUyMjUzYWQ3Y2Euc3ZnXCJ9LDQ4Nzg0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2Fycm93X3JpZ2h0X2RkYmE0ZDk2MjljYjUwMWE4OGE2LnBuZ1wifSw3NzY4MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9hcnJvd19yaWdodF82ODZhNzM5OWFmZGFmNGQ1ZjA2MC5zdmdcIn0sNTA4Mjg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvYXJyb3dfcmlnaHRfd2hpdGVfNDBjZWY3YjAxNjI2YTc4ZGUwM2EucG5nXCJ9LDQzMjYyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2Fycm93X3JpZ2h0X3doaXRlXzA0MjQzYzllYTRmMTk0YTljODJlLnN2Z1wifSwyNzI0MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9hdXRoZW50aWNhdG9yaW5mb19lYjc2MGU4OWM3YjY3YjM1NWIwMi5naWZcIn0sMjUyMjg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY2hhbGxlbmdlX2F1ZGlvX2NlNmMxNWU0OWI3MWYwOThkMzg0LnBuZ1wifSwyMjMyODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jaGFsbGVuZ2VfYXVkaW9fMGVjZTZiNjE3OWNkMGIzYTdjZGUuc3ZnXCJ9LDQ2NTY0OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NoYWxsZW5nZV9pbWFnZV8xNjZiNjU0MTYzZGY5MzU4YzMzOS5wbmdcIn0sNTc1Mjg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY2hhbGxlbmdlX2ltYWdlXzJjNGQ0Y2FmY2EyZjYwYzIwZTZjLnN2Z1wifSw0NTU5MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jaGFsbGVuZ2VfcmVmcmVzaF9lNWQ2MmVhYTZhMTkwOGQ2YzU5Ni5wbmdcIn0sNjg1MzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY2hhbGxlbmdlX3JlZnJlc2hfZDRkZWRlMjIwMWNhYTY1MjcxYTQuc3ZnXCJ9LDgzMzAxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NoYWxsZW5nZV9zcGVha2VyXzk2ZGZhYzlmODUwNTU4MjdmZGRjLnBuZ1wifSw3NTIyNzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jaGFsbGVuZ2Vfc3BlYWtlcl8zNDkyNmY5NjgyMzQ4ZTBlYzg4Yy5zdmdcIn0sMzY0NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jaGVja19maWxsZWRfMjE5MzZmY2U5YWE5ZmM2NDJjODUucG5nXCJ9LDEwMzQzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NoZWNrX2ZpbGxlZF9iYzY1ZGFlZGM5NjRiMTY4ZTJkZC5zdmdcIn0sOTM2NzY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY2hlY2tfc21hbGxfZTFlNjg1MjE5ZjgwMWI3YzJjMzkucG5nXCJ9LDg4NTE4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NoZWNrX3NtYWxsX2MzNmZhMTQ3OTBkZmM2Y2EyMjA2LnN2Z1wifSw3NDA0ODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jaGVja19zbWFsbF93aGl0ZV85ZmZmMDg3NjA2ZDVjZjZlYTZmMi5wbmdcIn0sNjM2NTc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY2hlY2tfc21hbGxfd2hpdGVfYzQ0MmFiYzRjYTM4YzVmMDRhMjMuc3ZnXCJ9LDMyNzU6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY2hldnJvbl9jbG9zZWRfZDQ5NmMyZTRjZTQ1ZDlmOWFkNDUucG5nXCJ9LDUzNzcwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NoZXZyb25fY2xvc2VkXzMxZTk1NDAzMzg3NzYyNWU2NWYzLnN2Z1wifSwxMDI3NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jaGV2cm9uX2Nsb3NlZF93aGl0ZV81MWI4MThiMjQ3MzBmZDhmYjc3ZS5wbmdcIn0sOTc3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2NoZXZyb25fY2xvc2VkX3doaXRlX2ZkODgwYzNkZTNhNzZmYzNhOWM2LnN2Z1wifSwyMzQzNDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jbG9zZV82Mjc4ZWMwYWMxMTZhMjI5NTEyZS5wbmdcIn0sNjEzNzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvY2xvc2VfNDBlYjM5MTI2MzAwYjU2YmY2NmMuc3ZnXCJ9LDY5MjQ3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2Nsb3NlX3doaXRlXzc4NzgyYTgwYTMyYjIzZWE3NmY0LnBuZ1wifSwxOTU3NTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9jbG9zZV93aGl0ZV82YjJlZWJjMmZlZmYyZDg1ODNmYy5zdmdcIn0sOTYzNjc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvZG9jdW1lbnRhdGlvbl85NjI4ZTIyYTZiZmIxZWRjNTllOC5wbmdcIn0sNjgzNzE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvZG9jdW1lbnRhdGlvbl9iY2I0ZDFkYzRlYWU2NGYwYjJiMi5zdmdcIn0sODU0OTE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvZG9jdW1lbnRhdGlvbl93aGl0ZV9mMWQ3NmY1OWY4N2VlNzE2NzkxOC5wbmdcIn0sNzIzOTY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvZG9jdW1lbnRhdGlvbl93aGl0ZV9jOGMzZjBjODc2YWMyODYxNGQxZC5zdmdcIn0sNjkzNzA6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvZHJvcGRvd25fY2FyZXRfZTlkZGVlNzQyMTdiYTNiZjUzNzgucG5nXCJ9LDM2MTkwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2Ryb3Bkb3duX2NhcmV0XzI5NzQ5OThjNmIzMjIwYjY1YWExLnN2Z1wifSw2ODUxNzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9kcm9wZG93bl9jYXJldF93aGl0ZV80MGEyODhhMzE1ZTQyZDU5YWY5Yy5wbmdcIn0sMzczMjM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvZHJvcGRvd25fY2FyZXRfd2hpdGVfNzk4OWQyMTQ0ZGY4YTc5NTdjZDQuc3ZnXCJ9LDk3MzUzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2dlbmVyaWNfYXBwX2FiMDcwN2QzZmQxNTQ4MmY3N2JiLmdpZlwifSwyOTU1NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9rb3JlYV9jb25zZW50X2NoZWNrXzIwZTI5NGYzNDMzMjE1ZDZiOWJmLnBuZ1wifSwzMTcyMDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9rb3JlYV9jb25zZW50X2NoZWNrX2VjNzE4ODZjNjZiNTBjYThkODdiLnN2Z1wifSw0ODU2NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9rb3JlYV9jb25zZW50X3VuY2hlY2tfOTE2NTgzN2Q1ZmE4MGFkM2U2MTkucG5nXCJ9LDM4MjYzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL2tvcmVhX2NvbnNlbnRfdW5jaGVja183NGY2YTEwZGMzMDA2ODAxNDNjZC5zdmdcIn0sNDczMzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9tYXJjaGluZ19hbnRzX2I1NDBhOGU1MTgwMzcxOTJlMzJjLmdpZlwifSw0MzgzNDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9tYXJjaGluZ19hbnRzX3doaXRlXzE2NmRlNTM0NzEyNjUyNTNhYjNhLmdpZlwifSw3MDI3MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9taWNyb3NvZnRfbG9nb19lZDljOWViMGRjZTE3ZDc1MmJlZC5wbmdcIn0sODMwNzQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvbWljcm9zb2Z0X2xvZ29fZWU1YzhkOWZiNjI0OGM5MzhmZDAuc3ZnXCJ9LDI3OTk4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL21pY3Jvc29mdF9sb2dvX3doaXRlX2EyMjAzYTUyY2UwODQzNDI3YzY5LnBuZ1wifSw4MTk0MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9taWNyb3NvZnRfbG9nb193aGl0ZV81OTVlOTIwNmQ0Mjc0YzQyYzI3Yi5zdmdcIn0sODU4NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9tdWx0aXBsYXllcl9qb2luXzc3YzZmNDQwNDY5MzczMDNkOGU0LnBuZ1wifSw2NzkxNTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9tdWx0aXBsYXllcl9qb2luXzc1MzE3Mzc4ZmI2YjY3MzcyMDllLnN2Z1wifSw4Mjg3MjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9wYXNza2V5XzQwYjc1OTI3M2QyMTlhYjFhNzZkLmdpZlwifSw2Mjk3ODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9wYXNza2V5X2Vycm9yXzhjOTdmNjU0NDhjNjk3MzdkM2EzLnBuZ1wifSwyNzI1NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9wYXNza2V5X2Vycm9yXzI0YjY3YzEyOGFiZWJkMjdhODljLnN2Z1wifSw1NTIyOTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9wYXNza2V5X3N1Y2Nlc3NfMTVjODgyOTY1MTYxOWFiN2M5MWEucG5nXCJ9LDc4NDM3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3Bhc3NrZXlfc3VjY2Vzc19kZTA0OWMzNzQ3NjMzNDhjZDYzOC5zdmdcIn0sMjkyNjM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGVvcGxlX3NoaWVsZF9kYzhlMmU0ZjdjMjRhODcxNWFiZC5wbmdcIn0sNDY4NTQ6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGVvcGxlX3NoaWVsZF93aGl0ZV83MTZjNTQ2ZWY3NWI0OTY5OWQ4YS5wbmdcIn0sMzg2NzY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGVyc29uYWxfYWNjb3VudF8wZjcyYjU5NTA2MDBmMjRlN2Y5YS5wbmdcIn0sMzQxNDU6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGVyc29uYWxfYWNjb3VudF8yZTQzYjRiOTVkODMyOTE4NmMwOS5zdmdcIn0sODkxNDE6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGVyc29uYWxfYWNjb3VudF93aGl0ZV8yN2NkZTdjZTMwODcyYWIyNmJjYy5wbmdcIn0sNjgxMzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9wZXJzb25hbF9hY2NvdW50X3doaXRlXzRhNmJlNDM2ZDRlN2FmNTRhOGNjLnN2Z1wifSw2NzUxMjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfYWNjb3VudF9hYWRfNzI1NjgxYjQ5Zjc3NjUwYjljOWIucG5nXCJ9LDIxNTY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX2FjY291bnRfYWFkX2Y4M2ViZmY2OWE0YTE2ODVlNGRjLnN2Z1wifSwzOTg5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl9hY2NvdW50X2FkZF9jOTkyOWRhN2VkMmMxZWQ0NzQ1ZS5wbmdcIn0sNjY2MDI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX2FjY291bnRfYWRkXzU2ZTczNDE0MDAzY2RiNjc2MDA4LnN2Z1wifSwzMjY1ODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfYWNjb3VudF9tc2FfNGUzNjE5YTQ5OWZkNzRjMGM2NmQucG5nXCJ9LDQyMDY4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl9hY2NvdW50X21zYV8yZDhmODYwNTliZTE3NjgzMzg5Ny5zdmdcIn0sNDQwMTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfbW9yZV9jZWQzMzFjMTMyYjVmNzk4ZjFmMy5wbmdcIn0sNzgzMzg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX21vcmVfNzU2OGE0M2NmNDQwNzU3YzU1ZDIuc3ZnXCJ9LDQxMDk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX21vcmVfd2hpdGVfNTdiOGQxZDg3MzU4ODFkZDgzMDEucG5nXCJ9LDc1ODU1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl9tb3JlX3doaXRlX2UyY2Y3ZmUyZDQxMDEyZDliZjA5LnN2Z1wifSw3MzA5NTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X2F1dGhlbnRpY2F0b3JfOTQyYWM3MWY3N2NiMDQwMDRiMGEucG5nXCJ9LDE5ODcwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfYXV0aGVudGljYXRvcl9mMDdhZmIyN2FkNTEwZGM3ODVhOS5zdmdcIn0sNjEwNDk6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX3ZlcmlmeV9hdXRoZW50aWNhdG9yX3doaXRlXzkwOGE2NjEyNDc3MGFjZmNjYTAxLnBuZ1wifSwzMjk3NzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X2F1dGhlbnRpY2F0b3Jfd2hpdGVfNDI4NzMzMWFmYjM0MWU5YzUxNmIuc3ZnXCJ9LDk0OTU3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfY2FsbF8zZmI5YzdlODdjMDRmZjhmNTZkZC5wbmdcIn0sMzcwOTg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX3ZlcmlmeV9jYWxsX2ZlODc0OTZjYzdhNDQ0MTJmNzg5LnN2Z1wifSw2Mzc2ODpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X2NhbGxfd2hpdGVfOTNmNGJmOWZiYzRjNjc0ZDBhYWUucG5nXCJ9LDg5MTQ5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfY2FsbF93aGl0ZV9lYWU5ZDJkNzJjY2E5NTg3NGNlOC5zdmdcIn0sNDUzNjg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX3ZlcmlmeV9jb2RlX2VhMDE0YjIyNGViMWMwNGFjMmY3LnBuZ1wifSw5NjAwMzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X2NvZGVfZjdhYjY5N2U2NWI4M2NlOTg3MGEuc3ZnXCJ9LDg5NTk4OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfY29kZV93aGl0ZV84NjllMzdlMzg2YjYxYmQxZWMyNi5wbmdcIn0sNjI2MzY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX3ZlcmlmeV9jb2RlX3doaXRlXzkyZjQxMTFkZmFkZjQxYTEwNjBlLnN2Z1wifSw5NTE4NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X2VtYWlsXzllNzY2ZjU0YjY4N2NhOWJhMGE2LnBuZ1wifSw1MDA1MDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X2VtYWlsXzU5NzU5YjgwZTI0YTg5YzhjZDAyLnN2Z1wifSw1Mzc4NDpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X2VtYWlsX3doaXRlXzcxZGM2MjdjNTRhOGVhYTU5Y2UxLnBuZ1wifSw0NzUxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfZW1haWxfd2hpdGVfZDlhZWE3MjUyNGM5YzQwNzVkODQuc3ZnXCJ9LDg2NzE1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfZmx1ZW50X2F1dGhlbnRpY2F0b3JfYjU5YzE2Y2E5YmYxNTY0MzhhOGEuc3ZnXCJ9LDUxNjQ1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfZmx1ZW50X2F1dGhlbnRpY2F0b3Jfd2hpdGVfNGQwYTdmYzJkOWE3N2NkZjZjMTYuc3ZnXCJ9LDcyNjYyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3BpY2tlcl92ZXJpZnlfc21zX2IxNWRkYTg4OWU5ODAzZTlkNmJlLnBuZ1wifSw3OTE5MzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X3Ntc18yN2E2ZDE4YjU2ZjQ2ODE4NDIwZS5zdmdcIn0sMTQ4MTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9waWNrZXJfdmVyaWZ5X3Ntc193aGl0ZV8zMDJkYzlkZWNiZGZhZThlYWUzYy5wbmdcIn0sNTUwNDc6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvcGlja2VyX3ZlcmlmeV9zbXNfd2hpdGVfYWI2ZDU4M2QwNTM1NTkxMjJiMDAuc3ZnXCJ9LDgxNjYxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3NldHRpbmdzXzMxZTlmODg0Y2RmN2I3MzczNjc3LnBuZ1wifSw5OTk2OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3NldHRpbmdzXzVjOWNiODM3YjRiYTE4NjUyMGExLnN2Z1wifSw0MTY5NTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9zaWduaW5fb3B0aW9uc19mY2Q2MmM4ZTZlY2FiNmJkNjY0Ny5wbmdcIn0sMzM0NTpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy9zaWduaW5fb3B0aW9uc180ZTQ4MDQ2Y2U3NGY0Yjg5ZDQ1MC5zdmdcIn0sNTQ3MTg6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvc2lnbmluX29wdGlvbnNfd2hpdGVfOTQ1Y2M1YTA2M2I0MzM3YjBlMTEucG5nXCJ9LDQ4NzI1OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3NpZ25pbl9vcHRpb25zX3doaXRlXzYzNWI3N2Y3YThlYjc2Zjk0YmVmLnN2Z1wifSw1NjMxNjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPW4ucCtcImltYWdlcy90aW1lcl9iNzA4Njc0ZDdlY2I4YTljOTdhZC5wbmdcIn0sNDY4MTY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uLnArXCJpbWFnZXMvdGltZXJfZTZkNzQ5YjJjNzZmNGFlZWYxOTUuc3ZnXCJ9LDc5NTAyOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3VzZXJfd2l0aF9mYW1pbHlfMzAzMTU5Yzk0YTkzNGU0Yzk4MjYucG5nXCJ9LDMxMjI5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3VzZXJfd2l0aF9mYW1pbHlfZGY3NWFmOTFmMzI1Mjc4MWY1OGMuc3ZnXCJ9LDI3MzM5OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3VzZXJfd2l0aF9mYW1pbHlfd2hpdGVfMTZhNWFmYzA3ZDk3YmM5ZTUyZDEucG5nXCJ9LDU1NzUwOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3VzZXJfd2l0aF9mYW1pbHlfd2hpdGVfMjU2NzM0Mzc3MTA2ZWNiMmY1YTUuc3ZnXCJ9LDQ3MjYxOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bi5wK1wiaW1hZ2VzL3hib3hfcmVtb3RlX3FyY29kZV9kODhjZjNmZmZkZTI3OTVmNTMxNS5zdmdcIn19LGE9e307ZnVuY3Rpb24gbChlKXt2YXIgdD1hW2VdO2lmKHZvaWQgMCE9PXQpcmV0dXJuIHQuZXhwb3J0czt2YXIgbj1hW2VdPXtleHBvcnRzOnt9fTtyZXR1cm4gaVtlXShuLG4uZXhwb3J0cyxsKSxuLmV4cG9ydHN9bC5tPWksbC5uPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiBsLmQodCx7YTp0fSksdH0sdD1PYmplY3QuZ2V0UHJvdG90eXBlT2Y/ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffSxsLnQ9ZnVuY3Rpb24obixyKXtpZigxJnImJihuPXRoaXMobikpLDgmcilyZXR1cm4gbjtpZihcIm9iamVjdFwiPT10eXBlb2YgbiYmbil7aWYoNCZyJiZuLl9fZXNNb2R1bGUpcmV0dXJuIG47aWYoMTYmciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50aGVuKXJldHVybiBufXZhciBvPU9iamVjdC5jcmVhdGUobnVsbCk7bC5yKG8pO3ZhciBpPXt9O2U9ZXx8W251bGwsdCh7fSksdChbXSksdCh0KV07Zm9yKHZhciBhPTImciYmbjtcIm9iamVjdFwiPT10eXBlb2YgYSYmIX5lLmluZGV4T2YoYSk7YT10KGEpKU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGEpLmZvckVhY2goKGZ1bmN0aW9uKGUpe2lbZV09ZnVuY3Rpb24oKXtyZXR1cm4gbltlXX19KSk7cmV0dXJuIGkuZGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiBufSxsLmQobyxpKSxvfSxsLmQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClsLm8odCxuKSYmIWwubyhlLG4pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9LGwuZj17fSxsLmU9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKGwuZikucmVkdWNlKChmdW5jdGlvbih0LG4pe3JldHVybiBsLmZbbl0oZSx0KSx0fSksW10pKX0sbC51PWZ1bmN0aW9uKGUpe3JldHVyblwiY2h1bmtzL1wiKyh7MjUxOlwib25lZHMtYW5hbHl0aWNzLWpzXCIsNDM1OlwiY3VzdG9tLWNzcy1sb2FkZXJcIiw0ODk6XCJjeGhcIiw1MzM6XCJnYW1lcGFkLW5hdmlnYXRpb25cIn1bZV18fGUpK1wiX1wiK3sxMjI6XCI2ZGU5YmU1M2M2ZDhlNTdhZmVhN1wiLDI1MTpcIjU0YjE3MjRhZjFiMDVlMmJhM2RiXCIsNDM1OlwiY2YyZjcxOTRjOTI4YTgyZmUyOGVcIiw0ODk6XCIzZjIwZDNkNzdiZmFiOTYzNjBhY1wiLDUzMzpcImJkM2NiYmNhOWE4MjUyMTEzNTU4XCJ9W2VdK1wiX2VuLmpzXCJ9LGwubWluaUNzc0Y9ZnVuY3Rpb24oZSl7fSxsLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2goZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxsLm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LG49e30scj1cIkBtc2lkZW50aXR5L3Npc3UtbXNhOlwiLGwubD1mdW5jdGlvbihlLHQsbyxpKXtpZihuW2VdKW5bZV0ucHVzaCh0KTtlbHNle3ZhciBhLHM7aWYodm9pZCAwIT09bylmb3IodmFyIGM9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIiksdT0wO3U8Yy5sZW5ndGg7dSsrKXt2YXIgZD1jW3VdO2lmKGQuZ2V0QXR0cmlidXRlKFwic3JjXCIpPT1lfHxkLmdldEF0dHJpYnV0ZShcImRhdGEtd2VicGFja1wiKT09citvKXthPWQ7YnJlYWt9fWF8fChzPSEwLChhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpLmNoYXJzZXQ9XCJ1dGYtOFwiLGEudGltZW91dD0xMjAsbC5uYyYmYS5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGwubmMpLGEuc2V0QXR0cmlidXRlKFwiZGF0YS13ZWJwYWNrXCIscitvKSxhLnNyYz1sLnR1KGUpLDAhPT1hLnNyYy5pbmRleE9mKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4rXCIvXCIpJiYoYS5jcm9zc09yaWdpbj1cImFub255bW91c1wiKSksbltlXT1bdF07dmFyIGY9ZnVuY3Rpb24odCxyKXthLm9uZXJyb3I9YS5vbmxvYWQ9bnVsbCxjbGVhclRpbWVvdXQocCk7dmFyIG89bltlXTtpZihkZWxldGUgbltlXSxhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKSxvJiZvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKHIpfSkpLHQpcmV0dXJuIHQocil9LHA9c2V0VGltZW91dChmLmJpbmQobnVsbCx2b2lkIDAse3R5cGU6XCJ0aW1lb3V0XCIsdGFyZ2V0OmF9KSwxMmU0KTthLm9uZXJyb3I9Zi5iaW5kKG51bGwsYS5vbmVycm9yKSxhLm9ubG9hZD1mLmJpbmQobnVsbCxhLm9ubG9hZCkscyYmZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChhKX19LGwucj1mdW5jdGlvbihlKXtcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxsLnR0PWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PW8mJihvPXtjcmVhdGVTY3JpcHRVUkw6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9fSxcInVuZGVmaW5lZFwiIT10eXBlb2YgdHJ1c3RlZFR5cGVzJiZ0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5JiYobz10cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KFwiQG1zaWRlbnRpdHkvc2lzdS1tc2FcIixvKSkpLG99LGwudHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGwudHQoKS5jcmVhdGVTY3JpcHRVUkwoZSl9LGZ1bmN0aW9uKCl7dmFyIGU7bC5nLmltcG9ydFNjcmlwdHMmJihlPWwuZy5sb2NhdGlvbitcIlwiKTt2YXIgdD1sLmcuZG9jdW1lbnQ7aWYoIWUmJnQmJih0LmN1cnJlbnRTY3JpcHQmJihlPXQuY3VycmVudFNjcmlwdC5zcmMpLCFlKSl7dmFyIG49dC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtuLmxlbmd0aCYmKGU9bltuLmxlbmd0aC0xXS5zcmMpfWlmKCFlKXRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO2U9ZS5yZXBsYWNlKC8jLiokLyxcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLyxcIi9cIiksbC5wPWUrXCIuLi9cIn0oKSxmdW5jdGlvbigpe3ZhciBlPXs1MzU6MH07bC5mLmo9ZnVuY3Rpb24odCxuKXt2YXIgcj1sLm8oZSx0KT9lW3RdOnZvaWQgMDtpZigwIT09cilpZihyKW4ucHVzaChyWzJdKTtlbHNle3ZhciBvPW5ldyBQcm9taXNlKChmdW5jdGlvbihuLG8pe3I9ZVt0XT1bbixvXX0pKTtuLnB1c2goclsyXT1vKTt2YXIgaT1sLnArbC51KHQpLGE9bmV3IEVycm9yO2wubChpLChmdW5jdGlvbihuKXtpZihsLm8oZSx0KSYmKDAhPT0ocj1lW3RdKSYmKGVbdF09dm9pZCAwKSxyKSl7dmFyIG89biYmKFwibG9hZFwiPT09bi50eXBlP1wibWlzc2luZ1wiOm4udHlwZSksaT1uJiZuLnRhcmdldCYmbi50YXJnZXQuc3JjO2EubWVzc2FnZT1cIkxvYWRpbmcgY2h1bmsgXCIrdCtcIiBmYWlsZWQuXFxuKFwiK28rXCI6IFwiK2krXCIpXCIsYS5uYW1lPVwiQ2h1bmtMb2FkRXJyb3JcIixhLnR5cGU9byxhLnJlcXVlc3Q9aSxyWzFdKGEpfX0pLFwiY2h1bmstXCIrdCx0KX19O3ZhciB0PWZ1bmN0aW9uKHQsbil7dmFyIHIsbyxpPW5bMF0sYT1uWzFdLHM9blsyXSxjPTA7aWYoaS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gMCE9PWVbdF19KSkpe2ZvcihyIGluIGEpbC5vKGEscikmJihsLm1bcl09YVtyXSk7aWYocylzKGwpfWZvcih0JiZ0KG4pO2M8aS5sZW5ndGg7YysrKW89aVtjXSxsLm8oZSxvKSYmZVtvXSYmZVtvXVswXSgpLGVbb109MH0sbj1zZWxmLndlYnBhY2tDaHVua19tc2lkZW50aXR5X3Npc3VfbXNhPXNlbGYud2VicGFja0NodW5rX21zaWRlbnRpdHlfc2lzdV9tc2F8fFtdO24uZm9yRWFjaCh0LmJpbmQobnVsbCwwKSksbi5wdXNoPXQuYmluZChudWxsLG4ucHVzaC5iaW5kKG4pKX0oKSxsKDI4NzYxKSxsKDgzNTUzKTtsKDgzMjYzKX0oKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvZ2luX2VuX2Q3OGI0ZTk0YjdiNDA1MjkwNDZmLmpzLm1hcCJ9LCAiaGVhZGVyc1NpemUiOiAwLCAiYm9keVNpemUiOiAyMzQxMjQsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDIzNDEyNH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogMC4wNDUsICJjb25uZWN0IjogMjMuMDkyLCAic3NsIjogMTguMDAxLCAic2VuZCI6IDAsICJ3YWl0IjogNy4wODIsICJyZWNlaXZlIjogMjIuMjg1fSwgInBhZ2VyZWYiOiAicGFnZUA4MTEzN2NmMzljYTAzZWVlZGE1YWFlY2I3M2YwYWZlNiIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6MjgwMDoyMzM6MWNiNzoyNjFiOjFmOWM6MjA3NDozY10iLCAiX3NlcnZlclBvcnQiOiA0NDMsICJfc2VjdXJpdHlEZXRhaWxzIjogeyJwcm90b2NvbCI6ICJUTFMgMS4zIiwgInN1YmplY3ROYW1lIjogImlkZW50aXR5Y2RuLm1zYXV0aC5uZXQiLCAiaXNzdWVyIjogIk1pY3Jvc29mdCBBenVyZSBSU0EgVExTIElzc3VpbmcgQ0EgMDQiLCAidmFsaWRGcm9tIjogMTcxNzcxOTE3NSwgInZhbGlkVG8iOiAxNzQ4ODIzMTc1fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjQtMDgtMDFUMjA6MzA6MDUuMjEzWiIsICJ0aW1lIjogNDUuMzEsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL2xvZ2luY2RuLm1zZnRhdXRoLm5ldC9zaGFyZWQvNS9jaHVua3Mvb25lZHMtYW5hbHl0aWNzLWpzXzU0YjE3MjRhZjFiMDVlMmJhM2RiX2VuLmpzIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAibG9naW5jZG4ubXNmdGF1dGgubmV0In0sIHsibmFtZSI6ICI6bWV0aG9kIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiOnBhdGgiLCAidmFsdWUiOiAiL3NoYXJlZC81L2NodW5rcy9vbmVkcy1hbmFseXRpY3MtanNfNTRiMTcyNGFmMWIwNWUyYmEzZGJfZW4uanMifSwgeyJuYW1lIjogIjpzY2hlbWUiLCAidmFsdWUiOiAiaHR0cHMifSwgeyJuYW1lIjogImFjY2VwdCIsICJ2YWx1ZSI6ICIqLyoifSwgeyJuYW1lIjogImFjY2VwdC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciwgenN0ZCJ9LCB7Im5hbWUiOiAiYWNjZXB0LWxhbmd1YWdlIiwgInZhbHVlIjogImVuLVVTLGVuO3E9MC45In0sIHsibmFtZSI6ICJvcmlnaW4iLCAidmFsdWUiOiAiaHR0cHM6Ly9sb2dpbi5saXZlLmNvbSJ9LCB7Im5hbWUiOiAicmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwczovL2xvZ2luLmxpdmUuY29tLyJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhIiwgInZhbHVlIjogIlwiQ2hyb21pdW1cIjt2PVwiMTI3XCIsIFwiTm90KUE7QnJhbmRcIjt2PVwiOTlcIiJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLW1vYmlsZSIsICJ2YWx1ZSI6ICI/MCJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLXBsYXRmb3JtIiwgInZhbHVlIjogIlwiV2luZG93c1wiIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJzY3JpcHQifSwgeyJuYW1lIjogInNlYy1mZXRjaC1tb2RlIiwgInZhbHVlIjogImNvcnMifSwgeyJuYW1lIjogInNlYy1mZXRjaC1zaXRlIiwgInZhbHVlIjogImNyb3NzLXNpdGUifSwgeyJuYW1lIjogInVzZXItYWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyNy4wLjY1MzMuMTcgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW10sICJoZWFkZXJzU2l6ZSI6IDY3NiwgImJvZHlTaXplIjogMH0sICJyZXNwb25zZSI6IHsic3RhdHVzIjogMjAwLCAic3RhdHVzVGV4dCI6ICIiLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiYWNjZXB0LXJhbmdlcyIsICJ2YWx1ZSI6ICJieXRlcyJ9LCB7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luIiwgInZhbHVlIjogIioifSwgeyJuYW1lIjogImFjY2Vzcy1jb250cm9sLWV4cG9zZS1oZWFkZXJzIiwgInZhbHVlIjogIngtbXMtcmVxdWVzdC1pZCxTZXJ2ZXIseC1tcy12ZXJzaW9uLENvbnRlbnQtVHlwZSxDb250ZW50LUVuY29kaW5nLENhY2hlLUNvbnRyb2wsTGFzdC1Nb2RpZmllZCxFVGFnLENvbnRlbnQtTUQ1LHgtbXMtbGVhc2Utc3RhdHVzLHgtbXMtYmxvYi10eXBlLENvbnRlbnQtTGVuZ3RoLERhdGUsVHJhbnNmZXItRW5jb2RpbmcifSwgeyJuYW1lIjogImFnZSIsICJ2YWx1ZSI6ICIxMDQ2MzAwNCJ9LCB7Im5hbWUiOiAiY2FjaGUtY29udHJvbCIsICJ2YWx1ZSI6ICJwdWJsaWMsIG1heC1hZ2U9MzE1MzYwMDAifSwgeyJuYW1lIjogImNvbnRlbnQtZW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCJ9LCB7Im5hbWUiOiAiY29udGVudC1sZW5ndGgiLCAidmFsdWUiOiAiMzI4MjEifSwgeyJuYW1lIjogImNvbnRlbnQtbWQ1IiwgInZhbHVlIjogIkhsdDJXekxGOWxsejJEWHA3ajYvSUE9PSJ9LCB7Im5hbWUiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJ9LCB7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJUaHUsIDAxIEF1ZyAyMDI0IDIwOjMwOjA1IEdNVCJ9LCB7Im5hbWUiOiAiZXRhZyIsICJ2YWx1ZSI6ICIweDhEQzUwNTc5MzREMDhFNCJ9LCB7Im5hbWUiOiAibGFzdC1tb2RpZmllZCIsICJ2YWx1ZSI6ICJTYXQsIDMwIE1hciAyMDI0IDAxOjIwOjI0IEdNVCJ9LCB7Im5hbWUiOiAic2VydmVyIiwgInZhbHVlIjogIkVDQWNjIChmcmMvNENENCkifSwgeyJuYW1lIjogInZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJ4LWNhY2hlIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAieC1tcy1ibG9iLXR5cGUiLCAidmFsdWUiOiAiQmxvY2tCbG9iIn0sIHsibmFtZSI6ICJ4LW1zLWxlYXNlLXN0YXR1cyIsICJ2YWx1ZSI6ICJ1bmxvY2tlZCJ9LCB7Im5hbWUiOiAieC1tcy1yZXF1ZXN0LWlkIiwgInZhbHVlIjogIjFkNDU5ZmEwLTkwMWUtMDBlMi02ZDI4LTg1MTk1NTAwMDAwMCJ9LCB7Im5hbWUiOiAieC1tcy12ZXJzaW9uIiwgInZhbHVlIjogIjIwMDktMDktMTkifV0sICJjb250ZW50IjogeyJzaXplIjogOTA2OTAsICJtaW1lVHlwZSI6ICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiLCAiY29tcHJlc3Npb24iOiA1NzY3NSwgInRleHQiOiAiLyohIEZvciBsaWNlbnNlIGluZm9ybWF0aW9uIHBsZWFzZSBzZWUgb25lZHMtYW5hbHl0aWNzLWpzXzU0YjE3MjRhZjFiMDVlMmJhM2RiX2VuLmpzLkxJQ0VOU0UudHh0ICovXG5cInVzZSBzdHJpY3RcIjsoc2VsZi53ZWJwYWNrQ2h1bmtfbXNpZGVudGl0eV9zaXN1X21zYT1zZWxmLndlYnBhY2tDaHVua19tc2lkZW50aXR5X3Npc3VfbXNhfHxbXSkucHVzaChbWzI1MV0sezQxNjk2OmZ1bmN0aW9uKG4sZSx0KXt0LnIoZSksdC5kKGUse0FwcEluc2lnaHRzQ29yZTpmdW5jdGlvbigpe3JldHVybiBxb30sQXBwbGljYXRpb25JbnNpZ2h0czpmdW5jdGlvbigpe3JldHVybiBqYX0sQkVfUFJPRklMRTpmdW5jdGlvbigpe3JldHVybiBWb30sQmFzZVRlbGVtZXRyeVBsdWdpbjpmdW5jdGlvbigpe3JldHVybiBkaX0sQ2xvdWQ6ZnVuY3Rpb24oKXtyZXR1cm4gVml9LENvcmVVdGlsczpmdW5jdGlvbigpe3JldHVybiBIcn0sRGV2aWNlOmZ1bmN0aW9uKCl7cmV0dXJuIFhpfSxEaWFnbm9zdGljTG9nZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGV0fSxFdmVudExhdGVuY3k6ZnVuY3Rpb24oKXtyZXR1cm4gR2F9LEV2ZW50UGVyc2lzdGVuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gUWF9LEV2ZW50c0Rpc2NhcmRlZFJlYXNvbjpmdW5jdGlvbigpe3JldHVybiBIb30sSW50ZXJuYWxBcHBJbnNpZ2h0c0NvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gS299LExvYzpmdW5jdGlvbigpe3JldHVybiAkaX0sTG9nZ2luZ1NldmVyaXR5OmZ1bmN0aW9uKCl7cmV0dXJuIFdhfSxNaW5DaGFubmVsUHJpb3J0eTpmdW5jdGlvbigpe3JldHVybiAkYX0sTlJUX1BST0ZJTEU6ZnVuY3Rpb24oKXtyZXR1cm4gV299LE5vdGlmaWNhdGlvbk1hbmFnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gVW99LFBvc3RDaGFubmVsOmZ1bmN0aW9uKCl7cmV0dXJuIHFhfSxQcm9wZXJ0aWVzUGx1Z2luOmZ1bmN0aW9uKCl7cmV0dXJuIFBvfSxSVF9QUk9GSUxFOmZ1bmN0aW9uKCl7cmV0dXJuIGpvfSxTZXNzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIEJpfSxUZWxlbWV0cnlDb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIF9vfSxUcmFjZUxldmVsOmZ1bmN0aW9uKCl7cmV0dXJuIEphfSxWYWx1ZUtpbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gWGF9LF9JbnRlcm5hbExvZ01lc3NhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gWmV9LF9JbnRlcm5hbE1lc3NhZ2VJZDpmdW5jdGlvbigpe3JldHVybiBWYX0sY29va2llQXZhaWxhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGJ0fSxnZXRJU09TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gam59LGlzQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gQm59LGlzQmVhY29uc1N1cHBvcnRlZDpmdW5jdGlvbigpe3JldHVybiB6ZX0saXNCb29sZWFuOmZ1bmN0aW9uKCl7cmV0dXJuIHFufSxpc0xhdGVuY3k6ZnVuY3Rpb24oKXtyZXR1cm4gQXJ9LGlzTnVtYmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHpufSxpc1JlYWN0TmF0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIEJlfSxpc1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBLbn0saXNVaW50OEFycmF5QXZhaWxhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIERyfSxpc1ZhbHVlQXNzaWduZWQ6ZnVuY3Rpb24oKXtyZXR1cm4ga3J9fSk7dmFyIHI9XCJmdW5jdGlvblwiLGk9XCJvYmplY3RcIixvPVwidW5kZWZpbmVkXCIsYT1PYmplY3QsdT1hLnByb3RvdHlwZSxjPWEuYXNzaWduLHM9YS5jcmVhdGUsbD1hLmRlZmluZVByb3BlcnR5LGY9dS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBkKG4pe3JldHVybiBkPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG59OmZ1bmN0aW9uKG4pe3JldHVybiBuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJm4uY29uc3RydWN0b3I9PT1TeW1ib2wmJm4hPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIG59LGQobil9dmFyIHY9bnVsbDtmdW5jdGlvbiBwKG4pe3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgZT0hMT09PW4/bnVsbDp2O3JldHVybiBlfHwoKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBnbG9iYWxUaGlzP1widW5kZWZpbmVkXCI6ZChnbG9iYWxUaGlzKSkhPT1vJiYoZT1nbG9iYWxUaGlzKSxlfHwoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHNlbGY/XCJ1bmRlZmluZWRcIjpkKHNlbGYpKT09PW98fChlPXNlbGYpLGV8fChcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI6ZCh3aW5kb3cpKT09PW98fChlPXdpbmRvdyksZXx8KHZvaWQgMD09PXQuZz9cInVuZGVmaW5lZFwiOmQodC5nKSk9PT1vfHwoZT10LmcpLHY9ZSksZX1mdW5jdGlvbiBnKG4pe3Rocm93IG5ldyBUeXBlRXJyb3Iobil9ZnVuY3Rpb24geShuKXtpZihzKXJldHVybiBzKG4pO2lmKG51bGw9PW4pcmV0dXJue307dmFyIGU9ZChuKTtmdW5jdGlvbiB0KCl7fXJldHVybiBlIT09aSYmZSE9PXImJmcoXCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdDpcIituKSx0LnByb3RvdHlwZT1uLG5ldyB0fWZ1bmN0aW9uIGgobil7cmV0dXJuIGg9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbn06ZnVuY3Rpb24obil7cmV0dXJuIG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmbi5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmbiE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2Ygbn0saChuKX0ocCgpfHx7fSkuU3ltYm9sLChwKCl8fHt9KS5SZWZsZWN0O3ZhciBtLGI9Y3x8ZnVuY3Rpb24obil7Zm9yKHZhciBlLHQ9MSxyPWFyZ3VtZW50cy5sZW5ndGg7dDxyO3QrKylmb3IodmFyIGkgaW4gZT1hcmd1bWVudHNbdF0pdS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJihuW2ldPWVbaV0pO3JldHVybiBufSxTPWZ1bmN0aW9uKG4sZSl7cmV0dXJuIFM9YS5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihuLGUpe24uX19wcm90b19fPWV9fHxmdW5jdGlvbihuLGUpe2Zvcih2YXIgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJihuW3RdPWVbdF0pfSxTKG4sZSl9O2Z1bmN0aW9uIEMobixlKXtmdW5jdGlvbiB0KCl7dGhpcy5jb25zdHJ1Y3Rvcj1ufWgoZSkhPT1yJiZudWxsIT09ZSYmZyhcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIrU3RyaW5nKGUpK1wiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIiksUyhuLGUpLG4ucHJvdG90eXBlPW51bGw9PT1lP3koZSk6KHQucHJvdG90eXBlPWUucHJvdG90eXBlLG5ldyB0KX1mdW5jdGlvbiB4KG4sZSl7Zm9yKHZhciB0PTAscj1lLmxlbmd0aCxpPW4ubGVuZ3RoO3Q8cjt0KyssaSsrKW5baV09ZVt0XTtyZXR1cm4gbn1mdW5jdGlvbiBJKG4pe3JldHVybiBJPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG59OmZ1bmN0aW9uKG4pe3JldHVybiBuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJm4uY29uc3RydWN0b3I9PT1TeW1ib2wmJm4hPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIG59LEkobil9dmFyIHc9XCJ1bmRlZmluZWRcIixUPVwiY29uc3RydWN0b3JcIixfPVwicHJvdG90eXBlXCIsRT1cImZ1bmN0aW9uXCIsUD1cIl9keW5DbGFzc1wiLGs9XCJfdW5rbm93bl9cIixOPVwiX2R5bl9fcHJvdG9fX1wiLEQ9T2JqZWN0LEE9RC5nZXRQcm90b3R5cGVPZixNPUQuZ2V0T3duUHJvcGVydHlOYW1lczt2YXIgTyxSPSgoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGdsb2JhbFRoaXM/XCJ1bmRlZmluZWRcIjpJKGdsb2JhbFRoaXMpKSE9PXcmJihPPWdsb2JhbFRoaXMpLE98fChcInVuZGVmaW5lZFwiPT10eXBlb2Ygc2VsZj9cInVuZGVmaW5lZFwiOkkoc2VsZikpPT09d3x8KE89c2VsZiksT3x8KFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3c/XCJ1bmRlZmluZWRcIjpJKHdpbmRvdykpPT09d3x8KE89d2luZG93KSxPfHwodm9pZCAwPT09dC5nP1widW5kZWZpbmVkXCI6SSh0LmcpKT09PXd8fChPPXQuZyksT3x8e30pLEw9Ui5fX2R5blByb3RvJEdibHx8KFIuX19keW5Qcm90byRHYmw9e286KG09e30sbS5zZXRJbnN0RnVuY3M9ITAsbS51c2VCYXNlSW5zdD0hMCxtKSxuOjFlM30pO2Z1bmN0aW9uIEYobixlKXtyZXR1cm4gbiYmRC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLGUpfWZ1bmN0aW9uIEIobil7cmV0dXJuIG4mJihuPT09RC5wcm90b3R5cGV8fG49PT1BcnJheS5wcm90b3R5cGUpfWZ1bmN0aW9uIFUobil7cmV0dXJuIEIobil8fG49PT1GdW5jdGlvbi5wcm90b3R5cGV9ZnVuY3Rpb24gSyhuKXt2YXIgZTtpZihuKXtpZihBKXJldHVybiBBKG4pO3ZhciB0PW4uX19wcm90b19ffHxuLnByb3RvdHlwZXx8KG4uY29uc3RydWN0b3I/bi5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6bnVsbCk7ZT1uLl9keW5fX3Byb3RvX198fHQsRihuLE4pfHwoZGVsZXRlIG4uX2R5bkluc3RQcm90byxlPW4uX2R5bl9fcHJvdG9fXz1uLl9keW5JbnN0UHJvdG98fG4uX2R5bl9fcHJvdG9fXyxuLl9keW5JbnN0UHJvdG89dCl9cmV0dXJuIGV9ZnVuY3Rpb24geihuLGUpe3ZhciB0PVtdO2lmKE0pdD1NKG4pO2Vsc2UgZm9yKHZhciByIGluIG4pXCJzdHJpbmdcIj09dHlwZW9mIHImJkYobixyKSYmdC5wdXNoKHIpO2lmKHQmJnQubGVuZ3RoPjApZm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspZSh0W2ldKX1mdW5jdGlvbiBxKG4sZSx0KXtyZXR1cm4gZSE9PVQmJkkobltlXSk9PT1FJiYodHx8RihuLGUpKX1mdW5jdGlvbiBIKG4pe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJEeW5hbWljUHJvdG86IFwiK24pfWZ1bmN0aW9uIGoobixlKXtmb3IodmFyIHQ9bi5sZW5ndGgtMTt0Pj0wO3QtLSlpZihuW3RdPT09ZSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBXKG4sZSx0LHIpe3ZhciBpPW51bGw7aWYobiYmRih0LFApKXt2YXIgbz1uLl9keW5JbnN0RnVuY3N8fHt9O2lmKChpPShvW3QuX2R5bkNsYXNzXXx8e30pW2VdKXx8SChcIk1pc3NpbmcgW1wiK2UrXCJdIFwiK0UpLCFpLl9keW5JbnN0Q2hrJiYhMSE9PW8uX2R5bkluc3RDaGspe2Zvcih2YXIgYT0hRihuLGUpLHU9SyhuKSxjPVtdO2EmJnUmJiFVKHUpJiYhaihjLHUpOyl7dmFyIHM9dVtlXTtpZihzKXthPXM9PT1yO2JyZWFrfWMucHVzaCh1KSx1PUsodSl9dHJ5e2EmJihuW2VdPWkpLGkuX2R5bkluc3RDaGs9MX1jYXRjaChsKXtvLl9keW5JbnN0Q2hrPSExfX19cmV0dXJuIGl9ZnVuY3Rpb24gVihuLGUsdCl7dmFyIHI9ZVtuXTtyZXR1cm4gcj09PXQmJihyPUsoZSlbbl0pLEkocikhPT1FJiZIKFwiW1wiK24rXCJdIGlzIG5vdCBhIFwiK0UpLHJ9ZnVuY3Rpb24gWChuLGUsdCxyLGkpe2lmKCFCKG4pKXt2YXIgbz10Ll9keW5JbnN0RnVuY3M9dC5fZHluSW5zdEZ1bmNzfHx7fSxhPW9bZV09b1tlXXx8e307ITEhPT1vLl9keW5JbnN0Q2hrJiYoby5fZHluSW5zdENoaz0hIWkpLHoodCwoZnVuY3Rpb24oZSl7cSh0LGUsITEpJiZ0W2VdIT09cltlXSYmKGFbZV09dFtlXSxkZWxldGUgdFtlXSwoIUYobixlKXx8bltlXSYmIW5bZV0uX2lzRHluUHJveHkpJiYobltlXT1mdW5jdGlvbihuLGUpe3ZhciB0PWZ1bmN0aW9uIHQoKXtyZXR1cm4oVyh0aGlzLGUsbix0KXx8VihlLG4sdCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIHQuX2lzRHluUHJveHk9MSx0fShuLGUpKSl9KSl9fWZ1bmN0aW9uIEcobixlKXtyZXR1cm4gRihuLF8pP24ubmFtZXx8ZXx8azooKG58fHt9KS5jb25zdHJ1Y3Rvcnx8e30pLm5hbWV8fGV8fGt9ZnVuY3Rpb24gUShuLGUsdCxyKXtGKG4sXyl8fEgoXCJ0aGVDbGFzcyBpcyBhbiBpbnZhbGlkIGNsYXNzIGRlZmluaXRpb24uXCIpO3ZhciBpPW4ucHJvdG90eXBlOyhmdW5jdGlvbihuLGUpe2lmKEEpe2Zvcih2YXIgdD1bXSxyPUsoZSk7ciYmIVUocikmJiFqKHQscik7KXtpZihyPT09bilyZXR1cm4hMDt0LnB1c2gocikscj1LKHIpfXJldHVybiExfXJldHVybiEwfSkoaSxlKXx8SChcIltcIitHKG4pK1wiXSBub3QgaW4gaGllcmFyY2h5IG9mIFtcIitHKGUpK1wiXVwiKTt2YXIgbz1udWxsO0YoaSxQKT9vPWkuX2R5bkNsYXNzOihvPVwiX2R5bkNscyRcIitHKG4sXCJfXCIpK1wiJFwiK0wubixMLm4rKyxpLl9keW5DbGFzcz1vKTt2YXIgYT1RLl9kZk9wdHMsdT0hIWEudXNlQmFzZUluc3Q7dSYmciYmdm9pZCAwIT09ci51c2VCYXNlSW5zdCYmKHU9ISFyLnVzZUJhc2VJbnN0KTt2YXIgYz1mdW5jdGlvbihuKXt2YXIgZT17fTtyZXR1cm4geihuLChmdW5jdGlvbih0KXshZVt0XSYmcShuLHQsITEpJiYoZVt0XT1uW3RdKX0pKSxlfShlKSxzPWZ1bmN0aW9uKG4sZSx0LHIpe2Z1bmN0aW9uIGkobixlLHQpe3ZhciBpPWVbdF07aWYoaS5faXNEeW5Qcm94eSYmcil7dmFyIG89bi5fZHluSW5zdEZ1bmNzfHx7fTshMSE9PW8uX2R5bkluc3RDaGsmJihpPShvW2UuX2R5bkNsYXNzXXx8e30pW3RdfHxpKX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaS5hcHBseShuLGFyZ3VtZW50cyl9fXZhciBvPXt9O3oodCwoZnVuY3Rpb24obil7b1tuXT1pKGUsdCxuKX0pKTtmb3IodmFyIGE9SyhuKSx1PVtdO2EmJiFVKGEpJiYhaih1LGEpOyl6KGEsKGZ1bmN0aW9uKG4peyFvW25dJiZxKGEsbiwhQSkmJihvW25dPWkoZSxhLG4pKX0pKSx1LnB1c2goYSksYT1LKGEpO3JldHVybiBvfShpLGUsYyx1KTt0KGUscyk7dmFyIGw9ISFBJiYhIWEuc2V0SW5zdEZ1bmNzO2wmJnImJihsPSEhci5zZXRJbnN0RnVuY3MpLFgoaSxvLGUsYywhMSE9PWwpfVEuX2RmT3B0cz1MLm87dmFyIEo9XCJcIiwkPVwiY2hhbm5lbHNcIixZPVwiY3JlYXRlUGVyZk1nclwiLFo9XCJleHRlbnNpb25Db25maWdcIixubj1cImV2ZW50c1NlbnRcIixlbj1cImV2ZW50c0Rpc2NhcmRlZFwiLHRuPVwiZXZlbnRzU2VuZFJlcXVlc3RcIixybj1cInBlcmZFdmVudFwiLG9uPVwiZXJyb3JUb0NvbnNvbGVcIixhbj1cIndhcm5Ub0NvbnNvbGVcIjtmdW5jdGlvbiB1bihuKXtyZXR1cm4gdW49XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbn06ZnVuY3Rpb24obil7cmV0dXJuIG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmbi5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmbiE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2Ygbn0sdW4obil9dmFyIGNuPVwiY29uc3RydWN0b3JcIixzbj1sLGxuPWEuZnJlZXplLGZuPShhLnNlYWwsYS5rZXlzKSxkbj1TdHJpbmcucHJvdG90eXBlLHZuPWRuLnRyaW0scG49ZG4uZW5kc1dpdGgsZ249ZG4uc3RhcnRzV2l0aCx5bj1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyxobj1BcnJheS5pc0FycmF5LG1uPXUudG9TdHJpbmcsYm49Zi50b1N0cmluZyxTbj1ibi5jYWxsKGEpLENuPS8tKFthLXpdKS9nLHhuPS8oW15cXHdcXGRfJF0pL2csSW49L14oXFxkK1tcXHdcXGRfJF0pLyx3bj1PYmplY3QuZ2V0UHJvdG90eXBlT2Y7ZnVuY3Rpb24gVG4obixlKXtyZXR1cm4gdW4obik9PT1lfWZ1bmN0aW9uIF9uKG4pe3JldHVybiB2b2lkIDA9PT1ufHx1bihuKT09PW99ZnVuY3Rpb24gRW4obil7cmV0dXJuIG51bGw9PT1ufHxfbihuKX1mdW5jdGlvbiBQbihuKXtyZXR1cm4hRW4obil9ZnVuY3Rpb24ga24obixlKXtyZXR1cm4hKCFufHwhZi5jYWxsKG4sZSkpfWZ1bmN0aW9uIE5uKG4pe3JldHVybiEoIW58fHVuKG4pIT09aSl9ZnVuY3Rpb24gRG4obil7cmV0dXJuISghbnx8dW4obikhPT1yKX1mdW5jdGlvbiBBbihuKXt2YXIgZT1uO3JldHVybiBlJiZLbihlKSYmKGU9KGU9KGU9ZS5yZXBsYWNlKENuLChmdW5jdGlvbihuLGUpe3JldHVybiBlLnRvVXBwZXJDYXNlKCl9KSkpLnJlcGxhY2UoeG4sXCJfXCIpKS5yZXBsYWNlKEluLChmdW5jdGlvbihuLGUpe3JldHVyblwiX1wiK2V9KSkpLGV9ZnVuY3Rpb24gTW4obixlKXtpZihuKWZvcih2YXIgdCBpbiBuKWYuY2FsbChuLHQpJiZlLmNhbGwobix0LG5bdF0pfWZ1bmN0aW9uIE9uKG4sZSl7dmFyIHQ9ITE7cmV0dXJuIG4mJmUmJiEodD1uPT09ZSkmJih0PXBuP24uZW5kc1dpdGgoZSk6ZnVuY3Rpb24obixlKXt2YXIgdD0hMSxyPWU/ZS5sZW5ndGg6MCxpPW4/bi5sZW5ndGg6MDtpZihyJiZpJiZpPj1yJiYhKHQ9bj09PWUpKXtmb3IodmFyIG89aS0xLGE9ci0xO2E+PTA7YS0tKXtpZihuW29dIT1lW2FdKXJldHVybiExO28tLX10PSEwfXJldHVybiB0fShuLGUpKSx0fWZ1bmN0aW9uIFJuKG4sZSl7dmFyIHQ9ITE7cmV0dXJuIG4mJmUmJiEodD1uPT09ZSkmJih0PWduP24uc3RhcnRzV2l0aChlKTpmdW5jdGlvbihuLGUpe3ZhciB0PSExLHI9ZT9lLmxlbmd0aDowO2lmKG4mJnImJm4ubGVuZ3RoPj1yJiYhKHQ9bj09PWUpKXtmb3IodmFyIGk9MDtpPHI7aSsrKWlmKG5baV0hPT1lW2ldKXJldHVybiExO3Q9ITB9cmV0dXJuIHR9KG4sZSkpLHR9ZnVuY3Rpb24gTG4obixlKXtyZXR1cm4hKCFufHwhZSkmJi0xIT09bi5pbmRleE9mKGUpfWZ1bmN0aW9uIEZuKG4pe3JldHVybiEoIW58fFwiW29iamVjdCBEYXRlXVwiIT09bW4uY2FsbChuKSl9dmFyIEJuPWhufHxmdW5jdGlvbihuKXtyZXR1cm4hKCFufHxcIltvYmplY3QgQXJyYXldXCIhPT1tbi5jYWxsKG4pKX07ZnVuY3Rpb24gVW4obil7cmV0dXJuISghbnx8XCJbb2JqZWN0IEVycm9yXVwiIT09bW4uY2FsbChuKSl9ZnVuY3Rpb24gS24obil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIG59ZnVuY3Rpb24gem4obil7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIG59ZnVuY3Rpb24gcW4obil7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBufWZ1bmN0aW9uIEhuKG4pe3ZhciBlPSExO2lmKG4mJlwib2JqZWN0XCI9PT11bihuKSl7dmFyIHQ9d24/d24obik6ZnVuY3Rpb24obil7aWYobil7aWYod24pcmV0dXJuIHduKG4pO3ZhciBlPW4uX19wcm90b19ffHxuLnByb3RvdHlwZXx8bi5jb25zdHJ1Y3RvcjtpZihlKXJldHVybiBlfXJldHVybiBudWxsfShuKTt0Pyh0LmNvbnN0cnVjdG9yJiZmLmNhbGwodCxjbikmJih0PXQuY29uc3RydWN0b3IpLGU9dW4odCk9PT1yJiZibi5jYWxsKHQpPT09U24pOmU9ITB9cmV0dXJuIGV9ZnVuY3Rpb24gam4obil7aWYobilyZXR1cm4geW4/bi50b0lTT1N0cmluZygpOmZ1bmN0aW9uKG4pe2lmKG4mJm4uZ2V0VVRDRnVsbFllYXIpe3ZhciBlPWZ1bmN0aW9uKG4pe3ZhciBlPVN0cmluZyhuKTtyZXR1cm4gMT09PWUubGVuZ3RoJiYoZT1cIjBcIitlKSxlfTtyZXR1cm4gbi5nZXRVVENGdWxsWWVhcigpK1wiLVwiK2Uobi5nZXRVVENNb250aCgpKzEpK1wiLVwiK2Uobi5nZXRVVENEYXRlKCkpK1wiVFwiK2Uobi5nZXRVVENIb3VycygpKStcIjpcIitlKG4uZ2V0VVRDTWludXRlcygpKStcIjpcIitlKG4uZ2V0VVRDU2Vjb25kcygpKStcIi5cIitTdHJpbmcoKG4uZ2V0VVRDTWlsbGlzZWNvbmRzKCkvMWUzKS50b0ZpeGVkKDMpKS5zbGljZSgyLDUpK1wiWlwifX0obil9ZnVuY3Rpb24gV24obixlLHQpe3ZhciByPW4ubGVuZ3RoO3RyeXtmb3IodmFyIGk9MDtpPHImJighKGkgaW4gbil8fC0xIT09ZS5jYWxsKHR8fG4sbltpXSxpLG4pKTtpKyspO31jYXRjaChvKXt9fWZ1bmN0aW9uIFZuKG4sZSx0KXtpZihuKXtpZihuLmluZGV4T2YpcmV0dXJuIG4uaW5kZXhPZihlLHQpO3ZhciByPW4ubGVuZ3RoLGk9dHx8MDt0cnl7Zm9yKHZhciBvPU1hdGgubWF4KGk+PTA/aTpyLU1hdGguYWJzKGkpLDApO288cjtvKyspaWYobyBpbiBuJiZuW29dPT09ZSlyZXR1cm4gb31jYXRjaChhKXt9fXJldHVybi0xfWZ1bmN0aW9uIFhuKG4sZSx0KXt2YXIgcjtpZihuKXtpZihuLm1hcClyZXR1cm4gbi5tYXAoZSx0KTt2YXIgaT1uLmxlbmd0aCxvPXR8fG47cj1uZXcgQXJyYXkoaSk7dHJ5e2Zvcih2YXIgYT0wO2E8aTthKyspYSBpbiBuJiYoclthXT1lLmNhbGwobyxuW2FdLG4pKX1jYXRjaCh1KXt9fXJldHVybiByfWZ1bmN0aW9uIEduKG4sZSx0KXt2YXIgcjtpZihuKXtpZihuLnJlZHVjZSlyZXR1cm4gbi5yZWR1Y2UoZSx0KTt2YXIgaT1uLmxlbmd0aCxvPTA7aWYoYXJndW1lbnRzLmxlbmd0aD49MylyPWFyZ3VtZW50c1syXTtlbHNle2Zvcig7bzxpJiYhKG8gaW4gbik7KW8rKztyPW5bbysrXX1mb3IoO288aTspbyBpbiBuJiYocj1lKHIsbltvXSxvLG4pKSxvKyt9cmV0dXJuIHJ9ZnVuY3Rpb24gUW4obil7cmV0dXJuIG4mJihuPXZuJiZuLnRyaW0/bi50cmltKCk6bi5yZXBsYWNlP24ucmVwbGFjZSgvXlxccyt8KD89XFxzKVxccyskL2csSik6biksbn12YXIgSm49IXt0b1N0cmluZzpudWxsfS5wcm9wZXJ0eUlzRW51bWVyYWJsZShcInRvU3RyaW5nXCIpLCRuPVtcInRvU3RyaW5nXCIsXCJ0b0xvY2FsZVN0cmluZ1wiLFwidmFsdWVPZlwiLFwiaGFzT3duUHJvcGVydHlcIixcImlzUHJvdG90eXBlT2ZcIixcInByb3BlcnR5SXNFbnVtZXJhYmxlXCIsXCJjb25zdHJ1Y3RvclwiXTtmdW5jdGlvbiBZbihuKXt2YXIgZT11bihuKTtpZihlPT09cnx8ZT09PWkmJm51bGwhPT1ufHxnKFwib2JqS2V5cyBjYWxsZWQgb24gbm9uLW9iamVjdFwiKSwhSm4mJmZuKXJldHVybiBmbihuKTt2YXIgdD1bXTtmb3IodmFyIG8gaW4gbiluJiZmLmNhbGwobixvKSYmdC5wdXNoKG8pO2lmKEpuKWZvcih2YXIgYT0kbi5sZW5ndGgsdT0wO3U8YTt1KyspbiYmZi5jYWxsKG4sJG5bdV0pJiZ0LnB1c2goJG5bdV0pO3JldHVybiB0fWZ1bmN0aW9uIFpuKG4sZSx0LHIpe2lmKHNuKXRyeXt2YXIgaT17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9O3JldHVybiB0JiYoaS5nZXQ9dCksciYmKGkuc2V0PXIpLHNuKG4sZSxpKSwhMH1jYXRjaChvKXt9cmV0dXJuITF9ZnVuY3Rpb24gbmUobil7cmV0dXJuIG59ZnVuY3Rpb24gZWUobil7cmV0dXJuIGxuJiZNbihuLChmdW5jdGlvbihuLGUpeyhCbihlKXx8Tm4oZSkpJiZsbihlKX0pKSx0ZShuKX12YXIgdGU9bG58fG5lO2Z1bmN0aW9uIHJlKCl7dmFyIG49RGF0ZTtyZXR1cm4gbi5ub3c/bi5ub3coKToobmV3IG4pLmdldFRpbWUoKX1mdW5jdGlvbiBpZShuKXtyZXR1cm4gVW4obik/bi5uYW1lOkp9ZnVuY3Rpb24gb2UobixlLHQscixpKXt2YXIgbz10O3JldHVybiBuJiYoKG89bltlXSk9PT10fHxpJiYhaShvKXx8ciYmIXIodCl8fChvPXQsbltlXT1vKSksb31mdW5jdGlvbiBhZShuLGUsdCl7dmFyIHI7cmV0dXJuIG4/IShyPW5bZV0pJiZFbihyKSYmKHI9X24odCk/e306dCxuW2VdPXIpOnI9X24odCk/e306dCxyfWZ1bmN0aW9uIHVlKG4sZSl7cmV0dXJuIEVuKG4pP2U6bn1mdW5jdGlvbiBjZShuKXtyZXR1cm4hIW59ZnVuY3Rpb24gc2Uobil7dGhyb3cgbmV3IEVycm9yKG4pfWZ1bmN0aW9uIGxlKG4sZSl7dmFyIHQ9bnVsbCxyPW51bGw7cmV0dXJuIERuKG4pP3Q9bjpyPW4sZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHM7aWYodCYmKHI9dCgpKSxyKXJldHVybiByW2VdLmFwcGx5KHIsbil9fWZ1bmN0aW9uIGZlKG4sZSx0LHIsaSl7biYmZSYmdCYmKCExIT09aXx8X24obltlXSkpJiYobltlXT1sZSh0LHIpKX1mdW5jdGlvbiBkZShuLGUsdCxyKXtyZXR1cm4gbiYmZSYmTm4obikmJkJuKHQpJiZXbih0LChmdW5jdGlvbih0KXtLbih0KSYmZmUobix0LGUsdCxyKX0pKSxufWZ1bmN0aW9uIHZlKG4pe3JldHVybiBuJiZjJiYobj1hKGMoe30sbikpKSxufWZ1bmN0aW9uIHBlKG4sZSx0LHIsaSxvKXt2YXIgYT1hcmd1bWVudHMsdT1hWzBdfHx7fSxjPWEubGVuZ3RoLHM9ITEsbD0xO2ZvcihjPjAmJnFuKHUpJiYocz11LHU9YVtsXXx8e30sbCsrKSxObih1KXx8KHU9e30pO2w8YztsKyspe3ZhciBkPWFbbF0sdj1CbihkKSxwPU5uKGQpO2Zvcih2YXIgZyBpbiBkKXt2YXIgeT12JiZnIGluIGR8fHAmJmYuY2FsbChkLGcpO2lmKHkpe3ZhciBoPWRbZ10sbT12b2lkIDA7aWYocyYmaCYmKChtPUJuKGgpKXx8SG4oaCkpKXt2YXIgYj11W2ddO20/Qm4oYil8fChiPVtdKTpIbihiKXx8KGI9e30pLGg9cGUocyxiLGgpfXZvaWQgMCE9PWgmJih1W2ddPWgpfX19cmV0dXJuIHV9ZnVuY3Rpb24gZ2Uobil7cmV0dXJuIGdlPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG59OmZ1bmN0aW9uKG4pe3JldHVybiBuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJm4uY29uc3RydWN0b3I9PT1TeW1ib2wmJm4hPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIG59LGdlKG4pfXZhciB5ZT1cIndpbmRvd1wiLGhlPVwiSlNPTlwiLG1lPVwibXNpZVwiLGJlPVwidHJpZGVudC9cIixTZT1cIlhNTEh0dHBSZXF1ZXN0XCIsQ2U9bnVsbCx4ZT1udWxsLEllPSExLHdlPW51bGwsVGU9bnVsbDtmdW5jdGlvbiBfZShuLGUpe3ZhciB0PSExO2lmKG4pe3RyeXtpZighKHQ9ZSBpbiBuKSl7dmFyIHI9bi5wcm90b3R5cGU7ciYmKHQ9ZSBpbiByKX19Y2F0Y2goaSl7fWlmKCF0KXRyeXt0PSFfbigobmV3IG4pW2VdKX1jYXRjaChpKXt9fXJldHVybiB0fWZ1bmN0aW9uIEVlKG4pe3ZhciBlPXAoKTtyZXR1cm4gZSYmZVtuXT9lW25dOm49PT15ZSYmUGUoKT93aW5kb3c6bnVsbH1mdW5jdGlvbiBQZSgpe3JldHVybiBCb29sZWFuKChcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93P1widW5kZWZpbmVkXCI6Z2Uod2luZG93KSk9PT1pJiZ3aW5kb3cpfWZ1bmN0aW9uIGtlKCl7cmV0dXJuIFBlKCk/d2luZG93OkVlKHllKX1mdW5jdGlvbiBOZSgpe3JldHVybiBCb29sZWFuKChcInVuZGVmaW5lZFwiPT10eXBlb2YgZG9jdW1lbnQ/XCJ1bmRlZmluZWRcIjpnZShkb2N1bWVudCkpPT09aSYmZG9jdW1lbnQpfWZ1bmN0aW9uIERlKCl7cmV0dXJuIE5lKCk/ZG9jdW1lbnQ6RWUoXCJkb2N1bWVudFwiKX1mdW5jdGlvbiBBZSgpe3JldHVybiBCb29sZWFuKChcInVuZGVmaW5lZFwiPT10eXBlb2YgbmF2aWdhdG9yP1widW5kZWZpbmVkXCI6Z2UobmF2aWdhdG9yKSk9PT1pJiZuYXZpZ2F0b3IpfWZ1bmN0aW9uIE1lKCl7cmV0dXJuIEFlKCk/bmF2aWdhdG9yOkVlKFwibmF2aWdhdG9yXCIpfWZ1bmN0aW9uIE9lKG4pe2lmKG4mJkllKXt2YXIgZT1FZShcIl9fbW9ja0xvY2F0aW9uXCIpO2lmKGUpcmV0dXJuIGV9cmV0dXJuKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBsb2NhdGlvbj9cInVuZGVmaW5lZFwiOmdlKGxvY2F0aW9uKSk9PT1pJiZsb2NhdGlvbj9sb2NhdGlvbjpFZShcImxvY2F0aW9uXCIpfWZ1bmN0aW9uIFJlKCl7cmV0dXJuIEVlKFwicGVyZm9ybWFuY2VcIil9ZnVuY3Rpb24gTGUoKXtyZXR1cm4gQm9vbGVhbigoXCJ1bmRlZmluZWRcIj09dHlwZW9mIEpTT04/XCJ1bmRlZmluZWRcIjpnZShKU09OKSk9PT1pJiZKU09OfHxudWxsIT09RWUoaGUpKX1mdW5jdGlvbiBGZSgpe3JldHVybiBMZSgpP0pTT058fEVlKGhlKTpudWxsfWZ1bmN0aW9uIEJlKCl7dmFyIG49TWUoKTtyZXR1cm4hKCFufHwhbi5wcm9kdWN0KSYmXCJSZWFjdE5hdGl2ZVwiPT09bi5wcm9kdWN0fWZ1bmN0aW9uIFVlKCl7dmFyIG49TWUoKTtpZihuJiYobi51c2VyQWdlbnQhPT14ZXx8bnVsbD09PUNlKSl7dmFyIGU9KCh4ZT1uLnVzZXJBZ2VudCl8fEopLnRvTG93ZXJDYXNlKCk7Q2U9TG4oZSxtZSl8fExuKGUsYmUpfXJldHVybiBDZX1mdW5jdGlvbiBLZShuKXt2YXIgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobiksdD1KO3JldHVyblwiW29iamVjdCBFcnJvcl1cIj09PWU/dD1cInsgc3RhY2s6ICdcIituLnN0YWNrK1wiJywgbWVzc2FnZTogJ1wiK24ubWVzc2FnZStcIicsIG5hbWU6ICdcIituLm5hbWUrXCInXCI6TGUoKSYmKHQ9RmUoKS5zdHJpbmdpZnkobikpLGUrdH1mdW5jdGlvbiB6ZSgpe3JldHVybiBudWxsPT09VGUmJihUZT1BZSgpJiZCb29sZWFuKE1lKCkuc2VuZEJlYWNvbikpLFRlfWZ1bmN0aW9uIHFlKG4pe3ZhciBlPSExO3RyeXtlPSEhRWUoXCJmZXRjaFwiKTt2YXIgdD1FZShcIlJlcXVlc3RcIik7ZSYmbiYmdCYmKGU9X2UodCxcImtlZXBhbGl2ZVwiKSl9Y2F0Y2gocil7fXJldHVybiBlfWZ1bmN0aW9uIEhlKCl7cmV0dXJuIG51bGw9PT13ZSYmKHdlPShcInVuZGVmaW5lZFwiPT10eXBlb2YgWERvbWFpblJlcXVlc3Q/XCJ1bmRlZmluZWRcIjpnZShYRG9tYWluUmVxdWVzdCkpIT09bykmJmplKCkmJih3ZT13ZSYmIV9lKEVlKFNlKSxcIndpdGhDcmVkZW50aWFsc1wiKSksd2V9ZnVuY3Rpb24gamUoKXt2YXIgbj0hMTt0cnl7bj0hIUVlKFNlKX1jYXRjaChlKXt9cmV0dXJuIG59dmFyIFdlLFZlPVtcImV2ZW50c1NlbnRcIixcImV2ZW50c0Rpc2NhcmRlZFwiLFwiZXZlbnRzU2VuZFJlcXVlc3RcIixcInBlcmZFdmVudFwiXSxYZT1udWxsO2Z1bmN0aW9uIEdlKG4sZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLHI9UWUoZSk7aWYocil7dmFyIGk9ci5saXN0ZW5lcjtpJiZpW25dJiZpW25dLmFwcGx5KGksdCl9fX1mdW5jdGlvbiBRZShuKXt2YXIgZSx0PVhlO3JldHVybiB0fHwhMD09PW4uZGlzYWJsZURiZ0V4dHx8KHQ9WGV8fCgoZT1FZShcIk1pY3Jvc29mdFwiKSkmJihYZT1lLkFwcGxpY2F0aW9uSW5zaWdodHMpLFhlKSksdD90LkNocm9tZURiZ0V4dDpudWxsfWZ1bmN0aW9uIEplKG4pe2lmKCFXZSl7V2U9e307Zm9yKHZhciBlPTA7ZTxWZS5sZW5ndGg7ZSsrKVdlW1ZlW2VdXT1HZShWZVtlXSxuKX1yZXR1cm4gV2V9ZnVuY3Rpb24gJGUobil7cmV0dXJuIG4/J1wiJytuLnJlcGxhY2UoL1xcXCIvZyxKKSsnXCInOkp9ZnVuY3Rpb24gWWUobixlKXt2YXIgdD0oXCJ1bmRlZmluZWRcIj09dHlwZW9mIGNvbnNvbGU/XCJ1bmRlZmluZWRcIjpnZShjb25zb2xlKSkhPT1vP2NvbnNvbGU6RWUoXCJjb25zb2xlXCIpO2lmKHQpe3ZhciByPVwibG9nXCI7dFtuXSYmKHI9biksRG4odFtyXSkmJnRbcl0oZSl9fXZhciBaZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4obixlLHQscil7dm9pZCAwPT09dCYmKHQ9ITEpO3ZhciBpPXRoaXM7aS5tZXNzYWdlSWQ9bixpLm1lc3NhZ2U9KHQ/XCJBSTogXCI6XCJBSSAoSW50ZXJuYWwpOiBcIikrbjt2YXIgbz1KO0xlKCkmJihvPUZlKCkuc3RyaW5naWZ5KHIpKTt2YXIgYT0oZT9cIiBtZXNzYWdlOlwiKyRlKGUpOkopKyhyP1wiIHByb3BzOlwiKyRlKG8pOkopO2kubWVzc2FnZSs9YX1yZXR1cm4gbi5kYXRhVHlwZT1cIk1lc3NhZ2VEYXRhXCIsbn0oKTtmdW5jdGlvbiBudChuLGUpe3JldHVybihufHx7fSkubG9nZ2VyfHxuZXcgZXQoZSl9dmFyIGV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihlKXt0aGlzLmlkZW50aWZpZXI9XCJEaWFnbm9zdGljTG9nZ2VyXCIsdGhpcy5xdWV1ZT1bXTt2YXIgdCxyLGksbyxhPTAsdT17fTtRKG4sdGhpcywoZnVuY3Rpb24obil7ZnVuY3Rpb24gYyhlLHQpe2lmKCEoYT49aSkpe3ZhciBvPSEwLGM9XCJBSVRSX1wiK3QubWVzc2FnZUlkO2lmKHVbY10/bz0hMTp1W2NdPSEwLG8mJihlPD1yJiYobi5xdWV1ZS5wdXNoKHQpLGErKyxzKDE9PT1lP1wiZXJyb3JcIjpcIndhcm5cIix0KSksYT09PWkpKXt2YXIgbD1cIkludGVybmFsIGV2ZW50cyB0aHJvdHRsZSBsaW1pdCBwZXIgUGFnZVZpZXcgcmVhY2hlZCBmb3IgdGhpcyBhcHAuXCIsZj1uZXcgWmUoMjMsbCwhMSk7bi5xdWV1ZS5wdXNoKGYpLDE9PT1lP24uZXJyb3JUb0NvbnNvbGUobCk6bi53YXJuVG9Db25zb2xlKGwpfX19ZnVuY3Rpb24gcyhuLHQpe3ZhciByPVFlKGV8fHt9KTtyJiZyLmRpYWdMb2cmJnIuZGlhZ0xvZyhuLHQpfSFmdW5jdGlvbihuKXt0PXVlKG4ubG9nZ2luZ0xldmVsQ29uc29sZSwwKSxyPXVlKG4ubG9nZ2luZ0xldmVsVGVsZW1ldHJ5LDEpLGk9dWUobi5tYXhNZXNzYWdlTGltaXQsMjUpLG89dWUobi5lbmFibGVEZWJ1Zyx1ZShuLmVuYWJsZURlYnVnRXhjZXB0aW9ucywhMSkpfShlfHx7fSksbi5jb25zb2xlTG9nZ2luZ0xldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG4udGVsZW1ldHJ5TG9nZ2luZ0xldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LG4ubWF4SW50ZXJuYWxNZXNzYWdlTGltaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sbi5lbmFibGVEZWJ1Z0V4Y2VwdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gb30sbi50aHJvd0ludGVybmFsPWZ1bmN0aW9uKGUscixpLGEsbCl7dm9pZCAwPT09bCYmKGw9ITEpO3ZhciBmPW5ldyBaZShyLGksbCxhKTtpZihvKXRocm93IEtlKGYpO3ZhciBkPTE9PT1lP29uOmFuO2lmKF9uKGYubWVzc2FnZSkpcyhcInRocm93XCIrKDE9PT1lP1wiQ3JpdGljYWxcIjpcIldhcm5pbmdcIiksZik7ZWxzZXtpZihsKXt2YXIgdj0rZi5tZXNzYWdlSWQ7IXVbdl0mJnQ+PWUmJihuW2RdKGYubWVzc2FnZSksdVt2XT0hMCl9ZWxzZSB0Pj1lJiZuW2RdKGYubWVzc2FnZSk7YyhlLGYpfX0sbi53YXJuVG9Db25zb2xlPWZ1bmN0aW9uKG4pe1llKFwid2FyblwiLG4pLHMoXCJ3YXJuaW5nXCIsbil9LG4uZXJyb3JUb0NvbnNvbGU9ZnVuY3Rpb24obil7WWUoXCJlcnJvclwiLG4pLHMoXCJlcnJvclwiLG4pfSxuLnJlc2V0SW50ZXJuYWxNZXNzYWdlQ291bnQ9ZnVuY3Rpb24oKXthPTAsdT17fX0sbi5sb2dJbnRlcm5hbE1lc3NhZ2U9Y30pKX1yZXR1cm4gbi5fX2llRHluPTEsbn0oKTtmdW5jdGlvbiB0dChuKXtyZXR1cm4gbnx8bmV3IGV0fWZ1bmN0aW9uIHJ0KG4sZSx0LHIsaSxvKXt2b2lkIDA9PT1vJiYobz0hMSksdHQobikudGhyb3dJbnRlcm5hbChlLHQscixpLG8pfWZ1bmN0aW9uIGl0KG4sZSl7dHQobikud2FyblRvQ29uc29sZShlKX12YXIgb3Q9XCJ0b0dNVFN0cmluZ1wiLGF0PVwidG9VVENTdHJpbmdcIix1dD1cImV4cGlyZXNcIixjdD1udWxsLHN0PW51bGwsbHQ9bnVsbCxmdD1EZSgpLGR0PXt9LHZ0PXt9O2Z1bmN0aW9uIHB0KG4sZSl7dmFyIHQ9bXQuX2NrTWdyfHx2dC5fY2tNZ3I7cmV0dXJuIHR8fCh0PW10Ll9ja01ncj1tdChuLGUpLHZ0Ll9ja01ncj10KSx0fWZ1bmN0aW9uIGd0KG4pe3JldHVybiFufHxuLmlzRW5hYmxlZCgpfWZ1bmN0aW9uIHl0KG4sZSl7cmV0dXJuISEoZSYmbiYmQm4obi5pZ25vcmVDb29raWVzKSkmJi0xIT09bi5pZ25vcmVDb29raWVzLmluZGV4T2YoZSl9ZnVuY3Rpb24gaHQobixlKXt2YXIgdDtpZihuKXQ9bi5nZXRDb29raWVNZ3IoKTtlbHNlIGlmKGUpe3ZhciByPWUuY29va2llQ2ZnO3Q9ci5fY2tNZ3I/ci5fY2tNZ3I6bXQoZSl9cmV0dXJuIHR8fCh0PXB0KGUsKG58fHt9KS5sb2dnZXIpKSx0fWZ1bmN0aW9uIG10KG4sZSl7dmFyIHQscj1mdW5jdGlvbihuKXt2YXIgZT1uLmNvb2tpZUNmZz1uLmNvb2tpZUNmZ3x8e307aWYob2UoZSxcImRvbWFpblwiLG4uY29va2llRG9tYWluLFBuLEVuKSxvZShlLFwicGF0aFwiLG4uY29va2llUGF0aHx8XCIvXCIsbnVsbCxFbiksRW4oZS5lbmFibGVkKSl7dmFyIHQ9dm9pZCAwO19uKG4uaXNDb29raWVVc2VEaXNhYmxlZCl8fCh0PSFuLmlzQ29va2llVXNlRGlzYWJsZWQpLF9uKG4uZGlzYWJsZUNvb2tpZXNVc2FnZSl8fCh0PSFuLmRpc2FibGVDb29raWVzVXNhZ2UpLGUuZW5hYmxlZD10fXJldHVybiBlfShufHx2dCksaT1yLnBhdGh8fFwiL1wiLG89ci5kb21haW4sYT0hMSE9PXIuZW5hYmxlZCx1PSgodD17aXNFbmFibGVkOmZ1bmN0aW9uKCl7dmFyIG49YSYmYnQoZSksdD12dC5fY2tNZ3I7cmV0dXJuIG4mJnQmJnUhPT10JiYobj1ndCh0KSksbn19KS5zZXRFbmFibGVkPWZ1bmN0aW9uKG4pe2E9ITEhPT1ufSx0LnNldD1mdW5jdGlvbihuLGUsdCxhLGMpe3ZhciBzPSExO2lmKGd0KHUpJiYhZnVuY3Rpb24obixlKXtyZXR1cm4hIShlJiZuJiZCbihuLmJsb2NrZWRDb29raWVzKSYmLTEhPT1uLmJsb2NrZWRDb29raWVzLmluZGV4T2YoZSkpfHx5dChuLGUpfShyLG4pKXt2YXIgbD17fSxmPVFuKGV8fEopLGQ9Zi5pbmRleE9mKFwiO1wiKTtpZigtMSE9PWQmJihmPVFuKGUuc3Vic3RyaW5nKDAsZCkpLGw9U3QoZS5zdWJzdHJpbmcoZCsxKSkpLG9lKGwsXCJkb21haW5cIixhfHxvLGNlLF9uKSwhRW4odCkpe3ZhciB2PVVlKCk7aWYoX24obC5leHBpcmVzKSl7dmFyIHA9cmUoKSsxZTMqdDtpZihwPjApe3ZhciBnPW5ldyBEYXRlO2cuc2V0VGltZShwKSxvZShsLHV0LEN0KGcsdj9vdDphdCl8fEN0KGcsdj9vdDphdCl8fEosY2UpfX12fHxvZShsLFwibWF4LWFnZVwiLEordCxudWxsLF9uKX12YXIgeT1PZSgpO3kmJlwiaHR0cHM6XCI9PT15LnByb3RvY29sJiYob2UobCxcInNlY3VyZVwiLG51bGwsbnVsbCxfbiksbnVsbD09PXN0JiYoc3Q9IVR0KChNZSgpfHx7fSkudXNlckFnZW50KSksc3QmJm9lKGwsXCJTYW1lU2l0ZVwiLFwiTm9uZVwiLG51bGwsX24pKSxvZShsLFwicGF0aFwiLGN8fGksbnVsbCxfbiksKHIuc2V0Q29va2llfHx3dCkobix4dChmLGwpKSxzPSEwfXJldHVybiBzfSx0LmdldD1mdW5jdGlvbihuKXt2YXIgZT1KO3JldHVybiBndCh1KSYmIXl0KHIsbikmJihlPShyLmdldENvb2tpZXx8SXQpKG4pKSxlfSx0LmRlbD1mdW5jdGlvbihuLGUpe3ZhciB0PSExO3JldHVybiBndCh1KSYmKHQ9dS5wdXJnZShuLGUpKSx0fSx0LnB1cmdlPWZ1bmN0aW9uKG4sdCl7dmFyIGksbz0hMTtpZihidChlKSl7dmFyIGE9KChpPXt9KS5wYXRoPXR8fFwiL1wiLGkuZXhwaXJlcz1cIlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UXCIsaSk7VWUoKXx8KGFbXCJtYXgtYWdlXCJdPVwiMFwiKSwoci5kZWxDb29raWV8fHd0KShuLHh0KEosYSkpLG89ITB9cmV0dXJuIG99LHQpO3JldHVybiB1Ll9ja01ncj11LHV9ZnVuY3Rpb24gYnQobil7aWYobnVsbD09PWN0KXtjdD0hMTt0cnl7Y3Q9dm9pZCAwIT09KGZ0fHx7fSkuY29va2llfWNhdGNoKGUpe3J0KG4sMiw2OCxcIkNhbm5vdCBhY2Nlc3MgZG9jdW1lbnQuY29va2llIC0gXCIraWUoZSkse2V4Y2VwdGlvbjpLZShlKX0pfX1yZXR1cm4gY3R9ZnVuY3Rpb24gU3Qobil7dmFyIGU9e307biYmbi5sZW5ndGgmJlduKFFuKG4pLnNwbGl0KFwiO1wiKSwoZnVuY3Rpb24obil7aWYobj1RbihufHxKKSl7dmFyIHQ9bi5pbmRleE9mKFwiPVwiKTstMT09PXQ/ZVtuXT1udWxsOmVbUW4obi5zdWJzdHJpbmcoMCx0KSldPVFuKG4uc3Vic3RyaW5nKHQrMSkpfX0pKTtyZXR1cm4gZX1mdW5jdGlvbiBDdChuLGUpe3JldHVybiBEbihuW2VdKT9uW2VdKCk6bnVsbH1mdW5jdGlvbiB4dChuLGUpe3ZhciB0PW58fEo7cmV0dXJuIE1uKGUsKGZ1bmN0aW9uKG4sZSl7dCs9XCI7IFwiK24rKEVuKGUpP0o6XCI9XCIrZSl9KSksdH1mdW5jdGlvbiBJdChuKXt2YXIgZT1KO2lmKGZ0KXt2YXIgdD1mdC5jb29raWV8fEo7bHQhPT10JiYoZHQ9U3QodCksbHQ9dCksZT1RbihkdFtuXXx8Sil9cmV0dXJuIGV9ZnVuY3Rpb24gd3QobixlKXtmdCYmKGZ0LmNvb2tpZT1uK1wiPVwiK2UpfWZ1bmN0aW9uIFR0KG4pe3JldHVybiEhS24obikmJighKCFMbihuLFwiQ1BVIGlQaG9uZSBPUyAxMlwiKSYmIUxuKG4sXCJpUGFkOyBDUFUgT1MgMTJcIikpfHwoISEoTG4obixcIk1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTRcIikmJkxuKG4sXCJWZXJzaW9uL1wiKSYmTG4obixcIlNhZmFyaVwiKSl8fCghKCFMbihuLFwiTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNFwiKXx8IU9uKG4sXCJBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28pXCIpKXx8KCEoIUxuKG4sXCJDaHJvbWUvNVwiKSYmIUxuKG4sXCJDaHJvbWUvNlwiKSl8fCghKCFMbihuLFwiVW5yZWFsRW5naW5lXCIpfHxMbihuLFwiQ2hyb21lXCIpKXx8ISghTG4obixcIlVDQnJvd3Nlci8xMlwiKSYmIUxuKG4sXCJVQ0Jyb3dzZXIvMTFcIikpKSkpKSl9dmFyIF90PTQyOTQ5NjcyOTYsRXQ9NDI5NDk2NzI5NSxQdD0hMSxrdD0xMjM0NTY3ODksTnQ9OTg3NjU0MzIxO2Z1bmN0aW9uIER0KG4pe248MCYmKG4+Pj49MCksa3Q9MTIzNDU2Nzg5K24mRXQsTnQ9OTg3NjU0MzIxLW4mRXQsUHQ9ITB9ZnVuY3Rpb24gQXQoKXt0cnl7dmFyIG49MjE0NzQ4MzY0NyZyZSgpO0R0KChNYXRoLnJhbmRvbSgpKl90Xm4pK24pfWNhdGNoKGUpe319ZnVuY3Rpb24gTXQobil7cmV0dXJuIG4+MD9NYXRoLmZsb29yKE90KCkvRXQqKG4rMSkpPj4+MDowfWZ1bmN0aW9uIE90KG4pe3ZhciBlPTAsdD1FZShcImNyeXB0b1wiKXx8RWUoXCJtc0NyeXB0b1wiKTtyZXR1cm4gdCYmdC5nZXRSYW5kb21WYWx1ZXMmJihlPXQuZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgxKSlbMF0mRXQpLDA9PT1lJiZVZSgpJiYoUHR8fEF0KCksZT1MdCgpJkV0KSwwPT09ZSYmKGU9TWF0aC5mbG9vcihfdCpNYXRoLnJhbmRvbSgpfDApKSxufHwoZT4+Pj0wKSxlfWZ1bmN0aW9uIFJ0KG4pe24/RHQobik6QXQoKX1mdW5jdGlvbiBMdChuKXt2YXIgZT0oKE50PTM2OTY5Kig2NTUzNSZOdCkrKE50Pj4xNikmRXQpPDwxNikrKDY1NTM1JihrdD0xOGUzKig2NTUzNSZrdCkrKGt0Pj4xNikmRXQpKT4+PjAmRXR8MDtyZXR1cm4gbnx8KGU+Pj49MCksZX1mdW5jdGlvbiBGdChuKXt2b2lkIDA9PT1uJiYobj0yMik7Zm9yKHZhciBlPU90KCk+Pj4wLHQ9MCxyPUo7ci5sZW5ndGg8bjspdCsrLHIrPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiLmNoYXJBdCg2MyZlKSxlPj4+PTYsNT09PXQmJihlPShPdCgpPDwyJjQyOTQ5NjcyOTV8MyZlKT4+PjAsdD0wKTtyZXR1cm4gcn12YXIgQnQ9bCxVdD1cIjIuOC4xNlwiLEt0PVwiLlwiK0Z0KDYpLHp0PTA7ZnVuY3Rpb24gcXQobil7cmV0dXJuIDE9PT1uLm5vZGVUeXBlfHw5PT09bi5ub2RlVHlwZXx8IStuLm5vZGVUeXBlfWZ1bmN0aW9uIEh0KG4sZSl7dmFyIHQ9ZVtuLmlkXTtpZighdCl7dD17fTt0cnl7cXQoZSkmJihmdW5jdGlvbihuLGUsdCl7aWYoQnQpdHJ5e3JldHVybiBCdChuLGUse3ZhbHVlOnQsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSwhMH1jYXRjaChyKXt9cmV0dXJuITF9KGUsbi5pZCx0KXx8KGVbbi5pZF09dCkpfWNhdGNoKHIpe319cmV0dXJuIHR9ZnVuY3Rpb24ganQobixlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9ITEpLEFuKG4renQrKysoZT9cIi4yLjguMTZcIjpKKStLdCl9ZnVuY3Rpb24gV3Qobil7dmFyIGU9e2lkOmp0KFwiX2FpRGF0YS1cIisobnx8SikrXCIuXCIrVXQpLGFjY2VwdDpmdW5jdGlvbihuKXtyZXR1cm4gcXQobil9LGdldDpmdW5jdGlvbihuLHQscixpKXt2YXIgbz1uW2UuaWRdO3JldHVybiBvP29bQW4odCldOihpJiYoKG89SHQoZSxuKSlbQW4odCldPXIpLHIpfSxraWxsOmZ1bmN0aW9uKG4sZSl7aWYobiYmbltlXSl0cnl7ZGVsZXRlIG5bZV19Y2F0Y2godCl7fX19O3JldHVybiBlfXZhciBWdD1cImV2ZW50c1wiLFh0PVwidmlzaWJpbGl0eWNoYW5nZVwiLEd0PVwicGFnZWhpZGVcIixRdD1cInBhZ2VzaG93XCIsSnQ9XCJ1bmxvYWRcIiwkdD1cImJlZm9yZXVubG9hZFwiLFl0PWp0KFwiYWlFdnRQYWdlSGlkZVwiKSxadD1qdChcImFpRXZ0UGFnZVNob3dcIiksbnI9L1xcLltcXC5dKy9nLGVyPS9bXFwuXSskLyx0cj0xLHJyPVd0KFwiZXZlbnRzXCIpLGlyPS9eKFteLl0qKSg/OlxcLiguKyl8KS87ZnVuY3Rpb24gb3Iobil7cmV0dXJuIG4mJm4ucmVwbGFjZT9uLnJlcGxhY2UoL15bXFxzXFwuXSt8KD89W1xcc1xcLl0pW1xcLlxcc10rJC9nLEopOm59ZnVuY3Rpb24gYXIobixlKXt2YXIgdDtpZihlKXt2YXIgcj1KO0JuKGUpPyhyPUosV24oZSwoZnVuY3Rpb24obil7KG49b3IobikpJiYoXCIuXCIhPT1uWzBdJiYobj1cIi5cIituKSxyKz1uKX0pKSk6cj1vcihlKSxyJiYoXCIuXCIhPT1yWzBdJiYocj1cIi5cIityKSxuPShufHxKKStyKX12YXIgaT1pci5leGVjKG58fEopfHxbXTtyZXR1cm4odD17fSkudHlwZT1pWzFdLHQubnM9KGlbMl18fEopLnJlcGxhY2UobnIsXCIuXCIpLnJlcGxhY2UoZXIsSikuc3BsaXQoXCIuXCIpLnNvcnQoKS5qb2luKFwiLlwiKSx0fWZ1bmN0aW9uIHVyKG4sZSx0KXt2b2lkIDA9PT10JiYodD0hMCk7dmFyIHI9cnIuZ2V0KG4sVnQse30sdCksaT1yW2VdO3JldHVybiBpfHwoaT1yW2VdPVtdKSxpfWZ1bmN0aW9uIGNyKG4sZSx0LHIpe24mJmUmJmUudHlwZSYmKG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcj9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS50eXBlLHQscik6bi5kZXRhY2hFdmVudCYmbi5kZXRhY2hFdmVudChcIm9uXCIrZS50eXBlLHQpKX1mdW5jdGlvbiBzcihuLGUsdCxyKXtmb3IodmFyIGk9ZS5sZW5ndGg7aS0tOyl7dmFyIG89ZVtpXTtvJiYodC5ucyYmdC5ucyE9PW8uZXZ0TmFtZS5uc3x8ciYmIXIobyl8fChjcihuLG8uZXZ0TmFtZSxvLmhhbmRsZXIsby5jYXB0dXJlKSxlLnNwbGljZShpLDEpKSl9fWZ1bmN0aW9uIGxyKG4sZSl7cmV0dXJuIGU/YXIoXCJ4eFwiLEJuKGUpP1tuXS5jb25jYXQoZSk6W24sZV0pLm5zLnNwbGl0KFwiLlwiKTpufWZ1bmN0aW9uIGZyKG4sZSx0LHIsaSl7dmFyIG87dm9pZCAwPT09aSYmKGk9ITEpO3ZhciBhPSExO2lmKG4pdHJ5e3ZhciB1PWFyKGUscik7aWYoYT1mdW5jdGlvbihuLGUsdCxyKXt2YXIgaT0hMTtyZXR1cm4gbiYmZSYmZS50eXBlJiZ0JiYobi5hZGRFdmVudExpc3RlbmVyPyhuLmFkZEV2ZW50TGlzdGVuZXIoZS50eXBlLHQsciksaT0hMCk6bi5hdHRhY2hFdmVudCYmKG4uYXR0YWNoRXZlbnQoXCJvblwiK2UudHlwZSx0KSxpPSEwKSksaX0obix1LHQsaSksYSYmcnIuYWNjZXB0KG4pKXt2YXIgYz0oKG89e2d1aWQ6dHIrKyxldnROYW1lOnV9KS5oYW5kbGVyPXQsby5jYXB0dXJlPWksbyk7dXIobix1LnR5cGUpLnB1c2goYyl9fWNhdGNoKHMpe31yZXR1cm4gYX1mdW5jdGlvbiBkcihuLGUsdCxyLGkpe2lmKHZvaWQgMD09PWkmJihpPSExKSxuKXRyeXt2YXIgbz1hcihlLHIpLGE9ITE7IWZ1bmN0aW9uKG4sZSx0KXtpZihlLnR5cGUpc3Iobix1cihuLGUudHlwZSksZSx0KTtlbHNle3ZhciByPXJyLmdldChuLFZ0LHt9KTtNbihyLChmdW5jdGlvbihyLGkpe3NyKG4saSxlLHQpfSkpLDA9PT1ZbihyKS5sZW5ndGgmJnJyLmtpbGwobixWdCl9fShuLG8sKGZ1bmN0aW9uKG4pe3JldHVybiEoKCFvLm5zfHx0KSYmbi5oYW5kbGVyIT09dCkmJihhPSEwLCEwKX0pKSxhfHxjcihuLG8sdCxpKX1jYXRjaCh1KXt9fWZ1bmN0aW9uIHZyKG4sZSx0KXt2YXIgcj0hMSxpPWtlKCk7aSYmKHI9ZnIoaSxuLGUsdCkscj1mcihpLmJvZHksbixlLHQpfHxyKTt2YXIgbz1EZSgpO3JldHVybiBvJiYocj1mcihvLG4sZSx0KXx8cikscn1mdW5jdGlvbiBwcihuLGUsdCxyKXt2YXIgaT0hMTtyZXR1cm4gZSYmbiYmbi5sZW5ndGg+MCYmV24obiwoZnVuY3Rpb24obil7biYmKHQmJi0xIT09Vm4odCxuKXx8KGk9dnIobixlLHIpfHxpKSl9KSksaX1mdW5jdGlvbiBncihuLGUsdCl7biYmQm4obikmJlduKG4sKGZ1bmN0aW9uKG4pe24mJmZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1rZSgpO3ImJihkcihyLG4sZSx0KSxkcihyLmJvZHksbixlLHQpKTt2YXIgaT1EZSgpO2kmJmRyKGksbixlLHQpfShuLGUsdCl9KSl9ZnVuY3Rpb24geXIobixlLHQpe3JldHVybiBmdW5jdGlvbihuLGUsdCxyKXt2YXIgaT0hMTtyZXR1cm4gZSYmbiYmQm4obikmJiEoaT1wcihuLGUsdCxyKSkmJnQmJnQubGVuZ3RoPjAmJihpPXByKG4sZSxudWxsLHIpKSxpfShbJHQsSnQsR3RdLG4sZSx0KX1mdW5jdGlvbiBocihuLGUsdCl7dmFyIHI9bHIoWXQsdCksaT1wcihbR3RdLG4sZSxyKTtyZXR1cm4gZSYmLTEhPT1WbihlLFh0KXx8KGk9cHIoW1h0XSwoZnVuY3Rpb24oZSl7dmFyIHQ9RGUoKTtuJiZ0JiZcImhpZGRlblwiPT09dC52aXNpYmlsaXR5U3RhdGUmJm4oZSl9KSxlLHIpfHxpKSwhaSYmZSYmKGk9aHIobixudWxsLHQpKSxpfWZ1bmN0aW9uIG1yKG4sZSx0KXt2YXIgcj1scihadCx0KSxpPXByKFtRdF0sbixlLHIpO3JldHVybiEoaT1wcihbWHRdLChmdW5jdGlvbihlKXt2YXIgdD1EZSgpO24mJnQmJlwidmlzaWJsZVwiPT09dC52aXNpYmlsaXR5U3RhdGUmJm4oZSl9KSxlLHIpfHxpKSYmZSYmKGk9bXIobixudWxsLHQpKSxpfWZ1bmN0aW9uIGJyKCl7dmFyIG49Q3IoKTtyZXR1cm4gbi5zdWJzdHJpbmcoMCw4KStcIi1cIituLnN1YnN0cmluZyg4LDEyKStcIi1cIituLnN1YnN0cmluZygxMiwxNikrXCItXCIrbi5zdWJzdHJpbmcoMTYsMjApK1wiLVwiK24uc3Vic3RyaW5nKDIwKX1mdW5jdGlvbiBTcigpe3ZhciBuPVJlKCk7cmV0dXJuIG4mJm4ubm93P24ubm93KCk6cmUoKX1mdW5jdGlvbiBDcigpe2Zvcih2YXIgbixlPVtcIjBcIixcIjFcIixcIjJcIixcIjNcIixcIjRcIixcIjVcIixcIjZcIixcIjdcIixcIjhcIixcIjlcIixcImFcIixcImJcIixcImNcIixcImRcIixcImVcIixcImZcIl0sdD1KLHI9MDtyPDQ7cisrKXQrPWVbMTUmKG49T3QoKSldK2Vbbj4+NCYxNV0rZVtuPj44JjE1XStlW24+PjEyJjE1XStlW24+PjE2JjE1XStlW24+PjIwJjE1XStlW24+PjI0JjE1XStlW24+PjI4JjE1XTt2YXIgaT1lWzgrKDMmT3QoKSl8MF07cmV0dXJuIHQuc3Vic3RyKDAsOCkrdC5zdWJzdHIoOSw0KStcIjRcIit0LnN1YnN0cigxMywzKStpK3Quc3Vic3RyKDE2LDMpK3Quc3Vic3RyKDE5LDEyKX12YXIgeHIsSXI9XCJcIjtmdW5jdGlvbiB3cihuKXtyZXR1cm4gd3I9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbn06ZnVuY3Rpb24obil7cmV0dXJuIG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmbi5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmbiE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2Ygbn0sd3Iobil9dmFyIFRyPVwiMURTLVdlYi1KUy0zLjIuMTVcIixfcj1cIndpdGhDcmVkZW50aWFsc1wiLEVyPSgoeHI9e30pWzBdPTAseHJbMl09Nix4clsxXT0xLHhyWzNdPTcseHJbNDA5OF09Nix4cls0MDk3XT0xLHhyWzQwOTldPTcseHIpLFByPW51bGw7Qm9vbGVhbihEZSgpKSxCb29sZWFuKGtlKCkpO2Z1bmN0aW9uIGtyKG4pe3JldHVybiEobj09PUlyfHxFbihuKSl9ZnVuY3Rpb24gTnIobil7aWYobil7dmFyIGU9bi5pbmRleE9mKFwiLVwiKTtpZihlPi0xKXJldHVybiBuLnN1YnN0cmluZygwLGUpfXJldHVybiBJcn1mdW5jdGlvbiBEcigpe3JldHVybiBudWxsPT09UHImJihQcj0hX24oVWludDhBcnJheSkmJiFmdW5jdGlvbigpe3ZhciBuPU1lKCk7aWYoIV9uKG4pJiZuLnVzZXJBZ2VudCl7dmFyIGU9bi51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtpZigoZS5pbmRleE9mKFwic2FmYXJpXCIpPj0wfHxlLmluZGV4T2YoXCJmaXJlZm94XCIpPj0wKSYmZS5pbmRleE9mKFwiY2hyb21lXCIpPDApcmV0dXJuITB9cmV0dXJuITF9KCkmJiFCZSgpKSxQcn1mdW5jdGlvbiBBcihuKXtyZXR1cm4hIShuJiZ6bihuKSYmbj49MSYmbjw9NCl9ZnVuY3Rpb24gTXIobixlLHQpe2lmKCFlJiYha3IoZSl8fFwic3RyaW5nXCIhPXR5cGVvZiBuKXJldHVybiBudWxsO3ZhciByPXdyKGUpO2lmKFwic3RyaW5nXCI9PT1yfHxcIm51bWJlclwiPT09cnx8XCJib29sZWFuXCI9PT1yfHxCbihlKSllPXt2YWx1ZTplfTtlbHNlIGlmKFwib2JqZWN0XCIhPT1yfHxmLmNhbGwoZSxcInZhbHVlXCIpKXtpZihFbihlLnZhbHVlKXx8ZS52YWx1ZT09PUlyfHwhS24oZS52YWx1ZSkmJiF6bihlLnZhbHVlKSYmIXFuKGUudmFsdWUpJiYhQm4oZS52YWx1ZSkpcmV0dXJuIG51bGx9ZWxzZSBlPXt2YWx1ZTp0P0pTT04uc3RyaW5naWZ5KGUpOmV9O2lmKEJuKGUudmFsdWUpJiYhS3IoZS52YWx1ZSkpcmV0dXJuIG51bGw7aWYoIUVuKGUua2luZCkpe2lmKEJuKGUudmFsdWUpfHwhVXIoZS5raW5kKSlyZXR1cm4gbnVsbDtlLnZhbHVlPWUudmFsdWUudG9TdHJpbmcoKX1yZXR1cm4gZX1mdW5jdGlvbiBPcihuLGUsdCl7dmFyIHI9LTE7aWYoIV9uKG4pKWlmKGU+MCYmKDMyPT09ZT9yPTgxOTI6ZTw9MTMmJihyPWU8PDUpKSxmdW5jdGlvbihuKXtpZihuPj0wJiZuPD05KXJldHVybiEwO3JldHVybiExfSh0KSktMT09PXImJihyPTApLHJ8PXQ7ZWxzZXt2YXIgaT1FcltxcihuKV18fC0xOy0xIT09ciYmLTEhPT1pP3J8PWk6Nj09PWkmJihyPWkpfXJldHVybiByfWZ1bmN0aW9uIFJyKG4sZSx0KXt2YXIgcjtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLG4mJihyPW4uZ2V0KGUpLHQmJnImJmRlY29kZVVSSUNvbXBvbmVudCYmKHI9ZGVjb2RlVVJJQ29tcG9uZW50KHIpKSkscnx8SXJ9ZnVuY3Rpb24gTHIobil7dm9pZCAwPT09biYmKG49XCJEXCIpO3ZhciBlPWJyKCk7cmV0dXJuXCJCXCI9PT1uP2U9XCJ7XCIrZStcIn1cIjpcIlBcIj09PW4/ZT1cIihcIitlK1wiKVwiOlwiTlwiPT09biYmKGU9ZS5yZXBsYWNlKC8tL2csSXIpKSxlfWZ1bmN0aW9uIEZyKG4sZSx0LHIsaSl7dmFyIG89e30sYT0hMSx1PTAsYz1hcmd1bWVudHMubGVuZ3RoLHM9T2JqZWN0LnByb3RvdHlwZSxsPWFyZ3VtZW50cztmb3IoXCJbb2JqZWN0IEJvb2xlYW5dXCI9PT1zLnRvU3RyaW5nLmNhbGwobFswXSkmJihhPWxbMF0sdSsrKTt1PGM7dSsrKXtNbihuPWxbdV0sKGZ1bmN0aW9uKG4sZSl7YSYmZSYmTm4oZSk/Qm4oZSk/KG9bbl09b1tuXXx8W10sV24oZSwoZnVuY3Rpb24oZSx0KXtlJiZObihlKT9vW25dW3RdPUZyKCEwLG9bbl1bdF0sZSk6b1tuXVt0XT1lfSkpKTpvW25dPUZyKCEwLG9bbl0sZSk6b1tuXT1lfSkpfXJldHVybiBvfXZhciBCcj1TcjtmdW5jdGlvbiBVcihuKXtyZXR1cm4gMD09PW58fG4+MCYmbjw9MTN8fDMyPT09bn1mdW5jdGlvbiBLcihuKXtyZXR1cm4gbi5sZW5ndGg+MH1mdW5jdGlvbiB6cihuLGUpe3ZhciB0PW47dC50aW1pbmdzPXQudGltaW5nc3x8e30sdC50aW1pbmdzLnByb2Nlc3NUZWxlbWV0cnlTdGFydD10LnRpbWluZ3MucHJvY2Vzc1RlbGVtZXRyeVN0YXJ0fHx7fSx0LnRpbWluZ3MucHJvY2Vzc1RlbGVtZXRyeVN0YXJ0W2VdPUJyKCl9ZnVuY3Rpb24gcXIobil7dmFyIGU9MDtpZihudWxsIT1uKXt2YXIgdD13cihuKTtcInN0cmluZ1wiPT09dD9lPTE6XCJudW1iZXJcIj09PXQ/ZT0yOlwiYm9vbGVhblwiPT09dD9lPTM6dD09PWkmJihlPTQsQm4obik/KGU9NDA5NixuLmxlbmd0aD4wJiYoZXw9cXIoblswXSkpKTpmLmNhbGwobixcInZhbHVlXCIpJiYoZT04MTkyfHFyKG4udmFsdWUpKSl9cmV0dXJuIGV9dmFyIEhyPXtfY2FuVXNlQ29va2llczp2b2lkIDAsaXNUeXBlb2Y6VG4saXNVbmRlZmluZWQ6X24saXNOdWxsT3JVbmRlZmluZWQ6RW4saGFzT3duUHJvcGVydHk6a24saXNGdW5jdGlvbjpEbixpc09iamVjdDpObixpc0RhdGU6Rm4saXNBcnJheTpCbixpc0Vycm9yOlVuLGlzU3RyaW5nOktuLGlzTnVtYmVyOnpuLGlzQm9vbGVhbjpxbix0b0lTT1N0cmluZzpqbixhcnJGb3JFYWNoOlduLGFyckluZGV4T2Y6Vm4sYXJyTWFwOlhuLGFyclJlZHVjZTpHbixzdHJUcmltOlFuLG9iakNyZWF0ZTp5LG9iaktleXM6WW4sb2JqRGVmaW5lQWNjZXNzb3JzOlpuLGFkZEV2ZW50SGFuZGxlcjp2cixkYXRlTm93OnJlLGlzSUU6VWUsZGlzYWJsZUNvb2tpZXM6ZnVuY3Rpb24oKXtodChudWxsKS5zZXRFbmFibGVkKCExKX0sbmV3R3VpZDpicixwZXJmTm93OlNyLG5ld0lkOkZ0LHJhbmRvbVZhbHVlOk10LHJhbmRvbTMyOk90LG13Y1JhbmRvbVNlZWQ6UnQsbXdjUmFuZG9tMzI6THQsZ2VuZXJhdGVXM0NJZDpDcn07dmFyIGpyPW51bGwsV3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCxyKXt2YXIgaSxvPXRoaXMsYT0hMTsoby5zdGFydD1yZSgpLG8ubmFtZT1lLG8uaXNBc3luYz1yLG8uaXNDaGlsZEV2dD1mdW5jdGlvbigpe3JldHVybiExfSxEbih0KSkmJihhPVpuKG8sXCJwYXlsb2FkXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIWkmJkRuKHQpJiYoaT10KCksdD1udWxsKSxpfSkpKTtvLmdldEN0eD1mdW5jdGlvbihlKXtyZXR1cm4gZT9lPT09bi5QYXJlbnRDb250ZXh0S2V5fHxlPT09bi5DaGlsZHJlbkNvbnRleHRLZXk/b1tlXTooby5jdHh8fHt9KVtlXTpudWxsfSxvLnNldEN0eD1mdW5jdGlvbihlLHQpe2lmKGUpaWYoZT09PW4uUGFyZW50Q29udGV4dEtleSlvW2VdfHwoby5pc0NoaWxkRXZ0PWZ1bmN0aW9uKCl7cmV0dXJuITB9KSxvW2VdPXQ7ZWxzZSBpZihlPT09bi5DaGlsZHJlbkNvbnRleHRLZXkpb1tlXT10O2Vsc2V7KG8uY3R4PW8uY3R4fHx7fSlbZV09dH19LG8uY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgZT0wLHI9by5nZXRDdHgobi5DaGlsZHJlbkNvbnRleHRLZXkpO2lmKEJuKHIpKWZvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgdT1yW2ldO3UmJihlKz11LnRpbWUpfW8udGltZT1yZSgpLW8uc3RhcnQsby5leFRpbWU9by50aW1lLWUsby5jb21wbGV0ZT1mdW5jdGlvbigpe30sIWEmJkRuKHQpJiYoby5wYXlsb2FkPXQoKSl9fXJldHVybiBuLlBhcmVudENvbnRleHRLZXk9XCJwYXJlbnRcIixuLkNoaWxkcmVuQ29udGV4dEtleT1cImNoaWxkRXZ0c1wiLG59KCksVnI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUpe3RoaXMuY3R4PXt9LFEobix0aGlzLChmdW5jdGlvbihuKXtuLmNyZWF0ZT1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIG5ldyBXcihuLGUsdCl9LG4uZmlyZT1mdW5jdGlvbihuKXtuJiYobi5jb21wbGV0ZSgpLGUmJkRuKGUucGVyZkV2ZW50KSYmZS5wZXJmRXZlbnQobikpfSxuLnNldEN0eD1mdW5jdGlvbihlLHQpe2UmJigobi5jdHg9bi5jdHh8fHt9KVtlXT10KX0sbi5nZXRDdHg9ZnVuY3Rpb24oZSl7cmV0dXJuKG4uY3R4fHx7fSlbZV19fSkpfXJldHVybiBuLl9faWVEeW49MSxufSgpLFhyPVwiQ29yZVV0aWxzLmRvUGVyZlwiO2Z1bmN0aW9uIEdyKG4sZSx0LHIsaSl7aWYobil7dmFyIG89bjtpZihvLmdldFBlcmZNZ3ImJihvPW8uZ2V0UGVyZk1ncigpKSxvKXt2YXIgYT12b2lkIDAsdT1vLmdldEN0eChYcik7dHJ5e2lmKGE9by5jcmVhdGUoZSgpLHIsaSkpe2lmKHUmJmEuc2V0Q3R4JiYoYS5zZXRDdHgoV3IuUGFyZW50Q29udGV4dEtleSx1KSx1LmdldEN0eCYmdS5zZXRDdHgpKXt2YXIgYz11LmdldEN0eChXci5DaGlsZHJlbkNvbnRleHRLZXkpO2N8fChjPVtdLHUuc2V0Q3R4KFdyLkNoaWxkcmVuQ29udGV4dEtleSxjKSksYy5wdXNoKGEpfXJldHVybiBvLnNldEN0eChYcixhKSx0KGEpfX1jYXRjaChzKXthJiZhLnNldEN0eCYmYS5zZXRDdHgoXCJleGNlcHRpb25cIixzKX1maW5hbGx5e2EmJm8uZmlyZShhKSxvLnNldEN0eChYcix1KX19fXJldHVybiB0KCl9dmFyIFFyPVwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBcIixKcj1cIjAwMDAwMDAwMDAwMDAwMDBcIjtmdW5jdGlvbiAkcihuLGUsdCl7cmV0dXJuISghbnx8bi5sZW5ndGghPT1lfHxuPT09dCkmJiEhbi5tYXRjaCgvXltcXGRhLWZdKiQvaSl9ZnVuY3Rpb24gWXIobil7cmV0dXJuICRyKG4sMzIsUXIpfWZ1bmN0aW9uIFpyKG4pe3JldHVybiAkcihuLDE2LEpyKX12YXIgbmk9V3QoXCJwbHVnaW5cIik7ZnVuY3Rpb24gZWkobil7cmV0dXJuIG5pLmdldChuLFwic3RhdGVcIix7fSwhMCl9ZnVuY3Rpb24gdGkobixlKXtmb3IodmFyIHQscj1bXSxpPW51bGwsbz1uLmdldE5leHQoKTtvOyl7dmFyIGE9by5nZXRQbHVnaW4oKTtpZihhKXtpJiZEbihpLnNldE5leHRQbHVnaW4pJiZEbihhLnByb2Nlc3NUZWxlbWV0cnkpJiZpLnNldE5leHRQbHVnaW4oYSk7KERuKGEuaXNJbml0aWFsaXplZCk/YS5pc0luaXRpYWxpemVkKCk6KHQ9ZWkoYSkpLmlzSW5pdGlhbGl6ZWQpfHxyLnB1c2goYSksaT1hLG89by5nZXROZXh0KCl9fVduKHIsKGZ1bmN0aW9uKHIpe3ZhciBpPW4uY29yZSgpO3IuaW5pdGlhbGl6ZShuLmdldENmZygpLGksZSxuLmdldE5leHQoKSksdD1laShyKSxyLmNvcmV8fHQuY29yZXx8KHQuY29yZT1pKSx0LmlzSW5pdGlhbGl6ZWQ9ITAsZGVsZXRlIHQudGVhcmRvd259KSl9ZnVuY3Rpb24gcmkobil7cmV0dXJuIG4uc29ydCgoZnVuY3Rpb24obixlKXt2YXIgdD0wO2lmKGUpe3ZhciByPURuKGUucHJvY2Vzc1RlbGVtZXRyeSk7RG4obi5wcm9jZXNzVGVsZW1ldHJ5KT90PXI/bi5wcmlvcml0eS1lLnByaW9yaXR5OjE6ciYmKHQ9LTEpfWVsc2UgdD1uPzE6LTE7cmV0dXJuIHR9KSl9dmFyIGlpPVwiVGVsZW1ldHJ5UGx1Z2luQ2hhaW5cIixvaT0wO2Z1bmN0aW9uIGFpKG4sZSx0LHIpe3ZhciBpPW51bGwsbz1bXTtudWxsIT09ciYmKGk9cj9mdW5jdGlvbihuLGUsdCl7Zm9yKDtuOyl7aWYobi5nZXRQbHVnaW4oKT09PXQpcmV0dXJuIG47bj1uLmdldE5leHQoKX1yZXR1cm4gbGkoW3RdLGUuY29uZmlnfHx7fSxlKX0obix0LHIpOm4pO3ZhciBhPXtfbmV4dDpmdW5jdGlvbigpe3ZhciBuPWk7aWYoaT1uP24uZ2V0TmV4dCgpOm51bGwsIW4pe3ZhciBlPW87ZSYmZS5sZW5ndGg+MCYmKFduKGUsKGZ1bmN0aW9uKG4pe3RyeXtuLmZ1bmMuY2FsbChuLnNlbGYsbi5hcmdzKX1jYXRjaChlKXtydCh0LmxvZ2dlciwyLDczLFwiVW5leHBlY3RlZCBFeGNlcHRpb24gZHVyaW5nIG9uQ29tcGxldGUgLSBcIitLZShlKSl9fSkpLG89W10pfXJldHVybiBufSxjdHg6e2NvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdH0sZGlhZ0xvZzpmdW5jdGlvbigpe3JldHVybiBudCh0LGUpfSxnZXRDZmc6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sZ2V0RXh0Q2ZnOnUsZ2V0Q29uZmlnOmZ1bmN0aW9uKG4sdCxyKXt2b2lkIDA9PT1yJiYocj0hMSk7dmFyIGksbz11KG4sbnVsbCk7byYmIUVuKG9bdF0pP2k9b1t0XTplJiYhRW4oZVt0XSkmJihpPWVbdF0pO3JldHVybiBFbihpKT9yOml9LGhhc05leHQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWl9LGdldE5leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sc2V0TmV4dDpmdW5jdGlvbihuKXtpPW59LGl0ZXJhdGU6ZnVuY3Rpb24obil7dmFyIGU7Zm9yKDtlPWEuX25leHQoKTspe3ZhciB0PWUuZ2V0UGx1Z2luKCk7dCYmbih0KX19LG9uQ29tcGxldGU6ZnVuY3Rpb24obixlKXtmb3IodmFyIHQ9W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTJdPWFyZ3VtZW50c1tyXTtuJiZvLnB1c2goe2Z1bmM6bixzZWxmOl9uKGUpP2EuY3R4OmUsYXJnczp0fSl9fX07ZnVuY3Rpb24gdShuLHQscil7dmFyIGk7aWYodm9pZCAwPT09dCYmKHQ9e30pLHZvaWQgMD09PXImJihyPTApLGUpe3ZhciBvPWUuZXh0ZW5zaW9uQ29uZmlnO28mJm4mJihpPW9bbl0pfWlmKGkpe2lmKE5uKHQpJiYwIT09cil7dmFyIGE9cGUoITAsdCxpKTtlJiYyPT09ciYmTW4odCwoZnVuY3Rpb24obil7aWYoRW4oYVtuXSkpe3ZhciB0PWVbbl07RW4odCl8fChhW25dPXQpfX0pKSxpPWF9fWVsc2UgaT10O3JldHVybiBpfXJldHVybiBhfWZ1bmN0aW9uIHVpKG4sZSx0LHIpe3ZhciBpPWFpKG4sZSx0LHIpLG89aS5jdHg7cmV0dXJuIG8ucHJvY2Vzc05leHQ9ZnVuY3Rpb24obil7dmFyIGU9aS5fbmV4dCgpO3JldHVybiBlJiZlLnByb2Nlc3NUZWxlbWV0cnkobixvKSwhZX0sby5jcmVhdGVOZXc9ZnVuY3Rpb24obixyKXtyZXR1cm4gdm9pZCAwPT09biYmKG49bnVsbCksQm4obikmJihuPWxpKG4sZSx0LHIpKSx1aShufHxvLmdldE5leHQoKSxlLHQscil9LG99ZnVuY3Rpb24gY2kobixlLHQpe3ZhciByPWUuY29uZmlnfHx7fSxpPWFpKG4scixlLHQpLG89aS5jdHg7cmV0dXJuIG8ucHJvY2Vzc05leHQ9ZnVuY3Rpb24obil7dmFyIGU9aS5fbmV4dCgpO3JldHVybiBlJiZlLnVubG9hZChvLG4pLCFlfSxvLmNyZWF0ZU5ldz1mdW5jdGlvbihuLHQpe3JldHVybiB2b2lkIDA9PT1uJiYobj1udWxsKSxCbihuKSYmKG49bGkobixyLGUsdCkpLGNpKG58fG8uZ2V0TmV4dCgpLGUsdCl9LG99ZnVuY3Rpb24gc2kobixlLHQpe3ZhciByPWUuY29uZmlnfHx7fSxpPWFpKG4scixlLHQpLmN0eDtyZXR1cm4gaS5wcm9jZXNzTmV4dD1mdW5jdGlvbihuKXtyZXR1cm4gaS5pdGVyYXRlKChmdW5jdGlvbihlKXtEbihlLnVwZGF0ZSkmJmUudXBkYXRlKGksbil9KSl9LGkuY3JlYXRlTmV3PWZ1bmN0aW9uKG4sdCl7cmV0dXJuIHZvaWQgMD09PW4mJihuPW51bGwpLEJuKG4pJiYobj1saShuLHIsZSx0KSksc2kobnx8aS5nZXROZXh0KCksZSx0KX0saX1mdW5jdGlvbiBsaShuLGUsdCxyKXt2YXIgaT1udWxsLG89IXI7aWYoQm4obikmJm4ubGVuZ3RoPjApe3ZhciBhPW51bGw7V24obiwoZnVuY3Rpb24obil7aWYob3x8ciE9PW58fChvPSEwKSxvJiZuJiZEbihuLnByb2Nlc3NUZWxlbWV0cnkpKXt2YXIgdT1mdW5jdGlvbihuLGUsdCl7dmFyIHIsaT1udWxsLG89RG4obi5wcm9jZXNzVGVsZW1ldHJ5KSxhPURuKG4uc2V0TmV4dFBsdWdpbik7cj1uP24uaWRlbnRpZmllcitcIi1cIituLnByaW9yaXR5K1wiLVwiK29pKys6XCJVbmtub3duLTAtXCIrb2krKzt2YXIgdT17Z2V0UGx1Z2luOmZ1bmN0aW9uKCl7cmV0dXJuIG59LGdldE5leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX0scHJvY2Vzc1RlbGVtZXRyeTpsLHVubG9hZDpmLHVwZGF0ZTpkLF9pZDpyLF9zZXROZXh0OmZ1bmN0aW9uKG4pe2k9bn19O2Z1bmN0aW9uIGMoKXt2YXIgcjtyZXR1cm4gbiYmRG4obi5fZ2V0VGVsQ3R4KSYmKHI9bi5fZ2V0VGVsQ3R4KCkpLHJ8fChyPXVpKHUsZSx0KSkscn1mdW5jdGlvbiBzKGUsdCxvLGEsdSl7dmFyIGM9ITEscz1uP24uaWRlbnRpZmllcjppaSxsPWUuX2hhc1J1bjtyZXR1cm4gbHx8KGw9ZS5faGFzUnVuPXt9KSxlLnNldE5leHQoaSksbiYmR3IoZS5jb3JlKCksKGZ1bmN0aW9uKCl7cmV0dXJuIHMrXCI6XCIrb30pLChmdW5jdGlvbigpe2xbcl09ITA7dHJ5e3ZhciBuPWk/aS5faWQ6SjtuJiYobFtuXT0hMSksYz10KGUpfWNhdGNoKHUpe3ZhciBhPSFpfHxsW2kuX2lkXTthJiYoYz0hMCksaSYmYXx8cnQoZS5kaWFnTG9nKCksMSw3MyxcIlBsdWdpbiBbXCIrcytcIl0gZmFpbGVkIGR1cmluZyBcIitvK1wiIC0gXCIrS2UodSkrXCIsIHJ1biBmbGFnczogXCIrS2UobCkpfX0pLGEsdSksY31mdW5jdGlvbiBsKGUsdCl7ZnVuY3Rpb24gcih0KXtpZighbnx8IW8pcmV0dXJuITE7dmFyIHI9ZWkobik7cmV0dXJuIXIudGVhcmRvd24mJiFyLmRpc2FibGVkJiYoYSYmbi5zZXROZXh0UGx1Z2luKGkpLG4ucHJvY2Vzc1RlbGVtZXRyeShlLHQpLCEwKX1zKHQ9dHx8YygpLHIsXCJwcm9jZXNzVGVsZW1ldHJ5XCIsKGZ1bmN0aW9uKCl7cmV0dXJue2l0ZW06ZX19KSwhZS5zeW5jKXx8dC5wcm9jZXNzTmV4dChlKX1mdW5jdGlvbiBmKGUsdCl7ZnVuY3Rpb24gcigpe3ZhciByPSExO2lmKG4pe3ZhciBpPWVpKG4pLG89bi5jb3JlfHxpLmNvcmU7IW58fG8mJm8hPT1lLmNvcmUoKXx8aS50ZWFyZG93bnx8KGkuY29yZT1udWxsLGkudGVhcmRvd249ITAsaS5pc0luaXRpYWxpemVkPSExLG4udGVhcmRvd24mJiEwPT09bi50ZWFyZG93bihlLHQpJiYocj0hMCkpfXJldHVybiByfXMoZSxyLFwidW5sb2FkXCIsKGZ1bmN0aW9uKCl7fSksdC5pc0FzeW5jKXx8ZS5wcm9jZXNzTmV4dCh0KX1mdW5jdGlvbiBkKGUsdCl7ZnVuY3Rpb24gcigpe3ZhciByPSExO2lmKG4pe3ZhciBpPWVpKG4pLG89bi5jb3JlfHxpLmNvcmU7IW58fG8mJm8hPT1lLmNvcmUoKXx8aS50ZWFyZG93bnx8bi51cGRhdGUmJiEwPT09bi51cGRhdGUoZSx0KSYmKHI9ITApfXJldHVybiByfXMoZSxyLFwidXBkYXRlXCIsKGZ1bmN0aW9uKCl7fSksITEpfHxlLnByb2Nlc3NOZXh0KHQpfXJldHVybiB0ZSh1KX0obixlLHQpO2l8fChpPXUpLGEmJmEuX3NldE5leHQodSksYT11fX0pKX1yZXR1cm4gciYmIWk/bGkoW3JdLGUsdCk6aX1mdW5jdGlvbiBmaSgpe3ZhciBuPVtdO3JldHVybnthZGQ6ZnVuY3Rpb24oZSl7ZSYmbi5wdXNoKGUpfSxydW46ZnVuY3Rpb24oZSx0KXtXbihuLChmdW5jdGlvbihuKXt0cnl7bihlLHQpfWNhdGNoKHIpe3J0KGUuZGlhZ0xvZygpLDIsNzMsXCJVbmV4cGVjdGVkIGVycm9yIGNhbGxpbmcgdW5sb2FkIGhhbmRsZXIgLSBcIitLZShyKSl9fSkpLG49W119fX12YXIgZGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dmFyIGUsdCxyLGksbyxhPXRoaXM7ZnVuY3Rpb24gdShuKXt2b2lkIDA9PT1uJiYobj1udWxsKTt2YXIgZT1uO2lmKCFlKXt2YXIgaT10fHx1aShudWxsLHt9LGEuY29yZSk7ZT1yJiZyLmdldFBsdWdpbj9pLmNyZWF0ZU5ldyhudWxsLHIuZ2V0UGx1Z2luKTppLmNyZWF0ZU5ldyhudWxsLHIpfXJldHVybiBlfWZ1bmN0aW9uIGMobixlLGkpe24mJm9lKG4sWixbXSxudWxsLEVuKSwhaSYmZSYmKGk9ZS5nZXRQcm9jZXNzVGVsQ29udGV4dCgpLmdldE5leHQoKSk7dmFyIG89cjtyJiZyLmdldFBsdWdpbiYmKG89ci5nZXRQbHVnaW4oKSksYS5jb3JlPWUsdD11aShpLG4sZSxvKX1mdW5jdGlvbiBzKCl7ZT0hMSxhLmNvcmU9bnVsbCx0PW51bGwscj1udWxsLG89W10saT1maSgpfXMoKSxRKG4sYSwoZnVuY3Rpb24obil7bi5pbml0aWFsaXplPWZ1bmN0aW9uKG4sdCxyLGkpe2Mobix0LGkpLGU9ITB9LG4udGVhcmRvd249ZnVuY3Rpb24oZSx0KXt2YXIgYSx1PW4uY29yZTtpZih1JiYoIWV8fHU9PT1lLmNvcmUoKSkpe3ZhciBjLGw9ITEsZj1lfHxjaShudWxsLHUsciYmci5nZXRQbHVnaW4/ci5nZXRQbHVnaW4oKTpyKSxkPXR8fCgoYT17cmVhc29uOjB9KS5pc0FzeW5jPSExLGEpO3JldHVybiBuLl9kb1RlYXJkb3duJiYhMD09PW4uX2RvVGVhcmRvd24oZixkLHYpP2M9ITA6digpLGN9ZnVuY3Rpb24gdigpe2lmKCFsKXtsPSEwLGkucnVuKGYsdCk7dmFyIG49bztvPVtdLFduKG4sKGZ1bmN0aW9uKG4pe24ucm0oKX0pKSwhMD09PWMmJmYucHJvY2Vzc05leHQoZCkscygpfX19LG4udXBkYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIGk9bi5jb3JlO2lmKGkmJighZXx8aT09PWUuY29yZSgpKSl7dmFyIG8sYT0hMSx1PWV8fHNpKG51bGwsaSxyJiZyLmdldFBsdWdpbj9yLmdldFBsdWdpbigpOnIpLHM9dHx8e3JlYXNvbjowfTtyZXR1cm4gbi5fZG9VcGRhdGUmJiEwPT09bi5fZG9VcGRhdGUodSxzLGwpP289ITA6bCgpLG99ZnVuY3Rpb24gbCgpe2F8fChhPSEwLGModS5nZXRDZmcoKSx1LmNvcmUoKSx1LmdldE5leHQoKSkpfX0sbi5fYWRkSG9vaz1mdW5jdGlvbihuKXtuJiYoQm4obik/bz1vLmNvbmNhdChuKTpvLnB1c2gobikpfSxmZShuLFwiX2FkZFVubG9hZENiXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGl9KSxcImFkZFwiKX0pKSxhLmRpYWdMb2c9ZnVuY3Rpb24obil7cmV0dXJuIHUobikuZGlhZ0xvZygpfSxhLmlzSW5pdGlhbGl6ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYS5zZXRJbml0aWFsaXplZD1mdW5jdGlvbihuKXtlPW59LGEuc2V0TmV4dFBsdWdpbj1mdW5jdGlvbihuKXtyPW59LGEucHJvY2Vzc05leHQ9ZnVuY3Rpb24obixlKXtlP2UucHJvY2Vzc05leHQobik6ciYmRG4oci5wcm9jZXNzVGVsZW1ldHJ5KSYmci5wcm9jZXNzVGVsZW1ldHJ5KG4sbnVsbCl9LGEuX2dldFRlbEN0eD11fXJldHVybiBuLl9faWVEeW49MSxufSgpO2Z1bmN0aW9uIHZpKG4pe3ZhciBlPXt9O3JldHVybiBNbihuLChmdW5jdGlvbihuLHQpe2Vbbl09dCxlW3RdPW59KSksZWUoZSl9ZnVuY3Rpb24gcGkobil7dmFyIGU9e307cmV0dXJuIE1uKG4sKGZ1bmN0aW9uKG4sdCl7ZVtuXT10WzFdLGVbdFswXV09dFsxXX0pKSxlZShlKX12YXIgZ2kseWk9XCJsb2NhbGVcIixoaT1cInZlclwiLG1pPVwibmFtZVwiLGJpPXBpKHtVc2VyRXh0OlswLFwidXNlclwiXSxEZXZpY2VFeHQ6WzEsXCJkZXZpY2VcIl0sVHJhY2VFeHQ6WzIsXCJ0cmFjZVwiXSxXZWJFeHQ6WzMsXCJ3ZWJcIl0sQXBwRXh0Ols0LFwiYXBwXCJdLE9TRXh0Ols1LFwib3NcIl0sU2RrRXh0Ols2LFwic2RrXCJdLEludFdlYkV4dDpbNyxcImludHdlYlwiXSxVdGNFeHQ6WzgsXCJ1dGNcIl0sTG9jRXh0Ols5LFwibG9jXCJdLENsb3VkRXh0OlsxMCxcImNsb3VkXCJdLER0RXh0OlsxMSxcImR0XCJdfSksU2k9cGkoe2lkOlswLFwiaWRcIl0sdmVyOlsxLGhpXSxhcHBOYW1lOlsyLG1pXSxsb2NhbGU6WzMseWldLGV4cElkOls0LFwiZXhwSWRcIl0sZW52Ols1LFwiZW52XCJdfSksQ2k9cGkoe2RvbWFpbjpbMCxcImRvbWFpblwiXSxicm93c2VyOlsxLFwiYnJvd3NlclwiXSxicm93c2VyVmVyOlsyLFwiYnJvd3NlclZlclwiXSxzY3JlZW5SZXM6WzMsXCJzY3JlZW5SZXNcIl0sdXNlckNvbnNlbnQ6WzQsXCJ1c2VyQ29uc2VudFwiXSxjb25zZW50RGV0YWlsczpbNSxcImNvbnNlbnREZXRhaWxzXCJdfSkseGk9cGkoe2xvY2FsZTpbMCx5aV0sbG9jYWxJZDpbMSxcImxvY2FsSWRcIl0saWQ6WzIsXCJpZFwiXX0pLElpPXBpKHtvc05hbWU6WzAsbWldLHZlcjpbMSxoaV19KSx3aT1waSh7dmVyOlswLGhpXSxzZXE6WzEsXCJzZXFcIl0saW5zdGFsbElkOlsyLFwiaW5zdGFsbElkXCJdLGVwb2NoOlszLFwiZXBvY2hcIl19KSxUaT1waSh7bXNmcGM6WzAsXCJtc2ZwY1wiXSxhbmlkOlsxLFwiYW5pZFwiXSxzZXJ2aWNlTmFtZTpbMixcInNlcnZpY2VOYW1lXCJdfSksX2k9cGkoe3BvcFNhbXBsZTpbMCxcInBvcFNhbXBsZVwiXSxldmVudEZsYWdzOlsxLFwiZXZlbnRGbGFnc1wiXX0pLEVpPXBpKHt0ejpbMCxcInR6XCJdfSksUGk9cGkoe3Nlc3Npb25JZDpbMCxcInNlc0lkXCJdfSksa2k9cGkoe2xvY2FsSWQ6WzAsXCJsb2NhbElkXCJdLGRldmljZUNsYXNzOlsxLFwiZGV2aWNlQ2xhc3NcIl0sbWFrZTpbMixcIm1ha2VcIl0sbW9kZWw6WzMsXCJtb2RlbFwiXX0pLE5pPXBpKHtyb2xlOlswLFwicm9sZVwiXSxyb2xlSW5zdGFuY2U6WzEsXCJyb2xlSW5zdGFuY2VcIl0scm9sZVZlcjpbMixcInJvbGVWZXJcIl19KSxEaT1waSh7dHJhY2VJZDpbMCxcInRyYWNlSURcIl0sdHJhY2VOYW1lOlsxLG1pXSxwYXJlbnRJZDpbMixcInBhcmVudElEXCJdfSksQWk9cGkoe3RyYWNlSWQ6WzAsXCJ0cmFjZUlkXCJdLHNwYW5JZDpbMSxcInNwYW5JZFwiXSx0cmFjZUZsYWdzOlsyLFwidHJhY2VGbGFnc1wiXX0pO2Z1bmN0aW9uIE1pKCl7cmV0dXJuIHZvaWQgMD09PWdpJiYoZ2k9ISFSaSgwKSksZ2l9ZnVuY3Rpb24gT2koKXtyZXR1cm4gTWkoKT9SaSgwKTpudWxsfWZ1bmN0aW9uIFJpKG4pe3ZhciBlLHQscj1udWxsO3RyeXt2YXIgaT1wKCk7aWYoIWkpcmV0dXJuIG51bGw7dD1uZXcgRGF0ZSwocj0wPT09bj9pLmxvY2FsU3RvcmFnZTppLnNlc3Npb25TdG9yYWdlKSYmRG4oci5zZXRJdGVtKSYmKHIuc2V0SXRlbSh0LHQpLGU9ci5nZXRJdGVtKHQpIT09dCxyLnJlbW92ZUl0ZW0odCksZSYmKHI9bnVsbCkpfWNhdGNoKG8pe3I9bnVsbH1yZXR1cm4gcn1mdW5jdGlvbiBMaSgpe3JldHVybiB0aGlzLmdldElkKCl9ZnVuY3Rpb24gRmkobil7dGhpcy5zZXRJZChuKX12YXIgQmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7UShuLHRoaXMsKGZ1bmN0aW9uKG4pe24uc2V0SWQ9ZnVuY3Rpb24oZSl7bi5jdXN0b21JZD1lfSxuLmdldElkPWZ1bmN0aW9uKCl7cmV0dXJuIEtuKG4uY3VzdG9tSWQpP24uY3VzdG9tSWQ6bi5hdXRvbWF0aWNJZH19KSl9cmV0dXJuIG4uX3N0YXRpY0luaXQ9dm9pZCBabihuLnByb3RvdHlwZSxcImlkXCIsTGksRmkpLG59KCksVWk9XCJhaV9zZXNzaW9uXCIsS2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCl7dmFyIHIsaSxvPW50KGUpLGE9aHQoZSk7UShuLHRoaXMsKGZ1bmN0aW9uKGUpe3ZhciB1LGM9e3Nlc3Npb25SZW5ld2FsTXM6KHU9dCkuc2Vzc2lvblJlbmV3YWxNcyYmZnVuY3Rpb24oKXtyZXR1cm4gdS5zZXNzaW9uUmVuZXdhbE1zfSxzZXNzaW9uRXhwaXJhdGlvbk1zOnUuc2Vzc2lvbkV4cGlyYXRpb25NcyYmZnVuY3Rpb24oKXtyZXR1cm4gdS5zZXNzaW9uRXhwaXJhdGlvbk1zfSxjb29raWVEb21haW46dS5jb29raWVEb21haW4mJmZ1bmN0aW9uKCl7cmV0dXJuIHUuY29va2llRG9tYWlufSxuYW1lUHJlZml4OnUubmFtZVByZWZpeCYmZnVuY3Rpb24oKXtyZXR1cm4gdS5uYW1lUHJlZml4fSxzZXNzaW9uQXNHdWlkOmZ1bmN0aW9uKCl7cmV0dXJuIHUuc2Vzc2lvbkFzR3VpZH0saWRMZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gdS5pZExlbmd0aD91LmlkTGVuZ3RoOjIyfX07ZnVuY3Rpb24gcyhuKXt2YXIgdD1lLmF1dG9tYXRpY1Nlc3Npb24scj1uLnNwbGl0KFwifFwiKTtyLmxlbmd0aD4wJiZ0LnNldElkKHJbMF0pO3RyeXtpZihyLmxlbmd0aD4xKXt2YXIgaT0rclsxXTt0LmFjcXVpc2l0aW9uRGF0ZT0rbmV3IERhdGUoaSksdC5hY3F1aXNpdGlvbkRhdGU9dC5hY3F1aXNpdGlvbkRhdGU+MD90LmFjcXVpc2l0aW9uRGF0ZTowfWlmKHIubGVuZ3RoPjIpe3ZhciBhPStyWzJdO3QucmVuZXdhbERhdGU9K25ldyBEYXRlKGEpLHQucmVuZXdhbERhdGU9dC5yZW5ld2FsRGF0ZT4wP3QucmVuZXdhbERhdGU6MH19Y2F0Y2godSl7cnQobywxLDUxMCxcIkVycm9yIHBhcnNpbmcgYWlfc2Vzc2lvbiBjb29raWUsIHNlc3Npb24gd2lsbCBiZSByZXNldDogXCIrdSl9MD09PXQucmVuZXdhbERhdGUmJnJ0KG8sMiw1MTcsXCJBSSBzZXNzaW9uIHJlbmV3YWwgZGF0ZSBpcyAwLCBzZXNzaW9uIHdpbGwgYmUgcmVzZXQuXCIpfWZ1bmN0aW9uIGwoKXt2YXIgbj1lLmF1dG9tYXRpY1Nlc3Npb24sdD0obmV3IERhdGUpLmdldFRpbWUoKSxyPWUuY29uZmlnLnNlc3Npb25Bc0d1aWQoKTshX24ocikmJnI/cW4ocik/bi5zZXRJZChMcigpKTpuLnNldElkKExyKHIpKTpuLnNldElkKEZ0KGMmJmMuaWRMZW5ndGg/Yy5pZExlbmd0aCgpOjIyKSksbi5hY3F1aXNpdGlvbkRhdGU9dCxuLnJlbmV3YWxEYXRlPXQsZihuLmdldElkKCksbi5hY3F1aXNpdGlvbkRhdGUsbi5yZW5ld2FsRGF0ZSksTWkoKXx8cnQobywyLDUwNSxcIkJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBsb2NhbCBzdG9yYWdlLiBTZXNzaW9uIGR1cmF0aW9ucyB3aWxsIGJlIGluYWNjdXJhdGUuXCIpfWZ1bmN0aW9uIGYobix0LG8pe3ZhciB1PXQrZS5jb25maWcuc2Vzc2lvbkV4cGlyYXRpb25NcygpLGM9bytlLmNvbmZpZy5zZXNzaW9uUmVuZXdhbE1zKCkscz1uZXcgRGF0ZSxsPVtuLHQsb107dTxjP3Muc2V0VGltZSh1KTpzLnNldFRpbWUoYyk7dmFyIGY9ZS5jb25maWcuY29va2llRG9tYWluP2UuY29uZmlnLmNvb2tpZURvbWFpbigpOm51bGw7YS5zZXQoaSgpLGwuam9pbihcInxcIikrXCI7ZXhwaXJlcz1cIitzLnRvVVRDU3RyaW5nKCksbnVsbCxmKSxyPShuZXcgRGF0ZSkuZ2V0VGltZSgpfURuKHQuc2Vzc2lvbkV4cGlyYXRpb25Ncyl8fChjLnNlc3Npb25FeHBpcmF0aW9uTXM9ZnVuY3Rpb24oKXtyZXR1cm4gbi5hY3F1aXNpdGlvblNwYW59KSxEbih0LnNlc3Npb25SZW5ld2FsTXMpfHwoYy5zZXNzaW9uUmVuZXdhbE1zPWZ1bmN0aW9uKCl7cmV0dXJuIG4ucmVuZXdhbFNwYW59KSxlLmNvbmZpZz1jLGk9ZnVuY3Rpb24oKXtyZXR1cm4gZS5jb25maWcubmFtZVByZWZpeCYmZS5jb25maWcubmFtZVByZWZpeCgpP1VpK2UuY29uZmlnLm5hbWVQcmVmaXgoKTpVaX0sZS5hdXRvbWF0aWNTZXNzaW9uPW5ldyBCaSxlLnVwZGF0ZT1mdW5jdGlvbigpe2UuYXV0b21hdGljU2Vzc2lvbi5nZXRJZCgpfHxmdW5jdGlvbigpe3ZhciBuPWEuZ2V0KGkoKSk7aWYobiYmRG4obi5zcGxpdCkpcyhuKTtlbHNle3ZhciB0PWZ1bmN0aW9uKG4sZSl7dmFyIHQ9T2koKTtpZihudWxsIT09dCl0cnl7cmV0dXJuIHQuZ2V0SXRlbShlKX1jYXRjaChyKXtnaT0hMSxydChuLDEsNTAzLFwiQnJvd3NlciBmYWlsZWQgcmVhZCBvZiBsb2NhbCBzdG9yYWdlLiBcIityKX1yZXR1cm4gbnVsbH0obyxpKCkpO3QmJnModCl9ZS5hdXRvbWF0aWNTZXNzaW9uLmdldElkKCl8fGwoKX0oKTt2YXIgdD1lLmF1dG9tYXRpY1Nlc3Npb24sdT1lLmNvbmZpZyxjPShuZXcgRGF0ZSkuZ2V0VGltZSgpLGQ9Yy10LmFjcXVpc2l0aW9uRGF0ZT51LnNlc3Npb25FeHBpcmF0aW9uTXMoKSx2PWMtdC5yZW5ld2FsRGF0ZT51LnNlc3Npb25SZW5ld2FsTXMoKTtpZihkfHx2KWwoKTtlbHNleyghcnx8Yy1yPm4uY29va2llVXBkYXRlSW50ZXJ2YWwpJiYodC5yZW5ld2FsRGF0ZT1jLGYodC5nZXRJZCgpLHQuYWNxdWlzaXRpb25EYXRlLHQucmVuZXdhbERhdGUpKX19LGUuYmFja3VwPWZ1bmN0aW9uKCl7dmFyIG4sdCxyLGE9ZS5hdXRvbWF0aWNTZXNzaW9uO249YS5nZXRJZCgpLHQ9YS5hY3F1aXNpdGlvbkRhdGUscj1hLnJlbmV3YWxEYXRlLGZ1bmN0aW9uKG4sZSx0KXt2YXIgcj1PaSgpO2lmKG51bGwhPT1yKXRyeXtyLnNldEl0ZW0oZSx0KX1jYXRjaChpKXtnaT0hMSxydChuLDEsNTA0LFwiQnJvd3NlciBmYWlsZWQgd3JpdGUgdG8gbG9jYWwgc3RvcmFnZS4gXCIraSl9fShvLGkoKSxbbix0LHJdLmpvaW4oXCJ8XCIpKX19KSl9cmV0dXJuIG4uYWNxdWlzaXRpb25TcGFuPTg2NGU1LG4ucmVuZXdhbFNwYW49MThlNSxuLmNvb2tpZVVwZGF0ZUludGVydmFsPTZlNCxufSgpLHppPVtcIkFYXCIsXCJFWFwiLFwiU0ZcIixcIkNTXCIsXCJDRlwiLFwiQ1RcIixcIkNVXCIsXCJEQ1wiLFwiREZcIixcIkg1XCIsXCJITFwiLFwiV1NcIixcIldQXCJdO2Z1bmN0aW9uIHFpKG4sZSl7dm9pZCAwPT09ZSYmKGU9emkpO3ZhciB0PW51bGw7aWYobilmb3IodmFyIHI9bi5zcGxpdChcIixcIiksaT0wO2k8ci5sZW5ndGg7aSsrKUhpKHJbaV0sZSkmJih0P3QrPVwiLFwiK3JbaV06dD1yW2ldKTtyZXR1cm4gdH1mdW5jdGlvbiBIaShuLGUpe2lmKHZvaWQgMD09PWUmJihlPXppKSwhbnx8bi5sZW5ndGg8NClyZXR1cm4hMTtmb3IodmFyIHQ9ITEscj1uLnN1YnN0cmluZygwLDMpLnRvU3RyaW5nKCkudG9VcHBlckNhc2UoKSxpPTA7aTxlLmxlbmd0aDtpKyspaWYoZVtpXStcIjpcIj09PXImJm4ubGVuZ3RoPD0yNTYpe3Q9ITA7YnJlYWt9cmV0dXJuIHR9ZnVuY3Rpb24gamkoKXtyZXR1cm4gdGhpcy5nZXRFeHBJZCgpfXZhciBXaT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgcj1udWxsLGk9emkuc2xpY2UoMCksbz1cIlRyZWF0bWVudHNcIixhPWh0KHQpLHU9ZTtRKG4sdGhpcywoZnVuY3Rpb24obil7aWYoTmUoKSl7dmFyIHQ9RGUoKS5kb2N1bWVudEVsZW1lbnQ7dCYmKG4ubG9jYWxlPXQubGFuZyl9ZnVuY3Rpb24gYyhuKXtuIT09ciYmKHI9cWkobixpKSl9bi5lbnY9ZS5lbnY/ZS5lbnY6ZnVuY3Rpb24obil7dmFyIGUsdD17fSxyPURlKCk7aWYocil7ZT1yJiZyLnF1ZXJ5U2VsZWN0b3JBbGwoXCJtZXRhXCIpO2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO2lmKG8ubmFtZSlpZigwPT09by5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihuKSl7dmFyIGE9by5uYW1lLnJlcGxhY2UobixcIlwiKTt0W2FdPW8uY29udGVudH19fXJldHVybiB0fShcImF3YS1cIikuZW52LG4uZ2V0RXhwSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdS5leHBJZD8oYyh1LmV4cElkKSxyKTooYyhScihhLG8pKSxyKX19KSl9cmV0dXJuIG4udmFsaWRhdGVBcHBFeHBJZD1xaSxuLl9zdGF0aWNJbml0PXZvaWQgWm4obi5wcm90b3R5cGUsXCJleHBJZFwiLGppKSxufSgpLFZpPWZ1bmN0aW9uKCl7fSxYaT1mdW5jdGlvbigpe307ZnVuY3Rpb24gR2koKXtyZXR1cm4gdGhpcy5nZXRNc2ZwYygpfWZ1bmN0aW9uIFFpKCl7cmV0dXJuIHRoaXMuZ2V0QW5pZCgpfXZhciBKaT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgcj1odCh0KTtRKG4sdGhpcywoZnVuY3Rpb24obil7ZS5zZXJ2aWNlTmFtZSYmKG4uc2VydmljZU5hbWU9ZS5zZXJ2aWNlTmFtZSksbi5nZXRNc2ZwYz1mdW5jdGlvbigpe3JldHVybiBScihyLFwiTVNGUENcIil9LG4uZ2V0QW5pZD1mdW5jdGlvbigpe3JldHVybiBScihyLFwiQU5PTlwiKS5zbGljZSgwLDM0KX19KSl9dmFyIGU7cmV0dXJuIG4uX3N0YXRpY0luaXQ9KFpuKGU9bi5wcm90b3R5cGUsXCJtc2ZwY1wiLEdpKSx2b2lkIFpuKGUsXCJhbmlkXCIsUWkpKSxufSgpLCRpPWZ1bmN0aW9uKCl7dmFyIG49KG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpLGU9biU2MCx0PShuLWUpLzYwLHI9XCIrXCI7dD4wJiYocj1cIi1cIiksdD1NYXRoLmFicyh0KSxlPU1hdGguYWJzKGUpLHRoaXMudHo9cisodDwxMD9cIjBcIit0OnQudG9TdHJpbmcoKSkrXCI6XCIrKGU8MTA/XCIwXCIrZTplLnRvU3RyaW5nKCkpfSxZaT17V0lOOi8od2luZG93c3x3aW4zMikvaSxXSU5SVDovIGFybTsvaSxXSU5QSE9ORTovd2luZG93c1xcc3Bob25lXFxzXFxkK1xcLlxcZCsvaSxPU1g6LyhtYWNpbnRvc2h8bWFjIG9zIHgpL2ksSU9TOi8oaXBhZHxpcGhvbmV8aXBvZCkoPz0uKmxpa2UgbWFjIG9zIHgpL2ksTElOVVg6LyhsaW51eHxqb2xpfFtreGxuXT91YnVudHV8ZGViaWFufFtvcGVuXSpzdXNlfGdlbnRvb3xhcmNofHNsYWNrd2FyZXxmZWRvcmF8bWFuZHJpdmF8Y2VudG9zfHBjbGludXhvc3xyZWRoYXR8emVud2FsaykvaSxBTkRST0lEOi9hbmRyb2lkL2ksQ1JPUzovQ3JPUy9pfSxaaT17NS4xOlwiWFBcIixcIjYuMFwiOlwiVmlzdGFcIiw2LjE6XCI3XCIsNi4yOlwiOFwiLDYuMzpcIjguMVwiLFwiMTAuMFwiOlwiMTBcIn0sbm89XCJVbmtub3duXCIsZW89W3tyOllpLldJTlBIT05FLG9zOlwiV2luZG93cyBQaG9uZVwifSx7cjpZaS5XSU5SVCxvczpcIldpbmRvd3MgUlRcIn0se3I6WWkuV0lOLG9zOlwiV2luZG93c1wifSx7cjpZaS5JT1Msb3M6XCJpT1NcIn0se3I6WWkuQU5EUk9JRCxvczpcIkFuZHJvaWRcIn0se3I6WWkuTElOVVgsb3M6XCJMaW51eFwifSx7cjpZaS5DUk9TLG9zOlwiQ2hyb21lIE9TXCJ9LHtzOlwieDExXCIsb3M6XCJVbml4XCJ9LHtzOlwiYmxhY2tiZXJyeVwiLG9zOlwiQmxhY2tCZXJyeVwifSx7czpcInN5bWJpYW5cIixvczpcIlN5bWJpYW5cIn0se3M6XCJub2tpYVwiLG9zOlwiTm9raWFcIn0se3I6WWkuT1NYLG9zOlwiTWFjIE9TIFhcIn1dO2Z1bmN0aW9uIHRvKG4sZSl7cmV0dXJuXCJXaW5kb3dzXCI9PT1lP3JvKG4sXCJXaW5kb3dzIE5UXCIpOlwiQW5kcm9pZFwiPT09ZT9ybyhuLGUpOlwiTWFjIE9TIFhcIj09PWU/ZnVuY3Rpb24obil7dmFyIGU9bi5tYXRjaChuZXcgUmVnRXhwKFwiTWFjIE9TIFggKFtcXFxcZCxfLC5dKylcIikpO2lmKGUpe3ZhciB0PWVbMV0ucmVwbGFjZSgvXy9nLFwiLlwiKTtpZih0KXt2YXIgcj1pbyh0KTtyZXR1cm4gcj90LnNwbGl0KHIpWzBdOnR9fXJldHVybiBub30obik6XCJpT1NcIj09PWU/ZnVuY3Rpb24obil7dmFyIGU9bi5tYXRjaChuZXcgUmVnRXhwKFwiT1MgKFtcXFxcZCxfLC5dKylcIikpO2lmKGUpe3ZhciB0PWVbMV0ucmVwbGFjZSgvXy9nLFwiLlwiKTtpZih0KXt2YXIgcj1pbyh0KTtyZXR1cm4gcj90LnNwbGl0KHIpWzBdOnR9fXJldHVybiBub30obik6bm99ZnVuY3Rpb24gcm8obixlKXt2YXIgdD1uLm1hdGNoKG5ldyBSZWdFeHAoZStcIiAoW1xcXFxkLC5dKylcIikpO3JldHVybiB0P1ppW3RbMV1dP1ppW3RbMV1dOnRbMV06bm99ZnVuY3Rpb24gaW8obil7cmV0dXJuIG4uaW5kZXhPZihcIi5cIik+LTE/XCIuXCI6bi5pbmRleE9mKFwiX1wiKT4tMT9cIl9cIjpudWxsfXZhciBvbz1mdW5jdGlvbihuKXtpZihuLnBvcHVsYXRlT3BlcmF0aW5nU3lzdGVtSW5mbyl7dmFyIGU9dGhpcyx0PU1lKCl8fHt9LHI9bi51c2VyQWdlbnR8fHQudXNlckFnZW50fHxcIlwiLGk9bi51c2VyQWdlbnREYXRhfHx0LnVzZXJBZ2VudERhdGF8fHt9O2lmKHIpe3ZhciBvPWZ1bmN0aW9uKG4pe2Zvcih2YXIgZT0wO2U8ZW8ubGVuZ3RoO2UrKyl7dmFyIHQ9ZW9bZV07aWYodC5yJiZuLm1hdGNoKHQucikpcmV0dXJuIHQub3M7aWYodC5zJiYtMSE9PW4uaW5kZXhPZih0LnMpKXJldHVybiB0Lm9zfXJldHVybiBub30oci50b0xvd2VyQ2FzZSgpKTtlLm5hbWU9byxlLnZlcj10byhyLG8pfWUubmFtZSYmZS5uYW1lIT09bm98fCFLbihpLnBsYXRmb3JtKXx8KGUubmFtZT1pLnBsYXRmb3JtKX19LGFvPVwiTWljcm9zb2Z0QXBwbGljYXRpb25zVGVsZW1ldHJ5RGV2aWNlSWRcIjt2YXIgdW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCl7dmFyIHI9MDtRKG4sdGhpcywoZnVuY3Rpb24obil7dmFyIGk9ZS5wcm9wZXJ0eVN0b3JhZ2VPdmVycmlkZTtuLnNlcT1yLG4uZXBvY2g9T3QoITEpLnRvU3RyaW5nKCk7dmFyIG89aHQodCxlKTtpZihvLmlzRW5hYmxlZCgpfHxpKXt2YXIgYT1mdW5jdGlvbihuLGUsdCl7cmV0dXJuIGU/ZS5nZXRQcm9wZXJ0eSh0KXx8XCJcIjpScihuLHQpfShvLGksYW8pO2F8fChhPWJyKCkpLGZ1bmN0aW9uKG4sZSx0LHIpe2U/ZS5zZXRQcm9wZXJ0eSh0LHIpOm4uc2V0KHQsciwzMTUzNmUzKX0obyxpLGFvLGEpLG4uaW5zdGFsbElkPWF9ZWxzZSBvLnB1cmdlKGFvKTtuLmdldFNlcXVlbmNlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4rK3J9fSkpfXJldHVybiBuLl9faWVEeW49MSxufSgpLGNvPWZ1bmN0aW9uKG4sZSx0LHIpe3ZhciBpPXRoaXM7aWYoaS50cmFjZUlkPWV8fENyKCksbi5lbmFibGVEaXN0cmlidXRlZFRyYWNpbmcmJiF0JiYodD1DcigpLnN1YnN0cmluZygwLDE2KSksaS5wYXJlbnRJZD10LG4uZW5hYmxlQXBwbGljYXRpb25JbnNpZ2h0c1RyYWNlKXtpLm5hbWU9cjt2YXIgbz1PZSgpO28mJm8ucGF0aG5hbWUmJihpLm5hbWU9by5wYXRobmFtZSl9fTtmdW5jdGlvbiBzbygpe3JldHVybiB0aGlzLmdldExvY2FsSWQoKX1mdW5jdGlvbiBsbyhuKXt0aGlzLnNldExvY2FsSWQobil9dmFyIGZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihlLHQscil7dmFyIGksbz10LGE9aHQocixlKTtRKG4sdGhpcywoZnVuY3Rpb24odCl7aWYoYSYmYS5pc0VuYWJsZWQoKSYmKGQoKSxvLmVuYWJsZUFwcGxpY2F0aW9uSW5zaWdodHNVc2VyKSl7dmFyIHI9UnIoYSxuLnVzZXJDb29raWVOYW1lKTtpZihyKXt2YXIgdT1yLnNwbGl0KG4uY29va2llU2VwYXJhdG9yKTt1Lmxlbmd0aD4wJiYodC5pZD11WzBdKX1pZighdC5pZCl7dC5pZD1GdChlJiYhX24oZS5pZExlbmd0aCk/ZS5pZExlbmd0aDoyMik7dmFyIGM9am4obmV3IERhdGUpO3QuYWNjb3VudEFjcXVpc2l0aW9uRGF0ZT1jO3ZhciBzPVt0LmlkLGNdLGw9by5jb29raWVEb21haW4/by5jb29raWVEb21haW46dm9pZCAwO2Euc2V0KG4udXNlckNvb2tpZU5hbWUscy5qb2luKG4uY29va2llU2VwYXJhdG9yKSwzMTUzNmUzLGwpfX1pZihcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yKXt2YXIgZj1uYXZpZ2F0b3I7dC5sb2NhbGU9Zi51c2VyTGFuZ3VhZ2V8fGYubGFuZ3VhZ2V9ZnVuY3Rpb24gZCgpe2lmKCFvLmhhc2hJZGVudGlmaWVycyYmIW8uZHJvcElkZW50aWZpZXJzKXt2YXIgbj1ScihhLFwiTVVJRFwiKTtuJiYoaT1cInQ6XCIrbil9cmV0dXJuIGl9dC5nZXRMb2NhbElkPWZ1bmN0aW9uKCl7cmV0dXJuIGl8fGQoKX0sdC5zZXRMb2NhbElkPWZ1bmN0aW9uKG4pe2k9bn19KSl9cmV0dXJuIG4uY29va2llU2VwYXJhdG9yPVwifFwiLG4udXNlckNvb2tpZU5hbWU9XCJhaV91c2VyXCIsbi5fc3RhdGljSW5pdD12b2lkIFpuKG4ucHJvdG90eXBlLFwibG9jYWxJZFwiLHNvLGxvKSxufSgpLHZvPWZ1bmN0aW9uKG4pe3ZhciBlPXRoaXM7ZS5wb3BTYW1wbGU9MTAwLGUuZXZlbnRGbGFncz0wLG4uaGFzaElkZW50aWZpZXJzJiYoZS5ldmVudEZsYWdzPTEwNDg1NzZ8ZS5ldmVudEZsYWdzKSxuLmRyb3BJZGVudGlmaWVycyYmKGUuZXZlbnRGbGFncz0yMDk3MTUyfGUuZXZlbnRGbGFncyksbi5zY3J1YklwT25seSYmKGUuZXZlbnRGbGFncz00MTk0MzA0fGUuZXZlbnRGbGFncyl9LHBvPVtcIlJlcXVpcmVkXCIsXCJBbmFseXRpY3NcIixcIlNvY2lhbE1lZGlhXCIsXCJBZHZlcnRpc2luZ1wiXSxnbz1cIihbXFxcXGQsLl0rKVwiLHlvPVwiVW5rbm93blwiLGhvPVwiRWRnL1wiLG1vPVt7dWE6XCJPUFIvXCIsYjpcIk9wZXJhXCJ9LHt1YTpcIlBoYW50b21KU1wiLGI6XCJQaGFudG9tSlNcIn0se3VhOlwiRWRnZVwiLGI6XCJFZGdlXCJ9LHt1YTpobyxiOlwiRWRnZVwifSx7dWE6XCJFbGVjdHJvblwiLGI6XCJFbGVjdHJvblwifSx7dWE6XCJDaHJvbWVcIixiOlwiQ2hyb21lXCJ9LHt1YTpcIlRyaWRlbnRcIixiOlwiTVNJRVwifSx7dWE6XCJNU0lFIFwiLGI6XCJNU0lFXCJ9LHt1YTpcIkZpcmVmb3hcIixiOlwiRmlyZWZveFwifSx7dWE6XCJTYWZhcmlcIixiOlwiU2FmYXJpXCJ9LHt1YTpcIlNreXBlU2hlbGxcIixiOlwiU2t5cGVTaGVsbFwifV0sYm89W3ticjpcIk1pY3Jvc29mdCBFZGdlXCIsYjpcIkVkZ2VcIn0se2JyOlwiR29vZ2xlIENocm9tZVwiLGI6XCJDaHJvbWVcIn0se2JyOlwiT3BlcmFcIixiOlwiT3BlcmFcIn1dO2Z1bmN0aW9uIFNvKG4sZSl7cmV0dXJuIGUuaW5kZXhPZihuKT4tMX1mdW5jdGlvbiBDbyhuLGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKG49PWVbdF0uYnJhbmQpcmV0dXJuIGVbdF0udmVyc2lvbjtyZXR1cm4gbnVsbH1mdW5jdGlvbiB4byhuLGUpe3JldHVyblwiTVNJRVwiPT09ZT9mdW5jdGlvbihuKXt2YXIgZT1uLm1hdGNoKG5ldyBSZWdFeHAoXCJNU0lFIChbXFxcXGQsLl0rKVwiKSk7aWYoZSlyZXR1cm4gZVsxXTt2YXIgdD1uLm1hdGNoKG5ldyBSZWdFeHAoXCJydjooW1xcXFxkLC5dKylcIikpO2lmKHQpcmV0dXJuIHRbMV19KG4pOmZ1bmN0aW9uKG4sZSl7XCJTYWZhcmlcIj09PW4/bj1cIlZlcnNpb25cIjpcIkVkZ2VcIj09PW4mJlNvKGhvLGUpJiYobj1cIkVkZ1wiKTt2YXIgdD1lLm1hdGNoKG5ldyBSZWdFeHAobitcIi9cIitnbykpO2lmKHQpcmV0dXJuIHRbMV07aWYoXCJPcGVyYVwiPT09biYmKHQ9ZS5tYXRjaChuZXcgUmVnRXhwKFwiT1BSLyhbXFxcXGQsLl0rKVwiKSkpKXJldHVybiB0WzFdO3JldHVybiB5b30oZSxuKX1mdW5jdGlvbiBJbygpe3JldHVybiB0aGlzLmdldFVzZXJDb25zZW50KCl9dmFyIHdvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihlLHQpe3ZhciByPWh0KHQpLGk9ZXx8e307UShuLHRoaXMsKGZ1bmN0aW9uKG4pe3ZhciBlPU9lKCk7aWYoZSl7dmFyIHQ9ZS5ob3N0bmFtZTt0JiYobi5kb21haW49XCJmaWxlOlwiPT09ZS5wcm90b2NvbD9cImxvY2FsXCI6dCl9aWYoaS5wb3B1bGF0ZUJyb3dzZXJJbmZvKXt2YXIgbz1pLnVzZXJBZ2VudCxhPShpLnVzZXJBZ2VudERhdGF8fHt9KS5icmFuZHMsdT1NZSgpO3UmJihvPW98fHUudXNlckFnZW50fHxcIlwiLGE9YXx8KHUudXNlckFnZW50RGF0YXx8e30pLmJyYW5kcyksZnVuY3Rpb24oZSx0KXtpZihCbih0KSl0cnl7Zm9yKHZhciByPTA7cjxiby5sZW5ndGg7cisrKXt2YXIgaT1Dbyhib1tyXS5icix0KTtpZihpKXJldHVybiBuLmJyb3dzZXI9Ym9bcl0uYix2b2lkKG4uYnJvd3NlclZlcj1pKX19Y2F0Y2goYSl7fWlmKGUpe3ZhciBvPWZ1bmN0aW9uKG4pe2lmKG4pZm9yKHZhciBlPTA7ZTxtby5sZW5ndGg7ZSsrKWlmKFNvKG1vW2VdLnVhLG4pKXJldHVybiBtb1tlXS5iO3JldHVybiB5b30oZSk7bi5icm93c2VyPW8sbi5icm93c2VyVmVyPXhvKGUsbyl9fShvLGEpO3ZhciBjPWZ1bmN0aW9uKCl7dmFyIG49e2g6MCx3OjB9LGU9a2UoKTtyZXR1cm4gZSYmZS5zY3JlZW4mJihuLmg9c2NyZWVuLmhlaWdodCxuLnc9c2NyZWVuLndpZHRoKSxufSgpO24uc2NyZWVuUmVzPWMudytcIlhcIitjLmh9X24oaS5ncGNEYXRhU2hhcmluZ09wdEluKT9uLmdwY0RhdGFTaGFyaW5nT3B0SW49bnVsbDpuLmdwY0RhdGFTaGFyaW5nT3B0SW49aS5ncGNEYXRhU2hhcmluZ09wdEluLG4uZ2V0VXNlckNvbnNlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gaS51c2VyQ29uc2VudGVkfHwhIVJyKHIsaS51c2VyQ29uc2VudENvb2tpZU5hbWV8fFwiTVNDQ1wiKX0sbi5nZXRVc2VyQ29uc2VudERldGFpbHM9ZnVuY3Rpb24oKXt2YXIgZT1udWxsO3RyeXt2YXIgdD1pLmNhbGxiYWNrO2lmKHQmJnQudXNlckNvbnNlbnREZXRhaWxzKXt2YXIgcj10LnVzZXJDb25zZW50RGV0YWlscygpO2lmKHIpe2U9aS5kaXNhYmxlQ29uc2VudERldGFpbHNTYW5pdGl6ZT9yOnt9O2Zvcih2YXIgbz0wO288cG8ubGVuZ3RoO28rKyl7dmFyIGE9cG9bb107ZVthXT1yW2FdfHwhMX19fXZhciB1PW4uZ3BjRGF0YVNoYXJpbmdPcHRJbjtyZXR1cm4gbnVsbCE9PXUmJigoZT1lfHx7fSkuR1BDX0RhdGFTaGFyaW5nT3B0SW49ISF1KSxlP0pTT04uc3RyaW5naWZ5KGUpOm51bGx9Y2F0Y2goYyl7fX0sWm4obixcInVzZXJDb25zZW50XCIsbi5nZXRVc2VyQ29uc2VudCl9KSl9cmV0dXJuIG4uX3N0YXRpY0luaXQ9dm9pZCBabihuLnByb3RvdHlwZSxcInVzZXJDb25zZW50XCIsSW8pLG59KCk7ZnVuY3Rpb24gVG8obixlLHQscixpKXt2YXIgbz1lLmV4dFtiaVtuXV07aWYobyl0cnl7TW4ociwoZnVuY3Rpb24obixlKXtpZihLbihlKXx8em4oZSl8fHFuKGUpKXt2YXIgcj1vW3Rbbl1dOyFpJiYocnx8S24ocil8fHpuKHIpfHxxbihyKSkmJihlPXIpLG9bdFtuXV09ZX19KSl9Y2F0Y2goYSl7fXJldHVybiBvfXZhciBfbz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSx0LHIpe1Eobix0aGlzLChmdW5jdGlvbihuKXtuLmFwcD1uZXcgV2kodCxyKSxuLmNsb3VkPW5ldyBWaSxuLnVzZXI9bmV3IGZvKGUsdCxyKSxuLm9zPW5ldyBvbyh0KSxuLndlYj1uZXcgd28odCxyKTt2YXIgaT1uZXcgdW8oZSxyKSxvPW5ldyBKaSh0LHIpLGE9bmV3IHZvKHQpO24ubG9jPW5ldyAkaSxuLmRldmljZT1uZXcgWGk7dmFyIHU9bmV3IEtpKHIsdCk7bi5zZXNzaW9uPW5ldyBCaTt2YXIgYyxzLGwsZj0oYz1uZXcgY28odCkscz1wKCksbD1jfHx7fSx7Z2V0TmFtZTpmdW5jdGlvbigpe3JldHVybiBsLm5hbWV9LHNldE5hbWU6ZnVuY3Rpb24obil7cyYmcy5zZXROYW1lKG4pLGwubmFtZT1ufSxnZXRUcmFjZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIGwudHJhY2VJZH0sc2V0VHJhY2VJZDpmdW5jdGlvbihuKXtzJiZzLnNldFRyYWNlSWQobiksWXIobikmJihsLnRyYWNlSWQ9bil9LGdldFNwYW5JZDpmdW5jdGlvbigpe3JldHVybiBsLnBhcmVudElkfSxzZXRTcGFuSWQ6ZnVuY3Rpb24obil7cyYmcy5zZXRTcGFuSWQobiksWnIobikmJihsLnBhcmVudElkPW4pfSxnZXRUcmFjZUZsYWdzOmZ1bmN0aW9uKCl7cmV0dXJuIGwudHJhY2VGbGFnc30sc2V0VHJhY2VGbGFnczpmdW5jdGlvbihuKXtzJiZzLnNldFRyYWNlRmxhZ3MobiksbC50cmFjZUZsYWdzPW59fSksZD0hKHR8fHt9KS5ldmVudENvbnRhaW5FeHRGaWVsZHM7ZnVuY3Rpb24gdigpe3ZhciBlPW4uc2Vzc2lvbjtpZihlJiZLbihlLmN1c3RvbUlkKSlyZXR1cm4gZS5jdXN0b21JZDt1LnVwZGF0ZSgpO3ZhciB0PXUuYXV0b21hdGljU2Vzc2lvbjtpZih0KXt2YXIgcj10LmdldElkKCk7ciYmS24ocikmJihlLmF1dG9tYXRpY0lkPXIpfXJldHVybiBlLmF1dG9tYXRpY0lkfWZ1bmN0aW9uIHAoKXt2YXIgbj1mO3JldHVybiByJiZyLmdldFRyYWNlQ3R4JiYobj1yLmdldFRyYWNlQ3R4KCExKXx8Ziksbn1uLmdldFRyYWNlQ3R4PWZ1bmN0aW9uKCl7cmV0dXJuIGZ9LG4uZ2V0U2Vzc2lvbklkPXYsbi5hcHBseUFwcGxpY2F0aW9uQ29udGV4dD1mdW5jdGlvbihlKXt2YXIgdCxyPW4uYXBwO1RvKDQsZSxTaSwoKHQ9e30pWzBdPXIuaWQsdFsxXT1yLnZlcix0WzJdPXIubmFtZSx0WzNdPXIubG9jYWxlLHRbNF09ci5nZXRFeHBJZCgpLHRbNV09ci5lbnYsdCksZCl9LG4uYXBwbHlVc2VyQ29udGV4dD1mdW5jdGlvbihlKXt2YXIgdCxyPW4udXNlcjtUbygwLGUseGksKCh0PXt9KVsxXT1yLmdldExvY2FsSWQoKSx0WzBdPXIubG9jYWxlLHRbMl09ci5pZCx0KSxkKX0sbi5hcHBseVdlYkNvbnRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQscj1uLndlYjtUbygzLGUsQ2ksKCh0PXt9KVswXT1yLmRvbWFpbix0WzFdPXIuYnJvd3Nlcix0WzJdPXIuYnJvd3NlclZlcix0WzNdPXIuc2NyZWVuUmVzLHRbNV09ci5nZXRVc2VyQ29uc2VudERldGFpbHMoKSx0WzRdPXIuZ2V0VXNlckNvbnNlbnQoKSx0KSxkKX0sbi5hcHBseU9zQ29udGV4dD1mdW5jdGlvbihlKXt2YXIgdCxyPW4ub3M7VG8oNSxlLElpLCgodD17fSlbMF09ci5uYW1lLHRbMV09ci52ZXIsdCksZCl9LG4uYXBwbHlTZGtDb250ZXh0PWZ1bmN0aW9uKG4pe3ZhciBlO1RvKDYsbix3aSwoKGU9e30pWzJdPWkuaW5zdGFsbElkLGVbMV09aS5nZXRTZXF1ZW5jZUlkKCksZVszXT1pLmVwb2NoLGUpLGQpfSxuLmFwcGx5SW50V2ViQ29udGV4dD1mdW5jdGlvbihuKXt2YXIgZTtUbyg3LG4sVGksKChlPXt9KVswXT1vLmdldE1zZnBjKCksZVsxXT1vLmdldEFuaWQoKSxlWzJdPW8uc2VydmljZU5hbWUsZSksZCl9LG4uYXBwbHlVdGNDb250ZXh0PWZ1bmN0aW9uKG4pe3ZhciBlLHQ9KChlPXt9KVswXT1hLnBvcFNhbXBsZSxlKTthLmV2ZW50RmxhZ3M+MCYmKHRbMV09YS5ldmVudEZsYWdzKSxUbyg4LG4sX2ksdCxkKX0sbi5hcHBseUxvY0NvbnRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQ7VG8oOSxlLEVpLCgodD17fSlbMF09bi5sb2MudHosdCksZCl9LG4uYXBwbHlTZXNzaW9uQ29udGV4dD1mdW5jdGlvbihuKXt2YXIgZTtUbyg0LG4sUGksKChlPXt9KVswXT12KCksZSksZCl9LG4uYXBwbHlEZXZpY2VDb250ZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LHI9bi5kZXZpY2U7VG8oMSxlLGtpLCgodD17fSlbMF09ci5sb2NhbElkLHRbMl09ci5tYWtlLHRbM109ci5tb2RlbCx0WzFdPXIuZGV2aWNlQ2xhc3MsdCksZCl9LG4uYXBwbHlDbG91ZENvbnRleHQ9ZnVuY3Rpb24oZSl7dmFyIHQscj1uLmNsb3VkO1RvKDEwLGUsTmksKCh0PXt9KVswXT1yLnJvbGUsdFsxXT1yLnJvbGVJbnN0YW5jZSx0WzJdPXIucm9sZVZlcix0KSxkKX0sbi5hcHBseUFJVHJhY2VDb250ZXh0PWZ1bmN0aW9uKG4pe3ZhciBlO2lmKHQuZW5hYmxlQXBwbGljYXRpb25JbnNpZ2h0c1RyYWNlKXt2YXIgcj1wKCk7ciYmVG8oMixuLERpLCgoZT17fSlbMF09ci5nZXRUcmFjZUlkKCksZVsxXT1yLmdldE5hbWUoKSxlWzJdPXIuZ2V0U3BhbklkKCksZSksITEpfX0sbi5hcHBseURpc3RyaWJ1dGVkVHJhY2VDb250ZXh0PWZ1bmN0aW9uKG4pe3ZhciBlLHQ9cCgpO2lmKHQpe3ZhciByPSgoZT17fSlbMF09dC5nZXRUcmFjZUlkKCksZVsxXT10LmdldFNwYW5JZCgpLGUpLGk9dC5nZXRUcmFjZUZsYWdzKCk7RW4oaSl8fChyWzJdPWkpLFRvKDExLG4sQWksciwhMSl9fX0pKX1yZXR1cm4gbi5fX2llRHluPTEsbn0oKTt2YXIgRW89W2JpWzRdLGJpWzBdLGJpWzNdLGJpWzVdLGJpWzZdLGJpWzddLGJpWzhdLGJpWzldLGJpWzFdLGJpWzJdLGJpWzExXSxiaVsxMF1dLFBvPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGUoKXt2YXIgdCxyLGksbz1uLmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uaWRlbnRpZmllcj1cIlN5c3RlbVByb3BlcnRpZXNDb2xsZWN0b3JcIixvLnByaW9yaXR5PTMsby52ZXJzaW9uPVwiMy4yLjE1XCIsUShlLG8sKGZ1bmN0aW9uKG4sZSl7ZnVuY3Rpb24gbygpe3Q9bnVsbCxyPXt9fW8oKSxuLmluaXRpYWxpemU9ZnVuY3Rpb24ocixvLGEpe2UuaW5pdGlhbGl6ZShyLG8sYSksaT1uLl9nZXRUZWxDdHgoKS5nZXRFeHRDZmcobi5pZGVudGlmaWVyKSx0PW5ldyBfbyhyLGksbyksbyYmby5zZXRUcmFjZUN0eCYmby5zZXRUcmFjZUN0eCh0LmdldFRyYWNlQ3R4KCkpfSxuLnByb2Nlc3NUZWxlbWV0cnk9ZnVuY3Rpb24oZSxvKXt6cihlLG4uaWRlbnRpZmllciksbz1uLl9nZXRUZWxDdHgobyk7dmFyIGEsdSxjPWUuZXh0PWUuZXh0P2UuZXh0Ont9O2UuZGF0YT1lLmRhdGE/ZS5kYXRhOnt9LFduKEVvLChmdW5jdGlvbihuKXtjW25dPWNbbl18fHt9fSkpLHQmJih0LmFwcGx5VXRjQ29udGV4dChlKSx0LmFwcGx5QXBwbGljYXRpb25Db250ZXh0KGUpLHQuYXBwbHlVc2VyQ29udGV4dChlKSx0LmFwcGx5V2ViQ29udGV4dChlKSx0LmFwcGx5T3NDb250ZXh0KGUpLHQuYXBwbHlTZGtDb250ZXh0KGUpLHQuYXBwbHlJbnRXZWJDb250ZXh0KGUpLHQuYXBwbHlMb2NDb250ZXh0KGUpLHQuYXBwbHlTZXNzaW9uQ29udGV4dChlKSx0LmFwcGx5RGV2aWNlQ29udGV4dChlKSxpLmVuYWJsZUFwcGxpY2F0aW9uSW5zaWdodHNUcmFjZSYmdC5hcHBseUFJVHJhY2VDb250ZXh0KGUpLGkuZW5hYmxlRGlzdHJpYnV0ZWRUcmFjaW5nJiZ0LmFwcGx5RGlzdHJpYnV0ZWRUcmFjZUNvbnRleHQoZSksdC5hcHBseUNsb3VkQ29udGV4dChlKSksV24oWW4oYyksKGZ1bmN0aW9uKG4pezA9PT1ZbihjW25dKS5sZW5ndGgmJmRlbGV0ZSBjW25dfSkpLGE9cix1PWUuZGF0YSxhJiZNbihhLChmdW5jdGlvbihuLGUpe3Vbbl18fCh1W25dPWUpfSkpLG4ucHJvY2Vzc05leHQoZSxvKX0sbi5nZXRQcm9wZXJ0aWVzQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiB0fSxuLnNldFByb3BlcnR5PWZ1bmN0aW9uKG4sZSl7cltuXT1lfSxuLl9kb1RlYXJkb3duPWZ1bmN0aW9uKG4sZSl7dmFyIHI9KG58fHt9KS5jb3JlKCk7aWYociYmci5nZXRUcmFjZUN0eCYmdCl7dmFyIGk9ci5nZXRUcmFjZUN0eCghMSk7aSYmaT09PXQuZ2V0VHJhY2VDdHgoKSYmci5zZXRUcmFjZUN0eChudWxsKX1vKCl9fSkpLG99cmV0dXJuIEMoZSxuKSxlLl9faWVEeW49MSxlfShkaSksa289NTAwO2Z1bmN0aW9uIE5vKG4sZSx0KXtlJiZCbihlKSYmZS5sZW5ndGg+MCYmKFduKGU9ZS5zb3J0KChmdW5jdGlvbihuLGUpe3JldHVybiBuLnByaW9yaXR5LWUucHJpb3JpdHl9KSksKGZ1bmN0aW9uKG4pe24ucHJpb3JpdHk8a28mJnNlKFwiQ2hhbm5lbCBoYXMgaW52YWxpZCBwcmlvcml0eSAtIFwiK24uaWRlbnRpZmllcil9KSksbi5wdXNoKHtxdWV1ZTp0ZShlKSxjaGFpbjpsaShlLHQuY29uZmlnLHQpfSkpfXZhciBEbz1mdW5jdGlvbihuKXtmdW5jdGlvbiBlKCl7dmFyIHQscixpPW4uY2FsbCh0aGlzKXx8dGhpcztmdW5jdGlvbiBvKCl7dD0wLHI9W119cmV0dXJuIGkuaWRlbnRpZmllcj1cIlRlbGVtZXRyeUluaXRpYWxpemVyUGx1Z2luXCIsaS5wcmlvcml0eT0xOTksbygpLFEoZSxpLChmdW5jdGlvbihuLGUpe24uYWRkVGVsZW1ldHJ5SW5pdGlhbGl6ZXI9ZnVuY3Rpb24obil7dmFyIGU9e2lkOnQrKyxmbjpufTtyZXR1cm4gci5wdXNoKGUpLHtyZW1vdmU6ZnVuY3Rpb24oKXtXbihyLChmdW5jdGlvbihuLHQpe2lmKG4uaWQ9PT1lLmlkKXJldHVybiByLnNwbGljZSh0LDEpLC0xfSkpfX19LG4ucHJvY2Vzc1RlbGVtZXRyeT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgaT0hMSxvPXIubGVuZ3RoLGE9MDthPG87KythKXt2YXIgdT1yW2FdO2lmKHUpdHJ5e2lmKCExPT09dS5mbi5hcHBseShudWxsLFtlXSkpe2k9ITA7YnJlYWt9fWNhdGNoKGMpe3J0KHQuZGlhZ0xvZygpLDEsNjQsXCJPbmUgb2YgdGVsZW1ldHJ5IGluaXRpYWxpemVycyBmYWlsZWQsIHRlbGVtZXRyeSBpdGVtIHdpbGwgbm90IGJlIHNlbnQ6IFwiK2llKGMpLHtleGNlcHRpb246S2UoYyl9LCEwKX19aXx8bi5wcm9jZXNzTmV4dChlLHQpfSxuLl9kb1RlYXJkb3duPWZ1bmN0aW9uKCl7bygpfX0pKSxpfXJldHVybiBDKGUsbiksZS5fX2llRHluPTEsZX0oZGkpLEFvPVwiUGx1Z2lucyBtdXN0IHByb3ZpZGUgaW5pdGlhbGl6ZSBtZXRob2RcIixNbz1cIlNESyBpcyBzdGlsbCB1bmxvYWRpbmcuLi5cIixPbz17bG9nZ2luZ0xldmVsQ29uc29sZToxfTtmdW5jdGlvbiBSbyhuLGUpe3JldHVybiBuZXcgVnIoZSl9ZnVuY3Rpb24gTG8obixlKXt2YXIgdD0hMTtyZXR1cm4gV24oZSwoZnVuY3Rpb24oZSl7aWYoZT09PW4pcmV0dXJuIHQ9ITAsLTF9KSksdH12YXIgRm89ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7dmFyIGUsdCxyLGksbyxhLHUsYyxzLGwsZixkLHYscCxnLGgsbSxiLFMsQyxJPTAsdz0hMTtRKG4sdGhpcywoZnVuY3Rpb24obil7ZnVuY3Rpb24gVCh0KXtpZighSSYmIXcmJih0fHxuLmxvZ2dlciYmbi5sb2dnZXIucXVldWUubGVuZ3RoPjApKXt2YXIgcj11ZShlLmRpYWdub3N0aWNMb2dJbnRlcnZhbCk7ciYmcj4wfHwocj0xZTQpLEk9c2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChJKSxJPTAsQSgpfSkscil9cmV0dXJuIEl9ZnVuY3Rpb24gXygpe3Q9ITEsZT1wZSghMCx7fSxPbyksbi5jb25maWc9ZSxuLmxvZ2dlcj1uZXcgZXQoZSksbi5fZXh0ZW5zaW9ucz1bXSxnPW5ldyBEbyxyPVtdLGk9bnVsbCxvPW51bGwsYT1udWxsLHU9bnVsbCxjPW51bGwsbD1udWxsLHM9W10sZj1udWxsLGQ9bnVsbCx2PW51bGwscD0hMSxoPW51bGwsbT1qdChcIkFJQmFzZUNvcmVcIiwhMCksYj1maSgpLEM9bnVsbH1mdW5jdGlvbiBFKCl7dmFyIHQ9dWkoTigpLGUsbik7cmV0dXJuIHQub25Db21wbGV0ZShUKSx0fWZ1bmN0aW9uIFAodCl7dmFyIHI9ZnVuY3Rpb24obixlLHQpe3ZhciByLGk9W10sbz17fTtyZXR1cm4gV24odCwoZnVuY3Rpb24odCl7KEVuKHQpfHxFbih0LmluaXRpYWxpemUpKSYmc2UoQW8pO3ZhciByPXQucHJpb3JpdHksYT10LmlkZW50aWZpZXI7dCYmciYmKEVuKG9bcl0pP29bcl09YTppdChuLFwiVHdvIGV4dGVuc2lvbnMgaGF2ZSBzYW1lIHByaW9yaXR5ICNcIityK1wiIC0gXCIrb1tyXStcIiwgXCIrYSkpLCghcnx8cjxlKSYmaS5wdXNoKHQpfSkpLChyPXthbGw6dH0pLmNvcmU9aSxyfShuLmxvZ2dlcixrbyxzKTtsPXIuY29yZSxjPW51bGw7dmFyIGk9ci5hbGw7aWYodj10ZShmdW5jdGlvbihuLGUsdCl7dmFyIHI9W107aWYobiYmV24obiwoZnVuY3Rpb24obil7cmV0dXJuIE5vKHIsbix0KX0pKSxlKXt2YXIgaT1bXTtXbihlLChmdW5jdGlvbihuKXtuLnByaW9yaXR5PmtvJiZpLnB1c2gobil9KSksTm8ocixpLHQpfXJldHVybiByfShkLGksbikpLGYpe3ZhciBvPVZuKGksZik7LTEhPT1vJiZpLnNwbGljZShvLDEpLC0xIT09KG89Vm4obCxmKSkmJmwuc3BsaWNlKG8sMSksZi5fc2V0UXVldWUodil9ZWxzZSBmPWZ1bmN0aW9uKG4sZSl7ZnVuY3Rpb24gdCgpe3JldHVybiB1aShudWxsLGUuY29uZmlnLGUsbnVsbCl9ZnVuY3Rpb24gcihuLGUsdCxyKXt2YXIgaT1uP24ubGVuZ3RoKzE6MTtmdW5jdGlvbiBvKCl7MD09LS1pJiYociYmcigpLHI9bnVsbCl9aT4wJiZXbihuLChmdW5jdGlvbihuKXtpZihuJiZuLnF1ZXVlLmxlbmd0aD4wKXt2YXIgcj1uLmNoYWluLGE9ZS5jcmVhdGVOZXcocik7YS5vbkNvbXBsZXRlKG8pLHQoYSl9ZWxzZSBpLS19KSksbygpfXZhciBpPSExLG89e2lkZW50aWZpZXI6XCJDaGFubmVsQ29udHJvbGxlclBsdWdpblwiLHByaW9yaXR5OmtvLGluaXRpYWxpemU6ZnVuY3Rpb24oZSx0LHIsbyl7aT0hMCxXbihuLChmdW5jdGlvbihuKXtuJiZuLnF1ZXVlLmxlbmd0aD4wJiZ0aSh1aShuLmNoYWluLGUsdCkscil9KSl9LGlzSW5pdGlhbGl6ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX0scHJvY2Vzc1RlbGVtZXRyeTpmdW5jdGlvbihlLGkpe3IobixpfHx0KCksKGZ1bmN0aW9uKG4pe24ucHJvY2Vzc05leHQoZSl9KSwoZnVuY3Rpb24oKXtpLnByb2Nlc3NOZXh0KGUpfSkpfSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgaT10fHx7cmVhc29uOjB9O3JldHVybiByKG4sZSwoZnVuY3Rpb24obil7bi5wcm9jZXNzTmV4dChpKX0pLChmdW5jdGlvbigpe2UucHJvY2Vzc05leHQoaSl9KSksITB9LHBhdXNlOmZ1bmN0aW9uKCl7cihuLHQoKSwoZnVuY3Rpb24obil7bi5pdGVyYXRlKChmdW5jdGlvbihuKXtuLnBhdXNlJiZuLnBhdXNlKCl9KSl9KSxudWxsKX0scmVzdW1lOmZ1bmN0aW9uKCl7cihuLHQoKSwoZnVuY3Rpb24obil7bi5pdGVyYXRlKChmdW5jdGlvbihuKXtuLnJlc3VtZSYmbi5yZXN1bWUoKX0pKX0pLG51bGwpfSx0ZWFyZG93bjpmdW5jdGlvbihlLHQpe3ZhciBvPXR8fHtyZWFzb246MCxpc0FzeW5jOiExfTtyZXR1cm4gcihuLGUsKGZ1bmN0aW9uKG4pe24ucHJvY2Vzc05leHQobyl9KSwoZnVuY3Rpb24oKXtlLnByb2Nlc3NOZXh0KG8pLGk9ITF9KSksITB9LGdldENoYW5uZWw6ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDtyZXR1cm4gbiYmbi5sZW5ndGg+MCYmV24obiwoZnVuY3Rpb24obil7aWYobiYmbi5xdWV1ZS5sZW5ndGg+MCYmKFduKG4ucXVldWUsKGZ1bmN0aW9uKG4pe2lmKG4uaWRlbnRpZmllcj09PWUpcmV0dXJuIHQ9biwtMX0pKSx0KSlyZXR1cm4tMX0pKSx0fSxmbHVzaDpmdW5jdGlvbihlLGksbyxhKXt2YXIgdT0xLGM9ITEscz1udWxsO2Z1bmN0aW9uIGwoKXt1LS0sYyYmMD09PXUmJihzJiYoY2xlYXJUaW1lb3V0KHMpLHM9bnVsbCksaSYmaShjKSxpPW51bGwpfXJldHVybiBhPWF8fDVlMyxyKG4sdCgpLChmdW5jdGlvbihuKXtuLml0ZXJhdGUoKGZ1bmN0aW9uKG4pe2lmKG4uZmx1c2gpe3UrKzt2YXIgdD0hMTtuLmZsdXNoKGUsKGZ1bmN0aW9uKCl7dD0hMCxsKCl9KSxvKXx8dHx8KGUmJm51bGw9PXM/cz1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3M9bnVsbCxsKCl9KSxhKTpsKCkpfX0pKX0pLChmdW5jdGlvbigpe2M9ITAsbCgpfSkpLCEwfSxfc2V0UXVldWU6ZnVuY3Rpb24oZSl7bj1lfX07cmV0dXJuIG99KHYsbik7aS5wdXNoKGYpLGwucHVzaChmKSxuLl9leHRlbnNpb25zPXJpKGkpLGYuaW5pdGlhbGl6ZShlLG4saSksdGkoRSgpLGkpLG4uX2V4dGVuc2lvbnM9dGUocmkobHx8W10pKS5zbGljZSgpLHQmJmZ1bmN0aW9uKGUpe3ZhciB0PXNpKE4oKSxuKTt0Lm9uQ29tcGxldGUoVCksbi5fdXBkYXRlSG9vayYmITA9PT1uLl91cGRhdGVIb29rKHQsZSl8fHQucHJvY2Vzc05leHQoZSl9KHQpfWZ1bmN0aW9uIGsoZSl7dmFyIHQscj1udWxsLGk9bnVsbDtyZXR1cm4gV24obi5fZXh0ZW5zaW9ucywoZnVuY3Rpb24obil7aWYobi5pZGVudGlmaWVyPT09ZSYmbiE9PWYmJm4hPT1nKXJldHVybiBpPW4sLTF9KSksIWkmJmYmJihpPWYuZ2V0Q2hhbm5lbChlKSksaSYmKCh0PXtwbHVnaW46aX0pLnNldEVuYWJsZWQ9ZnVuY3Rpb24obil7ZWkoaSkuZGlzYWJsZWQ9IW59LHQuaXNFbmFibGVkPWZ1bmN0aW9uKCl7dmFyIG49ZWkoaSk7cmV0dXJuIW4udGVhcmRvd24mJiFuLmRpc2FibGVkfSx0LnJlbW92ZT1mdW5jdGlvbihuLGUpe3ZhciB0O3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgcj1baV0sbz0oKHQ9e3JlYXNvbjoxfSkuaXNBc3luYz1uLHQpO0QocixvLChmdW5jdGlvbihuKXtuJiZQKHtyZWFzb246MzIscmVtb3ZlZDpyfSksZSYmZShuKX0pKX0scj10KSxyfWZ1bmN0aW9uIE4oKXtpZighYyl7dmFyIHQ9KGx8fFtdKS5zbGljZSgpOy0xPT09Vm4odCxnKSYmdC5wdXNoKGcpLGM9bGkocmkodCksZSxuKX1yZXR1cm4gY31mdW5jdGlvbiBEKHQscixpKXtpZih0JiZ0Lmxlbmd0aD4wKXt2YXIgbz1jaShsaSh0LGUsbiksbik7by5vbkNvbXBsZXRlKChmdW5jdGlvbigpe3ZhciBuPSExLGU9W107V24ocywoZnVuY3Rpb24ocixpKXtMbyhyLHQpP249ITA6ZS5wdXNoKHIpfSkpLHM9ZTt2YXIgcj1bXTtkJiYoV24oZCwoZnVuY3Rpb24oZSxpKXt2YXIgbz1bXTtXbihlLChmdW5jdGlvbihlKXtMbyhlLHQpP249ITA6by5wdXNoKGUpfSkpLHIucHVzaChvKX0pKSxkPXIpLGkmJmkobiksVCgpfSkpLG8ucHJvY2Vzc05leHQocil9ZWxzZSBpKCExKX1mdW5jdGlvbiBBKCl7aWYobi5sb2dnZXImJm4ubG9nZ2VyLnF1ZXVlKXt2YXIgdD1uLmxvZ2dlci5xdWV1ZS5zbGljZSgwKTtuLmxvZ2dlci5xdWV1ZS5sZW5ndGg9MCxXbih0LChmdW5jdGlvbih0KXt2YXIgcixpPSgocj17fSkubmFtZT1ofHxcIkludGVybmFsTWVzc2FnZUlkOiBcIit0Lm1lc3NhZ2VJZCxyLmlLZXk9dWUoZS5pbnN0cnVtZW50YXRpb25LZXkpLHIudGltZT1qbihuZXcgRGF0ZSksci5iYXNlVHlwZT1aZS5kYXRhVHlwZSxyLmJhc2VEYXRhPXttZXNzYWdlOnQubWVzc2FnZX0scik7bi50cmFjayhpKX0pKX19ZnVuY3Rpb24gTShuLGUsdCxyKXtyZXR1cm4gZj9mLmZsdXNoKG4sZSx0fHw2LHIpOihlJiZlKCExKSwhMCl9ZnVuY3Rpb24gTyhlKXt2YXIgdD1uLmxvZ2dlcjt0PyhydCh0LDIsNzMsZSksVCgpKTpzZShlKX1fKCksbi5pc0luaXRpYWxpemVkPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG4uaW5pdGlhbGl6ZT1mdW5jdGlvbihyLG8sdSxjKXtwJiZzZShNbyksbi5pc0luaXRpYWxpemVkKCkmJnNlKFwiQ29yZSBzaG91bGQgbm90IGJlIGluaXRpYWxpemVkIG1vcmUgdGhhbiBvbmNlXCIpLGU9cnx8e30sbi5jb25maWc9ZSxFbihyLmluc3RydW1lbnRhdGlvbktleSkmJnNlKFwiUGxlYXNlIHByb3ZpZGUgaW5zdHJ1bWVudGF0aW9uIGtleVwiKSxpPWMsbi5fbm90aWZpY2F0aW9uTWFuYWdlcj1jLGZ1bmN0aW9uKCl7dmFyIG49dWUoZS5kaXNhYmxlRGJnRXh0KTshMD09PW4mJlMmJihpLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKFMpLFM9bnVsbCk7aSYmIVMmJiEwIT09biYmKFM9SmUoZSksaS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcihTKSl9KCksZnVuY3Rpb24oKXt2YXIgbj11ZShlLmVuYWJsZVBlcmZNZ3IpOyFuJiZhJiYoYT1udWxsKTtuJiZhZShlLFksUm8pfSgpLGFlKGUsWix7fSkuTm90aWZpY2F0aW9uTWFuYWdlcj1pLHUmJihuLmxvZ2dlcj11KTt2YXIgbD1hZShlLFwiZXh0ZW5zaW9uc1wiLFtdKTsocz1bXSkucHVzaC5hcHBseShzLHgoeChbXSxvKSxsKSksZD1hZShlLCQsW10pLFAobnVsbCksdiYmMCE9PXYubGVuZ3RofHxzZShcIk5vIGNoYW5uZWxzIGF2YWlsYWJsZVwiKSx0PSEwLG4ucmVsZWFzZVF1ZXVlKCl9LG4uZ2V0VHJhbnNtaXNzaW9uQ29udHJvbHM9ZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gdiYmV24odiwoZnVuY3Rpb24oZSl7bi5wdXNoKGUucXVldWUpfSkpLHRlKG4pfSxuLnRyYWNrPWZ1bmN0aW9uKHQpe3QuaUtleT10LmlLZXl8fGUuaW5zdHJ1bWVudGF0aW9uS2V5LHQudGltZT10LnRpbWV8fGpuKG5ldyBEYXRlKSx0LnZlcj10LnZlcnx8XCI0LjBcIiwhcCYmbi5pc0luaXRpYWxpemVkKCk/RSgpLnByb2Nlc3NOZXh0KHQpOnIucHVzaCh0KX0sbi5nZXRQcm9jZXNzVGVsQ29udGV4dD1FLG4uZ2V0Tm90aWZ5TWdyPWZ1bmN0aW9uKCl7cmV0dXJuIGl8fChpPWZ1bmN0aW9uKCl7dmFyIG47cmV0dXJuIHkoKChuPXt9KS5hZGROb3RpZmljYXRpb25MaXN0ZW5lcj1mdW5jdGlvbihuKXt9LG4ucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXI9ZnVuY3Rpb24obil7fSxuLmV2ZW50c1NlbnQ9ZnVuY3Rpb24obil7fSxuLmV2ZW50c0Rpc2NhcmRlZD1mdW5jdGlvbihuLGUpe30sbi5ldmVudHNTZW5kUmVxdWVzdD1mdW5jdGlvbihuLGUpe30sbikpfSgpLG4uX25vdGlmaWNhdGlvbk1hbmFnZXI9aSksaX0sbi5hZGROb3RpZmljYXRpb25MaXN0ZW5lcj1mdW5jdGlvbihuKXtpJiZpLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKG4pfSxuLnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyPWZ1bmN0aW9uKG4pe2kmJmkucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIobil9LG4uZ2V0Q29va2llTWdyPWZ1bmN0aW9uKCl7cmV0dXJuIHV8fCh1PW10KGUsbi5sb2dnZXIpKSx1fSxuLnNldENvb2tpZU1ncj1mdW5jdGlvbihuKXt1PW59LG4uZ2V0UGVyZk1ncj1mdW5jdGlvbigpe2lmKCFvJiYhYSYmdWUoZS5lbmFibGVQZXJmTWdyKSl7dmFyIHQ9dWUoZS5jcmVhdGVQZXJmTWdyKTtEbih0KSYmKGE9dChuLG4uZ2V0Tm90aWZ5TWdyKCkpKX1yZXR1cm4gb3x8YXx8anJ9LG4uc2V0UGVyZk1ncj1mdW5jdGlvbihuKXtvPW59LG4uZXZlbnRDbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gci5sZW5ndGh9LG4ucmVsZWFzZVF1ZXVlPWZ1bmN0aW9uKCl7aWYodCYmci5sZW5ndGg+MCl7dmFyIG49cjtyPVtdLFduKG4sKGZ1bmN0aW9uKG4pe0UoKS5wcm9jZXNzTmV4dChuKX0pKX19LG4ucG9sbEludGVybmFsTG9ncz1mdW5jdGlvbihuKXtyZXR1cm4gaD1ufHxudWxsLHc9ITEsSSYmKGNsZWFySW50ZXJ2YWwoSSksST1udWxsKSxUKCEwKX0sbi5zdG9wUG9sbGluZ0ludGVybmFsTG9ncz1mdW5jdGlvbigpe3c9ITAsSSYmKGNsZWFySW50ZXJ2YWwoSSksST0wLEEoKSl9LGRlKG4sKGZ1bmN0aW9uKCl7cmV0dXJuIGd9KSxbXCJhZGRUZWxlbWV0cnlJbml0aWFsaXplclwiXSksbi51bmxvYWQ9ZnVuY3Rpb24oZSxyLGkpe3ZhciBvO3ZvaWQgMD09PWUmJihlPSEwKSx0fHxzZShcIlNESyBpcyBub3QgaW5pdGlhbGl6ZWRcIikscCYmc2UoTW8pO3ZhciBhPSgobz17cmVhc29uOjUwfSkuaXNBc3luYz1lLG8uZmx1c2hDb21wbGV0ZT0hMSxvKSx1PWNpKE4oKSxuKTtmdW5jdGlvbiBjKGUpe2EuZmx1c2hDb21wbGV0ZT1lLHA9ITAsYi5ydW4odSxhKSxuLnN0b3BQb2xsaW5nSW50ZXJuYWxMb2dzKCksdS5wcm9jZXNzTmV4dChhKX11Lm9uQ29tcGxldGUoKGZ1bmN0aW9uKCl7XygpLHImJnIoYSl9KSxuKSxBKCksTShlLGMsNixpKXx8YyghMSl9LG4uZ2V0UGx1Z2luPWssbi5hZGRQbHVnaW49ZnVuY3Rpb24obixlLHQscil7aWYoIW4pcmV0dXJuIHImJnIoITEpLHZvaWQgTyhBbyk7dmFyIGk9ayhuLmlkZW50aWZpZXIpO2lmKGkmJiFlKXJldHVybiByJiZyKCExKSx2b2lkIE8oXCJQbHVnaW4gW1wiK24uaWRlbnRpZmllcitcIl0gaXMgYWxyZWFkeSBsb2FkZWQhXCIpO3ZhciBvPXtyZWFzb246MTZ9O2Z1bmN0aW9uIGEoZSl7cy5wdXNoKG4pLG8uYWRkZWQ9W25dLFAobyksciYmcighMCl9aWYoaSl7dmFyIHU9W2kucGx1Z2luXTtEKHUse3JlYXNvbjoyLGlzQXN5bmM6ISF0fSwoZnVuY3Rpb24obil7bj8oby5yZW1vdmVkPXUsby5yZWFzb258PTMyLGEoKSk6ciYmcighMSl9KSl9ZWxzZSBhKCl9LG4uZXZ0TmFtZXNwYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG19LG4uZmx1c2g9TSxuLmdldFRyYWNlQ3R4PWZ1bmN0aW9uKG4pe3ZhciBlLHQ7cmV0dXJuIEN8fCh0PXt9LEM9e2dldE5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdC5uYW1lfSxzZXROYW1lOmZ1bmN0aW9uKG4pe2UmJmUuc2V0TmFtZShuKSx0Lm5hbWU9bn0sZ2V0VHJhY2VJZDpmdW5jdGlvbigpe3JldHVybiB0LnRyYWNlSWR9LHNldFRyYWNlSWQ6ZnVuY3Rpb24obil7ZSYmZS5zZXRUcmFjZUlkKG4pLFlyKG4pJiYodC50cmFjZUlkPW4pfSxnZXRTcGFuSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5zcGFuSWR9LHNldFNwYW5JZDpmdW5jdGlvbihuKXtlJiZlLnNldFNwYW5JZChuKSxacihuKSYmKHQuc3BhbklkPW4pfSxnZXRUcmFjZUZsYWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHQudHJhY2VGbGFnc30sc2V0VHJhY2VGbGFnczpmdW5jdGlvbihuKXtlJiZlLnNldFRyYWNlRmxhZ3MobiksdC50cmFjZUZsYWdzPW59fSksQ30sbi5zZXRUcmFjZUN0eD1mdW5jdGlvbihuKXtDPW58fG51bGx9LGZlKG4sXCJhZGRVbmxvYWRDYlwiLChmdW5jdGlvbigpe3JldHVybiBifSksXCJhZGRcIil9KSl9cmV0dXJuIG4uX19pZUR5bj0xLG59KCk7ZnVuY3Rpb24gQm8obixlLHQscil7V24obiwoZnVuY3Rpb24obil7aWYobiYmbltlXSlpZih0KXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIHIobil9KSwwKTtlbHNlIHRyeXtyKG4pfWNhdGNoKGkpe319KSl9dmFyIFVvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbihlKXt0aGlzLmxpc3RlbmVycz1bXTt2YXIgdD0hIShlfHx7fSkucGVyZkV2dHNTZW5kQWxsO1Eobix0aGlzLChmdW5jdGlvbihuKXtuLmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyPWZ1bmN0aW9uKGUpe24ubGlzdGVuZXJzLnB1c2goZSl9LG4ucmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVZuKG4ubGlzdGVuZXJzLGUpO3Q+LTE7KW4ubGlzdGVuZXJzLnNwbGljZSh0LDEpLHQ9Vm4obi5saXN0ZW5lcnMsZSl9LG4uZXZlbnRzU2VudD1mdW5jdGlvbihlKXtCbyhuLmxpc3RlbmVycyxubiwhMCwoZnVuY3Rpb24obil7bi5ldmVudHNTZW50KGUpfSkpfSxuLmV2ZW50c0Rpc2NhcmRlZD1mdW5jdGlvbihlLHQpe0JvKG4ubGlzdGVuZXJzLGVuLCEwLChmdW5jdGlvbihuKXtuLmV2ZW50c0Rpc2NhcmRlZChlLHQpfSkpfSxuLmV2ZW50c1NlbmRSZXF1ZXN0PWZ1bmN0aW9uKGUsdCl7Qm8obi5saXN0ZW5lcnMsdG4sdCwoZnVuY3Rpb24obil7bi5ldmVudHNTZW5kUmVxdWVzdChlLHQpfSkpfSxuLnBlcmZFdmVudD1mdW5jdGlvbihlKXtlJiYoIXQmJmUuaXNDaGlsZEV2dCgpfHxCbyhuLmxpc3RlbmVycyxybiwhMSwoZnVuY3Rpb24obil7ZS5pc0FzeW5jP3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG4ucGVyZkV2ZW50KGUpfSksMCk6bi5wZXJmRXZlbnQoZSl9KSkpfX0pKX1yZXR1cm4gbi5fX2llRHluPTEsbn0oKSxLbz1mdW5jdGlvbihuKXtmdW5jdGlvbiBlKCl7dmFyIHQ9bi5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBRKGUsdCwoZnVuY3Rpb24obixlKXtmdW5jdGlvbiB0KGUpe3ZhciB0PW4uZ2V0Tm90aWZ5TWdyKCk7dCYmdC5ldmVudHNEaXNjYXJkZWQoW2VdLDIpfW4uaW5pdGlhbGl6ZT1mdW5jdGlvbihuLHQscixpKXtlLmluaXRpYWxpemUobix0LHJ8fG5ldyBldChuKSxpfHxuZXcgVW8obikpfSxuLnRyYWNrPWZ1bmN0aW9uKHIpe0dyKG4uZ2V0UGVyZk1ncigpLChmdW5jdGlvbigpe3JldHVyblwiQXBwSW5zaWdodHNDb3JlOnRyYWNrXCJ9KSwoZnVuY3Rpb24oKXtudWxsPT09ciYmKHQociksc2UoXCJJbnZhbGlkIHRlbGVtZXRyeSBpdGVtXCIpKSxmdW5jdGlvbihuKXtFbihuLm5hbWUpJiYodChuKSxzZShcInRlbGVtZXRyeSBuYW1lIHJlcXVpcmVkXCIpKX0ociksZS50cmFjayhyKX0pLChmdW5jdGlvbigpe3JldHVybntpdGVtOnJ9fSksIXIuc3luYyl9fSkpLHR9cmV0dXJuIEMoZSxuKSxlLl9faWVEeW49MSxlfShGbyksem89ZnVuY3Rpb24obil7ZnVuY3Rpb24gZSgpe3ZhciB0PW4uY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gdC5wbHVnaW5WZXJzaW9uU3RyaW5nQXJyPVtdLFEoZSx0LChmdW5jdGlvbihuLGUpe24ubG9nZ2VyJiZuLmxvZ2dlci5xdWV1ZXx8KG4ubG9nZ2VyPW5ldyBldCh7bG9nZ2luZ0xldmVsQ29uc29sZToxfSkpLG4uaW5pdGlhbGl6ZT1mdW5jdGlvbih0LHIsaSxvKXtHcihuLChmdW5jdGlvbigpe3JldHVyblwiQXBwSW5zaWdodHNDb3JlLmluaXRpYWxpemVcIn0pLChmdW5jdGlvbigpe3ZhciBhPW4ucGx1Z2luVmVyc2lvblN0cmluZ0FycjtpZih0KXt0LmVuZHBvaW50VXJsfHwodC5lbmRwb2ludFVybD1cImh0dHBzOi8vYnJvd3Nlci5ldmVudHMuZGF0YS5taWNyb3NvZnQuY29tL09uZUNvbGxlY3Rvci8xLjAvXCIpO3ZhciB1PXQucHJvcGVydHlTdG9yYWdlT3ZlcnJpZGU7IXV8fHUuZ2V0UHJvcGVydHkmJnUuc2V0UHJvcGVydHl8fHNlKFwiSW52YWxpZCBwcm9wZXJ0eSBzdG9yYWdlIG92ZXJyaWRlIHBhc3NlZC5cIiksdC5jaGFubmVscyYmV24odC5jaGFubmVscywoZnVuY3Rpb24obil7biYmV24obiwoZnVuY3Rpb24obil7aWYobi5pZGVudGlmaWVyJiZuLnZlcnNpb24pe3ZhciBlPW4uaWRlbnRpZmllcitcIj1cIituLnZlcnNpb247YS5wdXNoKGUpfX0pKX0pKX1uLmdldFdQYXJhbT1mdW5jdGlvbigpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudHx8dC5lbmFibGVXUGFyYW0/MDotMX0sciYmV24ociwoZnVuY3Rpb24obil7aWYobiYmbi5pZGVudGlmaWVyJiZuLnZlcnNpb24pe3ZhciBlPW4uaWRlbnRpZmllcitcIj1cIituLnZlcnNpb247YS5wdXNoKGUpfX0pKSxuLnBsdWdpblZlcnNpb25TdHJpbmc9YS5qb2luKFwiO1wiKSxuLnBsdWdpblZlcnNpb25TdHJpbmdBcnI9YTt0cnl7ZS5pbml0aWFsaXplKHQscixpLG8pLG4ucG9sbEludGVybmFsTG9ncyhcIkludGVybmFsTG9nXCIpfWNhdGNoKGwpe3ZhciBjPW4ubG9nZ2VyLHM9S2UobCk7LTEhPT1zLmluZGV4T2YoXCJjaGFubmVsc1wiKSYmKHMrPVwiXFxuIC0gQ2hhbm5lbHMgbXVzdCBiZSBwcm92aWRlZCB0aHJvdWdoIGNvbmZpZy5jaGFubmVscyBvbmx5IVwiKSxydChjLDEsNTE0LFwiU0RLIEluaXRpYWxpemF0aW9uIEZhaWxlZCAtIG5vIHRlbGVtZXRyeSB3aWxsIGJlIHNlbnQ6IFwiK3MpfX0pLChmdW5jdGlvbigpe3JldHVybntjb25maWc6dCxleHRlbnNpb25zOnIsbG9nZ2VyOmksbm90aWZpY2F0aW9uTWFuYWdlcjpvfX0pKX0sbi50cmFjaz1mdW5jdGlvbih0KXtHcihuLChmdW5jdGlvbigpe3JldHVyblwiQXBwSW5zaWdodHNDb3JlLnRyYWNrXCJ9KSwoZnVuY3Rpb24oKXt2YXIgcj10O2lmKHIpe3IudGltaW5ncz1yLnRpbWluZ3N8fHt9LHIudGltaW5ncy50cmFja1N0YXJ0PUJyKCksQXIoci5sYXRlbmN5KXx8KHIubGF0ZW5jeT0xKTt2YXIgaT1yLmV4dD1yLmV4dHx8e307aS5zZGs9aS5zZGt8fHt9LGkuc2RrLnZlcj1Ucjt2YXIgbz1yLmJhc2VEYXRhPXIuYmFzZURhdGF8fHt9O28ucHJvcGVydGllcz1vLnByb3BlcnRpZXN8fHt9O3ZhciBhPW8ucHJvcGVydGllczthLnZlcnNpb249YS52ZXJzaW9ufHxuLnBsdWdpblZlcnNpb25TdHJpbmd8fElyfWUudHJhY2socil9KSwoZnVuY3Rpb24oKXtyZXR1cm57aXRlbTp0fX0pLCF0LnN5bmMpfX0pKSx0fXJldHVybiBDKGUsbiksZS5fX2llRHluPTEsZX0oS28pLHFvPXpvLEhvPXZpKHtVbmtub3duOjAsTm9uUmV0cnlhYmxlU3RhdHVzOjEsSW52YWxpZEV2ZW50OjIsU2l6ZUxpbWl0RXhjZWVkZWQ6MyxLaWxsU3dpdGNoOjQsUXVldWVGdWxsOjV9KSxqbz1cIlJFQUxfVElNRVwiLFdvPVwiTkVBUl9SRUFMX1RJTUVcIixWbz1cIkJFU1RfRUZGT1JUXCIsWG89XCJcIixHbz1cIlBPU1RcIixRbz1cImRyb3BcIixKbz1cInNlbmRcIiwkbz1cInJlcXVldWVcIixZbz1cInJzcEZhaWxcIixabz1cImFwcGxpY2F0aW9uL3gtanNvbi1zdHJlYW1cIixuYT1cImNhY2hlLWNvbnRyb2xcIixlYT1cImNvbnRlbnQtdHlwZVwiLHRhPVwia2lsbC1kdXJhdGlvblwiLHJhPVwidGltZS1kZWx0YS1taWxsaXNcIixpYT1cImNsaWVudC12ZXJzaW9uXCIsb2E9XCJjbGllbnQtaWRcIixhYT1cInRpbWUtZGVsdGEtdG8tYXBwbHktbWlsbGlzXCIsdWE9XCJ1cGxvYWQtdGltZVwiLGNhPVwiYXBpa2V5XCIsc2E9XCJBdXRoTXNhRGV2aWNlVGlja2V0XCIsbGE9XCJBdXRoWFRva2VuXCI7ZnVuY3Rpb24gZmEobil7dmFyIGU9KG4uZXh0fHx7fSkuaW50d2ViO3JldHVybiBlJiZrcihlLm1zZnBjKT9lLm1zZnBjOm51bGx9ZnVuY3Rpb24gZGEobil7Zm9yKHZhciBlPW51bGwsdD0wO251bGw9PT1lJiZ0PG4ubGVuZ3RoO3QrKyllPWZhKG5bdF0pO3JldHVybiBlfXZhciB2YT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgcj10P1tdLmNvbmNhdCh0KTpbXSxpPXRoaXMsbz1kYShyKTtpLmlLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gZX0saS5Nc2ZwYz1mdW5jdGlvbigpe3JldHVybiBvfHxYb30saS5jb3VudD1mdW5jdGlvbigpe3JldHVybiByLmxlbmd0aH0saS5ldmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gcn0saS5hZGRFdmVudD1mdW5jdGlvbihuKXtyZXR1cm4hIW4mJihyLnB1c2gobiksb3x8KG89ZmEobikpLCEwKX0saS5zcGxpdD1mdW5jdGlvbih0LGkpe3ZhciBhO2lmKHQ8ci5sZW5ndGgpe3ZhciB1PXIubGVuZ3RoLXQ7RW4oaSl8fCh1PWk8dT9pOnUpLGE9ci5zcGxpY2UodCx1KSxvPWRhKHIpfXJldHVybiBuZXcgbihlLGEpfX1yZXR1cm4gbi5jcmVhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IG4oZSx0KX0sbn0oKSxwYT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oKXt2YXIgZT0hMCx0PSEwLHI9ITAsaT1cInVzZS1jb2xsZWN0b3ItZGVsdGFcIixvPSExO1Eobix0aGlzLChmdW5jdGlvbihuKXtuLmFsbG93UmVxdWVzdFNlbmRpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gZX0sbi5maXJzdFJlcXVlc3RTZW50PWZ1bmN0aW9uKCl7ciYmKHI9ITEsb3x8KGU9ITEpKX0sbi5zaG91bGRBZGRDbG9ja1NrZXdIZWFkZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHR9LG4uZ2V0Q2xvY2tTa2V3SGVhZGVyVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gaX0sbi5zZXRDbG9ja1NrZXc9ZnVuY3Rpb24obil7b3x8KG4/KGk9bix0PSEwLG89ITApOnQ9ITEsZT0hMCl9fSkpfXJldHVybiBuLl9faWVEeW49MSxufSgpLGdhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBlPXt9O1Eobix0aGlzLChmdW5jdGlvbihuKXtuLnNldEtpbGxTd2l0Y2hUZW5hbnRzPWZ1bmN0aW9uKG4sdCl7aWYobiYmdCl0cnl7dmFyIHI9ZnVuY3Rpb24obil7dmFyIGU9W107cmV0dXJuIG4mJlduKG4sKGZ1bmN0aW9uKG4pe2UucHVzaChRbihuKSl9KSksZX0obi5zcGxpdChcIixcIikpO2lmKFwidGhpcy1yZXF1ZXN0LW9ubHlcIj09PXQpcmV0dXJuIHI7Zm9yKHZhciBpPTFlMypwYXJzZUludCh0LDEwKSxvPTA7bzxyLmxlbmd0aDsrK28pZVtyW29dXT1yZSgpK2l9Y2F0Y2goYSl7cmV0dXJuW119cmV0dXJuW119LG4uaXNUZW5hbnRLaWxsZWQ9ZnVuY3Rpb24obil7dmFyIHQ9ZSxyPVFuKG4pO3JldHVybiB2b2lkIDAhPT10W3JdJiZ0W3JdPnJlKCl8fChkZWxldGUgdFtyXSwhMSl9fSkpfXJldHVybiBuLl9faWVEeW49MSxufSgpLHlhPWdhO2Z1bmN0aW9uIGhhKG4pe3ZhciBlLHQ9TWF0aC5mbG9vcigxMjAwKk1hdGgucmFuZG9tKCkpKzI0MDA7cmV0dXJuIGU9TWF0aC5wb3coMixuKSp0LE1hdGgubWluKGUsNmU1KX1mdW5jdGlvbiBtYShuKXtyZXR1cm4gbWE9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKG4pe3JldHVybiB0eXBlb2Ygbn06ZnVuY3Rpb24obil7cmV0dXJuIG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmbi5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmbiE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2Ygbn0sbWEobil9dmFyIGJhLFNhPTJlNixDYT1NYXRoLm1pbihTYSw2NWUzKSx4YT0vXFwuLyxJYT1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oZSx0LHIsaSl7dmFyIG89XCJkYXRhXCIsYT1cImJhc2VEYXRhXCIsdT0hIWksYz10LHM9e307UShuLHRoaXMsKGZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHQobixlLGksbyxhLGwsZil7TW4obiwoZnVuY3Rpb24obixkKXt2YXIgdj1udWxsO2lmKGR8fGtyKGQpKXt2YXIgcD1pLGc9bix5PWEsaD1lO2lmKHUmJiFvJiZ4YS50ZXN0KG4pKXt2YXIgbT1uLnNwbGl0KFwiLlwiKSxiPW0ubGVuZ3RoO2lmKGI+MSl7eSYmKHk9eS5zbGljZSgpKTtmb3IodmFyIFM9MDtTPGItMTtTKyspe3ZhciBDPW1bU107aD1oW0NdPWhbQ118fHt9LHArPVwiLlwiK0MseSYmeS5wdXNoKEMpfWc9bVtiLTFdfX12YXIgeD1vJiZmdW5jdGlvbihuLGUpe3ZhciB0PXNbbl07cmV0dXJuIHZvaWQgMD09PXQmJihuLmxlbmd0aD49NyYmKHQ9Um4obixcImV4dC5tZXRhZGF0YVwiKXx8Um4obixcImV4dC53ZWJcIikpLHNbbl09dCksdH0ocCk7aWYodj0heCYmYyYmYy5oYW5kbGVGaWVsZChwLGcpP2MudmFsdWUocCxnLGQscik6TXIoZyxkLHIpKXt2YXIgST12LnZhbHVlO2lmKGhbZ109SSxsJiZsKHksZyx2KSxmJiZcIm9iamVjdFwiPT09bWEoSSkmJiFCbihJKSl7dmFyIHc9eTt3JiYodz13LnNsaWNlKCkpLnB1c2goZyksdChkLEkscCtcIi5cIitnLG8sdyxsLGYpfX19fSkpfW4uY3JlYXRlUGF5bG9hZD1mdW5jdGlvbihuLGUsdCxyLGksbyl7cmV0dXJue2FwaUtleXM6W10scGF5bG9hZEJsb2I6WG8sb3ZlcmZsb3c6bnVsbCxzaXplRXhjZWVkOltdLGZhaWxlZEV2dHM6W10sYmF0Y2hlczpbXSxudW1FdmVudHM6MCxyZXRyeUNudDpuLGlzVGVhcmRvd246ZSxpc1N5bmM6dCxpc0JlYWNvbjpyLHNlbmRUeXBlOm8sc2VuZFJlYXNvbjppfX0sbi5hcHBlbmRQYXlsb2FkPWZ1bmN0aW9uKHQscixpKXt2YXIgbz10JiZyJiYhdC5vdmVyZmxvdztyZXR1cm4gbyYmR3IoZSwoZnVuY3Rpb24oKXtyZXR1cm5cIlNlcmlhbGl6ZXI6YXBwZW5kUGF5bG9hZFwifSksKGZ1bmN0aW9uKCl7Zm9yKHZhciBlPXIuZXZlbnRzKCksbz10LnBheWxvYWRCbG9iLGE9dC5udW1FdmVudHMsdT0hMSxjPVtdLHM9W10sbD10LmlzQmVhY29uLGY9bD82NWUzOjM5ODQ1ODgsZD1sP0NhOlNhLHY9MCxwPTA7djxlLmxlbmd0aDspe3ZhciBnPWVbdl07aWYoZyl7aWYoYT49aSl7dC5vdmVyZmxvdz1yLnNwbGl0KHYpO2JyZWFrfXZhciB5PW4uZ2V0RXZlbnRCbG9iKGcpO2lmKHkmJnkubGVuZ3RoPD1kKXt2YXIgaD15Lmxlbmd0aDtpZihvLmxlbmd0aCtoPmYpe3Qub3ZlcmZsb3c9ci5zcGxpdCh2KTticmVha31vJiYobys9XCJcXG5cIiksbys9eSwrK3A+MjAmJihvLnN1YnN0cigwLDEpLHA9MCksdT0hMCxhKyt9ZWxzZSB5P2MucHVzaChnKTpzLnB1c2goZyksZS5zcGxpY2UodiwxKSx2LS19disrfWlmKGMmJmMubGVuZ3RoPjAmJnQuc2l6ZUV4Y2VlZC5wdXNoKHZhLmNyZWF0ZShyLmlLZXkoKSxjKSkscyYmcy5sZW5ndGg+MCYmdC5mYWlsZWRFdnRzLnB1c2godmEuY3JlYXRlKHIuaUtleSgpLHMpKSx1KXt0LmJhdGNoZXMucHVzaChyKSx0LnBheWxvYWRCbG9iPW8sdC5udW1FdmVudHM9YTt2YXIgbT1yLmlLZXkoKTstMT09PVZuKHQuYXBpS2V5cyxtKSYmdC5hcGlLZXlzLnB1c2gobSl9fSksKGZ1bmN0aW9uKCl7cmV0dXJue3BheWxvYWQ6dCx0aGVCYXRjaDp7aUtleTpyLmlLZXkoKSxldnRzOnIuZXZlbnRzKCl9LG1heDppfX0pKSxvfSxuLmdldEV2ZW50QmxvYj1mdW5jdGlvbihuKXt0cnl7cmV0dXJuIEdyKGUsKGZ1bmN0aW9uKCl7cmV0dXJuXCJTZXJpYWxpemVyLmdldEV2ZW50QmxvYlwifSksKGZ1bmN0aW9uKCl7dmFyIGU9e307ZS5uYW1lPW4ubmFtZSxlLnRpbWU9bi50aW1lLGUudmVyPW4udmVyLGUuaUtleT1cIm86XCIrTnIobi5pS2V5KTt2YXIgcj17fSxpPW4uZXh0O2kmJihlLmV4dD1yLE1uKGksKGZ1bmN0aW9uKG4sZSl7dChlLHJbbl09e30sXCJleHQuXCIrbiwhMCxudWxsLG51bGwsITApfSkpKTt2YXIgdT1lLmRhdGE9e307dS5iYXNlVHlwZT1uLmJhc2VUeXBlO3ZhciBjPXUuYmFzZURhdGE9e307cmV0dXJuIHQobi5iYXNlRGF0YSxjLGEsITEsW2FdLChmdW5jdGlvbihuLGUsdCl7d2EocixuLGUsdCl9KSx0cnVlKSx0KG4uZGF0YSx1LG8sITEsW10sKGZ1bmN0aW9uKG4sZSx0KXt3YShyLG4sZSx0KX0pLHRydWUpLEpTT04uc3RyaW5naWZ5KGUpfSksKGZ1bmN0aW9uKCl7cmV0dXJue2l0ZW06bn19KSl9Y2F0Y2gocil7cmV0dXJuIG51bGx9fX0pKX1yZXR1cm4gbi5fX2llRHluPTEsbn0oKTtmdW5jdGlvbiB3YShuLGUsdCxyKXtpZihyJiZuKXt2YXIgaT1PcihyLnZhbHVlLHIua2luZCxyLnByb3BlcnR5VHlwZSk7aWYoaT4tMSl7dmFyIG89bi5tZXRhZGF0YTtvfHwobz1uLm1ldGFkYXRhPXtmOnt9fSk7dmFyIGE9by5mO2lmKGF8fChhPW8uZj17fSksZSlmb3IodmFyIHU9MDt1PGUubGVuZ3RoO3UrKyl7dmFyIGM9ZVt1XTthW2NdfHwoYVtjXT17Zjp7fX0pO3ZhciBzPWFbY10uZjtzfHwocz1hW2NdLmY9e30pLGE9c31hPWFbdF09e30sQm4oci52YWx1ZSk/YS5hPXt0Oml9OmEudD1pfX19ZnVuY3Rpb24gVGEobil7cmV0dXJuIFRhPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihuKXtyZXR1cm4gdHlwZW9mIG59OmZ1bmN0aW9uKG4pe3JldHVybiBuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJm4uY29uc3RydWN0b3I9PT1TeW1ib2wmJm4hPT1TeW1ib2wucHJvdG90eXBlP1wic3ltYm9sXCI6dHlwZW9mIG59LFRhKG4pfXZhciBfYT1cIiZOb1Jlc3BvbnNlQm9keT10cnVlXCIsRWE9KChiYT17fSlbMV09JG8sYmFbMTAwXT0kbyxiYVsyMDBdPVwic2VudFwiLGJhWzgwMDRdPVFvLGJhWzgwMDNdPVFvLGJhKSxQYT17fSxrYT17fTtmdW5jdGlvbiBOYShuLGUsdCl7UGFbbl09ZSwhMSE9PXQmJihrYVtlXT1uKX1mdW5jdGlvbiBEYShuKXt0cnl7cmV0dXJuIG4ucmVzcG9uc2VUZXh0fWNhdGNoKGUpe31yZXR1cm4gWG99ZnVuY3Rpb24gQWEobixlKXt2YXIgdD0hMTtpZihuJiZlKXt2YXIgcj1ZbihuKTtpZihyJiZyLmxlbmd0aD4wKWZvcih2YXIgaT1lLnRvTG93ZXJDYXNlKCksbz0wO288ci5sZW5ndGg7bysrKXt2YXIgYT1yW29dO2lmKGEmJmtuKGUsYSkmJmEudG9Mb3dlckNhc2UoKT09PWkpe3Q9ITA7YnJlYWt9fX1yZXR1cm4gdH1mdW5jdGlvbiBNYShuLGUsdCxyKXtlJiZ0JiZ0Lmxlbmd0aD4wJiYociYmUGFbZV0/KG4uaGRyc1tQYVtlXV09dCxuLnVzZUhkcnM9ITApOm4udXJsKz1cIiZcIitlK1wiPVwiK3QpfWZ1bmN0aW9uIE9hKG4sZSl7cmV0dXJuIGUmJih6bihlKT9uPVtlXS5jb25jYXQobik6Qm4oZSkmJihuPWUuY29uY2F0KG4pKSksbn1OYShzYSxzYSwhMSksTmEoaWEsaWEpLE5hKG9hLFwiQ2xpZW50LUlkXCIpLE5hKGNhLGNhKSxOYShhYSxhYSksTmEodWEsdWEpLE5hKGxhLGxhKTt2YXIgUmE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCxyLGksYSl7dGhpcy5fcmVzcG9uc2VIYW5kbGVycz1bXTt2YXIgdSxjLHMsbCxmLGQsdixwLGcseSxoPVwiP2NvcnM9dHJ1ZSZcIitlYS50b0xvd2VyQ2FzZSgpK1wiPVwiK1pvLG09bmV3IHlhLGI9ITEsUz1uZXcgcGEsQz0hMSx4PTAsST0hMCx3PVtdLFQ9e30sXz1bXSxFPW51bGwsUD0hMSxrPSExLE49ITE7UShuLHRoaXMsKGZ1bmN0aW9uKG4pe3ZhciBEPSEwO2Z1bmN0aW9uIEEobixlKXtmb3IodmFyIHQ9MCxyPW51bGwsaT0wO251bGw9PXImJmk8bi5sZW5ndGg7KTE9PT0odD1uW2ldKT9IZSgpP3I9TTpqZSgpJiYocj1SKToyPT09dCYmcWUoZSkmJighZXx8ZSYmIXApP3I9TzpDJiYzPT09dCYmemUoKSYmKHI9RiksaSsrO3JldHVybiByP3tfdHJhbnNwb3J0OnQsX2lzU3luYzplLHNlbmRQT1NUOnJ9Om51bGx9ZnVuY3Rpb24gTShuLGUsdCl7dmFyIHI9bmV3IFhEb21haW5SZXF1ZXN0O3Iub3BlbihHbyxuLnVybFN0cmluZyksbi50aW1lb3V0JiYoci50aW1lb3V0PW4udGltZW91dCksci5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgbj1EYShyKTtMKGUsMjAwLHt9LG4pLFEobil9LHIub25lcnJvcj1mdW5jdGlvbigpe0woZSw0MDAse30pfSxyLm9udGltZW91dD1mdW5jdGlvbigpe0woZSw1MDAse30pfSxyLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24oKXt9LHQ/ci5zZW5kKG4uZGF0YSk6YS5zZXQoKGZ1bmN0aW9uKCl7ci5zZW5kKG4uZGF0YSl9KSwwKX1mdW5jdGlvbiBPKG4sZSx0KXt2YXIgcixpPW4udXJsU3RyaW5nLG89ITEsdT0hMSxjPSgocj17Ym9keTpuLmRhdGEsbWV0aG9kOkdvfSkuTWljcm9zb2Z0X0FwcGxpY2F0aW9uSW5zaWdodHNfQnlwYXNzQWpheEluc3RydW1lbnRhdGlvbj0hMCxyKTt0JiYoYy5rZWVwYWxpdmU9ITAsMj09PW4uX3NlbmRSZWFzb24mJihvPSEwLHkmJihpKz1fYSkpKSxEJiYoYy5jcmVkZW50aWFscz1cImluY2x1ZGVcIiksbi5oZWFkZXJzJiZZbihuLmhlYWRlcnMpLmxlbmd0aD4wJiYoYy5oZWFkZXJzPW4uaGVhZGVycyksZmV0Y2goaSxjKS50aGVuKChmdW5jdGlvbihuKXt2YXIgdD17fSxyPVhvLGk9bi5oZWFkZXJzO2kmJmkuZm9yRWFjaCgoZnVuY3Rpb24obixlKXt0W2VdPW59KSksbi5ib2R5JiZuLnRleHQoKS50aGVuKChmdW5jdGlvbihuKXtyPW59KSksdXx8KHU9ITAsTChlLG4uc3RhdHVzLHQsciksUShyKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKG4pe3V8fCh1PSEwLEwoZSwwLHt9KSl9KSksbyYmIXUmJih1PSEwLEwoZSwyMDAse30pKSwhdSYmbi50aW1lb3V0PjAmJmEuc2V0KChmdW5jdGlvbigpe3V8fCh1PSEwLEwoZSw1MDAse30pKX0pLG4udGltZW91dCl9ZnVuY3Rpb24gUihuLGUsdCl7dmFyIHI9bi51cmxTdHJpbmc7ZnVuY3Rpb24gaShuLGUsdCl7aWYoIW5bdF0mJmUmJmUuZ2V0UmVzcG9uc2VIZWFkZXIpe3ZhciByPWUuZ2V0UmVzcG9uc2VIZWFkZXIodCk7ciYmKG5bdF09UW4ocikpfXJldHVybiBufWZ1bmN0aW9uIG8obil7dmFyIGU9e307cmV0dXJuIG4uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzP2U9ZnVuY3Rpb24obil7dmFyIGU9e307aWYoS24obikpe1duKFFuKG4pLnNwbGl0KC9bXFxyXFxuXSsvKSwoZnVuY3Rpb24obil7aWYobil7dmFyIHQ9bi5pbmRleE9mKFwiOiBcIik7aWYoLTEhPT10KXt2YXIgcj1RbihuLnN1YnN0cmluZygwLHQpKS50b0xvd2VyQ2FzZSgpLGk9UW4obi5zdWJzdHJpbmcodCsxKSk7ZVtyXT1pfWVsc2UgZVtRbihuKV09MX19KSl9cmV0dXJuIGV9KG4uZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpOihlPWkoZSxuLHJhKSxlPWkoZSxuLHRhKSxlPWkoZSxuLFwia2lsbC1kdXJhdGlvbi1zZWNvbmRzXCIpKSxlfWZ1bmN0aW9uIGEobix0KXtMKGUsbi5zdGF0dXMsbyhuKSx0KX10JiZuLmRpc2FibGVYaHJTeW5jJiYodD0hMSk7dmFyIHU9ZnVuY3Rpb24obixlLHQscixpLG8pe2Z1bmN0aW9uIGEobixlLHQpe3RyeXtuW2VdPXR9Y2F0Y2gocil7fX12b2lkIDA9PT1yJiYocj0hMSksdm9pZCAwPT09aSYmKGk9ITEpO3ZhciB1PW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gciYmYSh1LFwiTWljcm9zb2Z0X0FwcGxpY2F0aW9uSW5zaWdodHNfQnlwYXNzQWpheEluc3RydW1lbnRhdGlvblwiLHIpLHQmJmEodSxfcix0KSx1Lm9wZW4obixlLCFpKSx0JiZhKHUsX3IsdCksIWkmJm8mJmEodSxcInRpbWVvdXRcIixvKSx1fShHbyxyLEQsITAsdCxuLnRpbWVvdXQpO01uKG4uaGVhZGVycywoZnVuY3Rpb24obixlKXt1LnNldFJlcXVlc3RIZWFkZXIobixlKX0pKSx1Lm9ubG9hZD1mdW5jdGlvbigpe3ZhciBuPURhKHUpO2EodSxuKSxRKG4pfSx1Lm9uZXJyb3I9ZnVuY3Rpb24oKXthKHUpfSx1Lm9udGltZW91dD1mdW5jdGlvbigpe2EodSl9LHUuc2VuZChuLmRhdGEpfWZ1bmN0aW9uIEwobixlLHQscil7dHJ5e24oZSx0LHIpfWNhdGNoKGkpe3J0KGMsMiw1MTgsS2UoaSkpfX1mdW5jdGlvbiBGKG4sZSx0KXt2YXIgcj0yMDAsaT1uLl90aGVQYXlsb2FkLG89bi51cmxTdHJpbmcrKHk/X2E6WG8pO3RyeXt2YXIgYT1NZSgpO2lmKCFhLnNlbmRCZWFjb24obyxuLmRhdGEpKWlmKGkpe3ZhciB1PVtdO1duKGkuYmF0Y2hlcywoZnVuY3Rpb24obil7aWYodSYmbiYmbi5jb3VudCgpPjApe2Zvcih2YXIgZT1uLmV2ZW50cygpLHQ9MDt0PGUubGVuZ3RoO3QrKylpZighYS5zZW5kQmVhY29uKG8sRS5nZXRFdmVudEJsb2IoZVt0XSkpKXt1LnB1c2gobi5zcGxpdCh0KSk7YnJlYWt9fWVsc2UgdS5wdXNoKG4uc3BsaXQoMCkpfSkpLEoodSw4MDAzLGkuc2VuZFR5cGUsITApfWVsc2Ugcj0wfWNhdGNoKHMpe2l0KGMsXCJGYWlsZWQgdG8gc2VuZCB0ZWxlbWV0cnkgdXNpbmcgc2VuZEJlYWNvbiBBUEkuIEV4OlwiK0tlKHMpKSxyPTB9ZmluYWxseXtMKGUscix7fSxYbyl9fWZ1bmN0aW9uIEIobil7cmV0dXJuIDI9PT1ufHwzPT09bn1mdW5jdGlvbiBVKG4pe3JldHVybiBrJiZCKG4pJiYobj0yKSxufWZ1bmN0aW9uIEsoKXtyZXR1cm4hYiYmeDx0fWZ1bmN0aW9uIHooKXt2YXIgbj1fO3JldHVybiBfPVtdLG59ZnVuY3Rpb24gcShuLGUsdCl7dmFyIHI9ITE7cmV0dXJuIG4mJm4ubGVuZ3RoPjAmJiFiJiZzW2VdJiZFJiYocj0wIT09ZXx8SygpJiYodD4wfHxTLmFsbG93UmVxdWVzdFNlbmRpbmcoKSkpLHJ9ZnVuY3Rpb24gSChuKXt2YXIgZT17fTtyZXR1cm4gbiYmV24obiwoZnVuY3Rpb24obix0KXtlW3RdPXtpS2V5Om4uaUtleSgpLGV2dHM6bi5ldmVudHMoKX19KSksZX1mdW5jdGlvbiBqKG4sdCxyLGksbyl7aWYobiYmMCE9PW4ubGVuZ3RoKWlmKGIpSihuLDEsaSk7ZWxzZXtpPVUoaSk7dHJ5e3ZhciBhPW4sdT0wIT09aTtHcihsLChmdW5jdGlvbigpe3JldHVyblwiSHR0cE1hbmFnZXI6X3NlbmRCYXRjaGVzXCJ9KSwoZnVuY3Rpb24oYSl7YSYmKG49bi5zbGljZSgwKSk7Zm9yKHZhciBjPVtdLGw9bnVsbCxmPUJyKCksZD1zW2ldfHwodT9zWzFdOnNbMF0pLHY9ZCYmZC5fdHJhbnNwb3J0LHA9ZyYmKGt8fEIoaSl8fDM9PT12fHxkLl9pc1N5bmMmJjI9PT12KTtxKG4saSx0KTspe3ZhciB5PW4uc2hpZnQoKTt5JiZ5LmNvdW50KCk+MCYmKG0uaXNUZW5hbnRLaWxsZWQoeS5pS2V5KCkpP2MucHVzaCh5KToobD1sfHxFLmNyZWF0ZVBheWxvYWQodCxyLHUscCxvLGkpLEUuYXBwZW5kUGF5bG9hZChsLHksZSk/bnVsbCE9PWwub3ZlcmZsb3cmJihuPVtsLm92ZXJmbG93XS5jb25jYXQobiksbC5vdmVyZmxvdz1udWxsLFgobCxmLEJyKCksbyksZj1CcigpLGw9bnVsbCk6KFgobCxmLEJyKCksbyksZj1CcigpLG49W3ldLmNvbmNhdChuKSxsPW51bGwpKSl9bCYmWChsLGYsQnIoKSxvKSxuLmxlbmd0aD4wJiYoXz1uLmNvbmNhdChfKSksSihjLDgwMDQsaSl9KSwoZnVuY3Rpb24oKXtyZXR1cm57YmF0Y2hlczpIKGEpLHJldHJ5Q291bnQ6dCxpc1RlYXJkb3duOnIsaXNTeW5jaHJvbm91czp1LHNlbmRSZWFzb246byx1c2VTZW5kQmVhY29uOkIoaSksc2VuZFR5cGU6aX19KSwhdSl9Y2F0Y2goZil7cnQoYywyLDQ4LFwiVW5leHBlY3RlZCBFeGNlcHRpb24gc2VuZGluZyBiYXRjaDogXCIrS2UoZikpfX19ZnVuY3Rpb24gVyhuLGUpe3ZhciB0PXt1cmw6aCxoZHJzOnt9LHVzZUhkcnM6ITF9O2U/KHQuaGRycz1Gcih0LmhkcnMsVCksdC51c2VIZHJzPVluKHQuaGRycykubGVuZ3RoPjApOk1uKFQsKGZ1bmN0aW9uKG4sZSl7a2Fbbl0/TWEodCxrYVtuXSxlLCExKToodC5oZHJzW25dPWUsdC51c2VIZHJzPSEwKX0pKSxNYSh0LG9hLFwiTk9fQVVUSFwiLGUpLE1hKHQsaWEsVHIsZSk7dmFyIHI9WG87V24obi5hcGlLZXlzLChmdW5jdGlvbihuKXtyLmxlbmd0aD4wJiYocis9XCIsXCIpLHIrPW59KSksTWEodCxjYSxyLGUpLE1hKHQsdWEscmUoKS50b1N0cmluZygpLGUpO3ZhciBpPWZ1bmN0aW9uKG4pe2Zvcih2YXIgZT0wO2U8bi5iYXRjaGVzLmxlbmd0aDtlKyspe3ZhciB0PW4uYmF0Y2hlc1tlXS5Nc2ZwYygpO2lmKHQpcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KX1yZXR1cm4gWG99KG4pO2lmKGtyKGkpJiYodC51cmwrPVwiJmV4dC5pbnR3ZWIubXNmcGM9XCIraSksUy5zaG91bGRBZGRDbG9ja1NrZXdIZWFkZXJzKCkmJk1hKHQsYWEsUy5nZXRDbG9ja1NrZXdIZWFkZXJWYWx1ZSgpLGUpLGwuZ2V0V1BhcmFtKXt2YXIgbz1sLmdldFdQYXJhbSgpO28+PTAmJih0LnVybCs9XCImdz1cIitvKX1mb3IodmFyIGE9MDthPHcubGVuZ3RoO2ErKyl0LnVybCs9XCImXCIrd1thXS5uYW1lK1wiPVwiK3dbYV0udmFsdWU7cmV0dXJuIHR9ZnVuY3Rpb24gVihuLGUsdCl7bltlXT1uW2VdfHx7fSxuW2VdW3UuaWRlbnRpZmllcl09dH1mdW5jdGlvbiBYKGUsdCxpLGEpe2lmKGUmJmUucGF5bG9hZEJsb2ImJmUucGF5bG9hZEJsb2IubGVuZ3RoPjApe3ZhciBmPSEhbi5zZW5kSG9vayxnPXNbZS5zZW5kVHlwZV07IUIoZS5zZW5kVHlwZSkmJmUuaXNCZWFjb24mJjI9PT1lLnNlbmRSZWFzb24mJihnPXNbMl18fHNbM118fGcpO3ZhciB5PU47KGUuaXNCZWFjb258fDM9PT1nLl90cmFuc3BvcnQpJiYoeT0hMSk7dmFyIGg9VyhlLHkpO3k9eXx8aC51c2VIZHJzO3ZhciBiPUJyKCk7R3IobCwoZnVuY3Rpb24oKXtyZXR1cm5cIkh0dHBNYW5hZ2VyOl9kb1BheWxvYWRTZW5kXCJ9KSwoZnVuY3Rpb24oKXtmb3IodmFyIHM9MDtzPGUuYmF0Y2hlcy5sZW5ndGg7cysrKWZvcih2YXIgQz1lLmJhdGNoZXNbc10uZXZlbnRzKCksdz0wO3c8Qy5sZW5ndGg7dysrKXt2YXIgVD1DW3ddO2lmKFApe3ZhciBfPVQudGltaW5ncz1ULnRpbWluZ3N8fHt9O1YoXyxcInNlbmRFdmVudFN0YXJ0XCIsYiksVihfLFwic2VyaWFsaXphdGlvblN0YXJ0XCIsdCksVihfLFwic2VyaWFsaXphdGlvbkNvbXBsZXRlZFwiLGkpfVQuc2VuZEF0dGVtcHQ+MD9ULnNlbmRBdHRlbXB0Kys6VC5zZW5kQXR0ZW1wdD0xfUooZS5iYXRjaGVzLDFlMysoYXx8MCksZS5zZW5kVHlwZSwhMCk7dmFyIEU9e2RhdGE6ZS5wYXlsb2FkQmxvYix1cmxTdHJpbmc6aC51cmwsaGVhZGVyczpoLmhkcnMsX3RoZVBheWxvYWQ6ZSxfc2VuZFJlYXNvbjphLHRpbWVvdXQ6ZCxkaXNhYmxlWGhyU3luYzp2LGRpc2FibGVGZXRjaEtlZXBBbGl2ZTpwfTt5JiYoQWEoRS5oZWFkZXJzLG5hKXx8KEUuaGVhZGVyc1tcImNhY2hlLWNvbnRyb2xcIl09XCJuby1jYWNoZSwgbm8tc3RvcmVcIiksQWEoRS5oZWFkZXJzLGVhKXx8KEUuaGVhZGVyc1tcImNvbnRlbnQtdHlwZVwiXT1abykpO3ZhciBOPW51bGw7ZyYmKE49ZnVuY3Rpb24odCl7Uy5maXJzdFJlcXVlc3RTZW50KCk7dmFyIGk9ZnVuY3Rpb24odCxpKXshZnVuY3Rpb24oZSx0LGksYSl7dmFyIGM9OWUzLHM9bnVsbCxsPSExLGY9ITE7dHJ5e3ZhciBkPSEwO2lmKFRhKGUpIT09byl7aWYodCl7Uy5zZXRDbG9ja1NrZXcodFtcInRpbWUtZGVsdGEtbWlsbGlzXCJdKTt2YXIgdj10W1wia2lsbC1kdXJhdGlvblwiXXx8dFtcImtpbGwtZHVyYXRpb24tc2Vjb25kc1wiXTtXbihtLnNldEtpbGxTd2l0Y2hUZW5hbnRzKHRbXCJraWxsLXRva2Vuc1wiXSx2KSwoZnVuY3Rpb24obil7V24oaS5iYXRjaGVzLChmdW5jdGlvbihlKXtpZihlLmlLZXkoKT09PW4pe3M9c3x8W107dmFyIHQ9ZS5zcGxpdCgwKTtpLm51bUV2ZW50cy09dC5jb3VudCgpLHMucHVzaCh0KX19KSl9KSl9aWYoMjAwPT1lfHwyMDQ9PWUpcmV0dXJuIHZvaWQoYz0yMDApOygoZz1lKT49MzAwJiZnPDUwMCYmNDA4IT1nJiY0MjkhPWd8fDUwMT09Z3x8NTA1PT1nfHxpLm51bUV2ZW50czw9MCkmJihkPSExKSxjPTllMytlJTFlM31pZihkKXtjPTEwMDt2YXIgcD1pLnJldHJ5Q250OzA9PT1pLnNlbmRUeXBlJiYocDxyPyhsPSEwLEcoKGZ1bmN0aW9uKCl7MD09PWkuc2VuZFR5cGUmJngtLSxqKGkuYmF0Y2hlcyxwKzEsaS5pc1RlYXJkb3duLGs/MjppLnNlbmRUeXBlLDUpfSksayxoYShwKSkpOihmPSEwLGsmJihjPTgwMDEpKSl9fWZpbmFsbHl7bHx8KFMuc2V0Q2xvY2tTa2V3KCksZnVuY3Rpb24oZSx0LHIsaSl7dHJ5e2kmJnUuX2JhY2tPZmZUcmFuc21pc3Npb24oKSwyMDA9PT10JiYoaXx8ZS5pc1N5bmN8fHUuX2NsZWFyQmFja09mZigpLGZ1bmN0aW9uKG4pe2lmKFApe3ZhciBlPUJyKCk7V24obiwoZnVuY3Rpb24obil7biYmbi5jb3VudCgpPjAmJmZ1bmN0aW9uKG4sZSl7UCYmV24obiwoZnVuY3Rpb24obil7VihuLnRpbWluZ3M9bi50aW1pbmdzfHx7fSxcInNlbmRFdmVudENvbXBsZXRlZFwiLGUpfSkpfShuLmV2ZW50cygpLGUpfSkpfX0oZS5iYXRjaGVzKSksSihlLmJhdGNoZXMsdCxlLnNlbmRUeXBlLCEwKX1maW5hbGx5ezA9PT1lLnNlbmRUeXBlJiYoeC0tLDUhPT1yJiZuLnNlbmRRdWV1ZWRSZXF1ZXN0cyhlLnNlbmRUeXBlLHIpKX19KGksYyxhLGYpKSxKKHMsODAwNCxpLnNlbmRUeXBlKX12YXIgZ30odCxpLGUsYSl9LHM9ZS5pc1RlYXJkb3dufHxlLmlzU3luYzt0cnl7Zy5zZW5kUE9TVCh0LGkscyksbi5zZW5kTGlzdGVuZXImJm4uc2VuZExpc3RlbmVyKEUsdCxzLGUuaXNCZWFjb24pfWNhdGNoKGwpe2l0KGMsXCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiBzZW5kaW5nIHBheWxvYWQuIEV4OlwiK0tlKGwpKSxMKGksMCx7fSl9fSksR3IobCwoZnVuY3Rpb24oKXtyZXR1cm5cIkh0dHBNYW5hZ2VyOl9kb1BheWxvYWRTZW5kLnNlbmRlclwifSksKGZ1bmN0aW9uKCl7aWYoTilpZigwPT09ZS5zZW5kVHlwZSYmeCsrLGYmJiFlLmlzQmVhY29uJiYzIT09Zy5fdHJhbnNwb3J0KXt2YXIgdD17ZGF0YTpFLmRhdGEsdXJsU3RyaW5nOkUudXJsU3RyaW5nLGhlYWRlcnM6RnIoe30sRS5oZWFkZXJzKSx0aW1lb3V0OkUudGltZW91dCxkaXNhYmxlWGhyU3luYzpFLmRpc2FibGVYaHJTeW5jLGRpc2FibGVGZXRjaEtlZXBBbGl2ZTpFLmRpc2FibGVGZXRjaEtlZXBBbGl2ZX0scj0hMTtHcihsLChmdW5jdGlvbigpe3JldHVyblwiSHR0cE1hbmFnZXI6X2RvUGF5bG9hZFNlbmQuc2VuZEhvb2tcIn0pLChmdW5jdGlvbigpe3RyeXtuLnNlbmRIb29rKHQsKGZ1bmN0aW9uKG4pe3I9ITAsSXx8bi5fdGhlUGF5bG9hZHx8KG4uX3RoZVBheWxvYWQ9bi5fdGhlUGF5bG9hZHx8RS5fdGhlUGF5bG9hZCxuLl9zZW5kUmVhc29uPW4uX3NlbmRSZWFzb258fEUuX3NlbmRSZWFzb24pLE4obil9KSxlLmlzU3luY3x8ZS5pc1RlYXJkb3duKX1jYXRjaChpKXtyfHxOKEUpfX0pKX1lbHNlIE4oRSl9KSl9KSwoZnVuY3Rpb24oKXtyZXR1cm57dGhlUGF5bG9hZDplLHNlcmlhbGl6YXRpb25TdGFydDp0LHNlcmlhbGl6YXRpb25Db21wbGV0ZWQ6aSxzZW5kUmVhc29uOmF9fSksZS5pc1N5bmMpfWUuc2l6ZUV4Y2VlZCYmZS5zaXplRXhjZWVkLmxlbmd0aD4wJiZKKGUuc2l6ZUV4Y2VlZCw4MDAzLGUuc2VuZFR5cGUpLGUuZmFpbGVkRXZ0cyYmZS5mYWlsZWRFdnRzLmxlbmd0aD4wJiZKKGUuZmFpbGVkRXZ0cyw4MDAyLGUuc2VuZFR5cGUpfWZ1bmN0aW9uIEcobixlLHQpe2U/bigpOmEuc2V0KG4sdCl9ZnVuY3Rpb24gUShlKXt2YXIgdD1uLl9yZXNwb25zZUhhbmRsZXJzO3RyeXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl0cnl7dFtyXShlKX1jYXRjaChvKXtydChjLDEsNTE5LFwiUmVzcG9uc2UgaGFuZGxlciBmYWlsZWQ6IFwiK28pfWlmKGUpe3ZhciBpPUpTT04ucGFyc2UoZSk7a3IoaS53ZWJSZXN1bHQpJiZrcihpLndlYlJlc3VsdC5tc2ZwYykmJmYuc2V0KFwiTVNGUENcIixpLndlYlJlc3VsdC5tc2ZwYywzMTUzNmUzKX19Y2F0Y2goYSl7fX1mdW5jdGlvbiBKKG4sZSx0LHIpe2lmKG4mJm4ubGVuZ3RoPjAmJmkpe3ZhciBvPWlbZnVuY3Rpb24obil7dmFyIGU9RWFbbl07a3IoZSl8fChlPVwib3RoXCIsbj49OWUzJiZuPD05OTk5P2U9WW86bj49OGUzJiZuPD04OTk5P2U9UW86bj49MWUzJiZuPD0xOTk5JiYoZT1KbykpO3JldHVybiBlfShlKV07aWYobyl7dmFyIGE9MCE9PXQ7R3IobCwoZnVuY3Rpb24oKXtyZXR1cm5cIkh0dHBNYW5hZ2VyOl9zZW5kQmF0Y2hlc05vdGlmaWNhdGlvblwifSksKGZ1bmN0aW9uKCl7RygoZnVuY3Rpb24oKXt0cnl7by5jYWxsKGksbixlLGEsdCl9Y2F0Y2gocil7cnQoYywxLDc0LFwic2VuZCByZXF1ZXN0IG5vdGlmaWNhdGlvbiBmYWlsZWQ6IFwiK3IpfX0pLHJ8fGEsMCl9KSwoZnVuY3Rpb24oKXtyZXR1cm57YmF0Y2hlczpIKG4pLHJlYXNvbjplLGlzU3luYzphLHNlbmRTeW5jOnIsc2VuZFR5cGU6dH19KSwhYSl9fX1uLmluaXRpYWxpemU9ZnVuY3Rpb24obixlLHQscixpKXt2YXIgbztpfHwoaT17fSksaD1uK2gsTj0hIV9uKGkuYXZvaWRPcHRpb25zKXx8IWkuYXZvaWRPcHRpb25zLGw9ZSxmPWUuZ2V0Q29va2llTWdyKCksUD0hbC5jb25maWcuZGlzYWJsZUV2ZW50VGltaW5nczt2YXIgYT0hIWwuY29uZmlnLmVuYWJsZUNvbXBvdW5kS2V5O2M9KHU9dCkuZGlhZ0xvZygpO3ZhciBtPWkudmFsdWVTYW5pdGl6ZXIsYj1pLnN0cmluZ2lmeU9iamVjdHM7X24oaS5lbmFibGVDb21wb3VuZEtleSl8fChhPSEhaS5lbmFibGVDb21wb3VuZEtleSksZD1pLnhoclRpbWVvdXQsdj0hIWkuZGlzYWJsZVhoclN5bmMscD0hIWkuZGlzYWJsZUZldGNoS2VlcEFsaXZlLHk9ITEhPT1pLmFkZE5vUmVzcG9uc2UsQz0hQmUoKSxFPW5ldyBJYShsLG0sYixhKSxFbihpLnVzZVNlbmRCZWFjb24pfHwoQz0hIWkudXNlU2VuZEJlYWNvbik7dmFyIFM9cix4PWkuYWx3YXlzVXNlWGhyT3ZlcnJpZGU/cjpudWxsLHc9aS5hbHdheXNVc2VYaHJPdmVycmlkZT9yOm51bGwsVD1bMywyXTtpZighcil7ST0hMTt2YXIgXz1PZSgpO18mJl8ucHJvdG9jb2wmJlwiZmlsZTpcIj09PV8ucHJvdG9jb2wudG9Mb3dlckNhc2UoKSYmKEQ9ITEpO3ZhciBrPVtdO0JlKCk/KGs9WzIsMV0sVD1bMiwxLDNdKTprPVsxLDIsM10sKHI9QShrPU9hKGssaS50cmFuc3BvcnRzKSwhMSkpfHxpdChjLFwiTm8gYXZhaWxhYmxlIHRyYW5zcG9ydCB0byBzZW5kIGV2ZW50c1wiKSxTPUEoaywhMCl9eHx8KHg9QShUPU9hKFQsaS51bmxvYWRUcmFuc3BvcnRzKSwhMCkpLGc9IUkmJihDJiZ6ZSgpfHwhcCYmcWUoITApKSwobz17fSlbMF09cixvWzFdPVN8fEEoWzEsMiwzXSwhMCksb1syXT14fHxTfHxBKFsxXSwhMCksb1szXT13fHxBKFsyLDNdLCEwKXx8U3x8QShbMV0sITApLHM9b30sbi5fZ2V0RGJnUGxnVGFyZ2V0cz1mdW5jdGlvbigpe3JldHVybltzWzBdLG0sRSxzXX0sbi5hZGRRdWVyeVN0cmluZ1BhcmFtZXRlcj1mdW5jdGlvbihuLGUpe2Zvcih2YXIgdD0wO3Q8dy5sZW5ndGg7dCsrKWlmKHdbdF0ubmFtZT09PW4pcmV0dXJuIHZvaWQod1t0XS52YWx1ZT1lKTt3LnB1c2goe25hbWU6bix2YWx1ZTplfSl9LG4uYWRkSGVhZGVyPWZ1bmN0aW9uKG4sZSl7VFtuXT1lfSxuLmNhblNlbmRSZXF1ZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIEsoKSYmUy5hbGxvd1JlcXVlc3RTZW5kaW5nKCl9LG4uc2VuZFF1ZXVlZFJlcXVlc3RzPWZ1bmN0aW9uKG4sZSl7X24obikmJihuPTApLGsmJihuPVUobiksZT0yKSxxKF8sbiwwKSYmaih6KCksMCwhMSxuLGV8fDApfSxuLmlzQ29tcGxldGVseUlkbGU9ZnVuY3Rpb24oKXtyZXR1cm4hYiYmMD09PXgmJjA9PT1fLmxlbmd0aH0sbi5zZXRVbmxvYWRpbmc9ZnVuY3Rpb24obil7az1ufSxuLmFkZEJhdGNoPWZ1bmN0aW9uKG4pe2lmKG4mJm4uY291bnQoKT4wKXtpZihtLmlzVGVuYW50S2lsbGVkKG4uaUtleSgpKSlyZXR1cm4hMTtfLnB1c2gobil9cmV0dXJuITB9LG4udGVhcmRvd249ZnVuY3Rpb24oKXtfLmxlbmd0aD4wJiZqKHooKSwwLCEwLDIsMil9LG4ucGF1c2U9ZnVuY3Rpb24oKXtiPSEwfSxuLnJlc3VtZT1mdW5jdGlvbigpe2I9ITEsbi5zZW5kUXVldWVkUmVxdWVzdHMoMCw0KX0sbi5zZW5kU3luY2hyb25vdXNCYXRjaD1mdW5jdGlvbihuLGUsdCl7biYmbi5jb3VudCgpPjAmJihFbihlKSYmKGU9MSksayYmKGU9VShlKSx0PTIpLGooW25dLDAsITEsZSx0fHwwKSl9fSkpfXJldHVybiBuLl9faWVEeW49MSxufSgpO2Z1bmN0aW9uIExhKG4sZSl7Zm9yKHZhciB0PVtdLHI9MjtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0yXT1hcmd1bWVudHNbcl07cmV0dXJuIHNldFRpbWVvdXQobixlLHQpfWZ1bmN0aW9uIEZhKG4pe2NsZWFyVGltZW91dChuKX1mdW5jdGlvbiBCYShuLGUpe3JldHVybntzZXQ6bnx8TGEsY2xlYXI6ZXx8RmF9fXZhciBVYSxLYT1cImV2ZW50c0Rpc2NhcmRlZFwiLHphPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGUoKXt2YXIgdCxyPW4uY2FsbCh0aGlzKXx8dGhpcztyLmlkZW50aWZpZXI9XCJQb3N0Q2hhbm5lbFwiLHIucHJpb3JpdHk9MTAxMSxyLnZlcnNpb249XCIzLjIuMTVcIjt2YXIgaSxvLGEsdSxjLHMsbCxmPSExLGQ9W10sdj1udWxsLHA9ITEsZz0wLHk9NTAwLGg9MCxtPTFlNCxiPXt9LFM9am8sQz1udWxsLHg9bnVsbCxJPTAsdz0wLFQ9e30sXz0tMSxFPSEwLFA9ITEsaz02LE49MjtyZXR1cm4gUShlLHIsKGZ1bmN0aW9uKG4sZSl7ZnVuY3Rpb24gcihuKXtcImJlZm9yZXVubG9hZFwiIT09KG58fGtlKCkuZXZlbnQpLnR5cGUmJihQPSEwLG8uc2V0VW5sb2FkaW5nKFApKSxVKDIsMil9ZnVuY3Rpb24gRChuKXtQPSExLG8uc2V0VW5sb2FkaW5nKFApfWZ1bmN0aW9uIEEobixlKXtpZihuLnNlbmRBdHRlbXB0fHwobi5zZW5kQXR0ZW1wdD0wKSxuLmxhdGVuY3l8fChuLmxhdGVuY3k9MSksbi5leHQmJm4uZXh0LnRyYWNlJiZkZWxldGUgbi5leHQudHJhY2Usbi5leHQmJm4uZXh0LnVzZXImJm4uZXh0LnVzZXIuaWQmJmRlbGV0ZSBuLmV4dC51c2VyLmlkLEUmJihuLmV4dD12ZShuLmV4dCksbi5iYXNlRGF0YSYmKG4uYmFzZURhdGE9dmUobi5iYXNlRGF0YSkpLG4uZGF0YSYmKG4uZGF0YT12ZShuLmRhdGEpKSksbi5zeW5jKWlmKEl8fHApbi5sYXRlbmN5PTMsbi5zeW5jPSExO2Vsc2UgaWYobylyZXR1cm4gRSYmKG49dmUobikpLHZvaWQgby5zZW5kU3luY2hyb25vdXNCYXRjaCh2YS5jcmVhdGUobi5pS2V5LFtuXSksITA9PT1uLnN5bmM/MTpuLnN5bmMsMyk7dmFyIHQ9bi5sYXRlbmN5LHI9aCxpPW07ND09PXQmJihyPWcsaT15KTt2YXIgYT0hMTtpZihyPGkpYT0hcShuLGUpO2Vsc2V7dmFyIHU9MSxjPTIwOzQ9PT10JiYodT00LGM9MSksYT0hMCxmdW5jdGlvbihuLGUsdCxyKXtmb3IoO3Q8PWU7KXt2YXIgaT1LKG4sZSwhMCk7aWYoaSYmaS5jb3VudCgpPjApe3ZhciBvPWkuc3BsaXQoMCxyKSxhPW8uY291bnQoKTtpZihhPjApcmV0dXJuIDQ9PT10P2ctPWE6aC09YSwkKEthLFtvXSxIby5RdWV1ZUZ1bGwpLCEwfXQrK31yZXR1cm4gSCgpLCExfShuLmlLZXksbi5sYXRlbmN5LHUsYykmJihhPSFxKG4sZSkpfWEmJkooS2EsW25dLEhvLlF1ZXVlRnVsbCl9ZnVuY3Rpb24gTShuLGUsdCl7dmFyIHI9aihuLGUsdCk7cmV0dXJuIG8uc2VuZFF1ZXVlZFJlcXVlc3RzKGUsdCkscn1mdW5jdGlvbiBPKCl7cmV0dXJuIGg+MH1mdW5jdGlvbiBSKCl7aWYoXz49MCYmaihfLDAsYykmJm8uc2VuZFF1ZXVlZFJlcXVlc3RzKDAsYyksZz4wJiYheCYmIXApe3ZhciBuPWJbU11bMl07bj49MCYmKHg9RigoZnVuY3Rpb24oKXt4PW51bGwsTSg0LDAsMSksUigpfSksbikpfXZhciBlPWJbU11bMV07IUMmJiF2JiZlPj0wJiYhcCYmKE8oKT9DPUYoKGZ1bmN0aW9uKCl7Qz1udWxsLE0oMD09PXc/MzoxLDAsMSksdysrLHclPTIsUigpfSksZSk6dz0wKX1mdW5jdGlvbiBMKCl7dD1udWxsLGY9ITEsZD1bXSx2PW51bGwscD0hMSxnPTAseT01MDAsaD0wLG09MWU0LGI9e30sUz1qbyxDPW51bGwseD1udWxsLEk9MCx3PTAsaT1udWxsLFQ9e30sYT12b2lkIDAsdT0wLF89LTEsYz1udWxsLEU9ITAsUD0hMSxrPTYsTj0yLHM9bnVsbCxsPUJhKCksbz1uZXcgUmEoNTAwLDIsMSx7cmVxdWV1ZTpHLHNlbmQ6WSxzZW50OlosZHJvcDpubixyc3BGYWlsOmVuLG90aDp0bn0sbCksWCgpLFRbNF09e2JhdGNoZXM6W10saUtleU1hcDp7fX0sVFszXT17YmF0Y2hlczpbXSxpS2V5TWFwOnt9fSxUWzJdPXtiYXRjaGVzOltdLGlLZXlNYXA6e319LFRbMV09e2JhdGNoZXM6W10saUtleU1hcDp7fX0scm4oKX1mdW5jdGlvbiBGKG4sZSl7MD09PWUmJkkmJihlPTEpO3ZhciB0PTFlMztyZXR1cm4gSSYmKHQ9aGEoSS0xKSksbC5zZXQobixlKnQpfWZ1bmN0aW9uIEIoKXtyZXR1cm4gbnVsbCE9PUMmJihsLmNsZWFyKEMpLEM9bnVsbCx3PTAsITApfWZ1bmN0aW9uIFUobixlKXtCKCksdiYmKGwuY2xlYXIodiksdj1udWxsKSxwfHxNKDEsbixlKX1mdW5jdGlvbiBLKG4sZSx0KXt2YXIgcj1UW2VdO3J8fChyPVRbZT0xXSk7dmFyIGk9ci5pS2V5TWFwW25dO3JldHVybiFpJiZ0JiYoaT12YS5jcmVhdGUobiksci5iYXRjaGVzLnB1c2goaSksci5pS2V5TWFwW25dPWkpLGl9ZnVuY3Rpb24geihlLHQpe28uY2FuU2VuZFJlcXVlc3QoKSYmIUkmJihhPjAmJmg+YSYmKHQ9ITApLHQmJm51bGw9PXYmJm4uZmx1c2goZSxudWxsLDIwKSl9ZnVuY3Rpb24gcShuLGUpe0UmJihuPXZlKG4pKTt2YXIgdD1uLmxhdGVuY3kscj1LKG4uaUtleSx0LCEwKTtyZXR1cm4hIXIuYWRkRXZlbnQobikmJig0IT09dD8oaCsrLGUmJjA9PT1uLnNlbmRBdHRlbXB0JiZ6KCFuLnN5bmMsdT4wJiZyLmNvdW50KCk+PXUpKTpnKyssITApfWZ1bmN0aW9uIEgoKXtmb3IodmFyIG49MCxlPTAsdD1mdW5jdGlvbih0KXt2YXIgcj1UW3RdO3ImJnIuYmF0Y2hlcyYmV24oci5iYXRjaGVzLChmdW5jdGlvbihyKXs0PT09dD9uKz1yLmNvdW50KCk6ZSs9ci5jb3VudCgpfSkpfSxyPTE7cjw9NDtyKyspdChyKTtoPWUsZz1ufWZ1bmN0aW9uIGooZSx0LHIpe3ZhciBpPSExLGE9MD09PXQ7cmV0dXJuIWF8fG8uY2FuU2VuZFJlcXVlc3QoKT9HcihuLmNvcmUsKGZ1bmN0aW9uKCl7cmV0dXJuXCJQb3N0Q2hhbm5lbC5fcXVldWVCYXRjaGVzXCJ9KSwoZnVuY3Rpb24oKXtmb3IodmFyIG49W10sdD00O3Q+PWU7KXt2YXIgcj1UW3RdO3ImJnIuYmF0Y2hlcyYmci5iYXRjaGVzLmxlbmd0aD4wJiYoV24oci5iYXRjaGVzLChmdW5jdGlvbihlKXtvLmFkZEJhdGNoKGUpP2k9aXx8ZSYmZS5jb3VudCgpPjA6bj1uLmNvbmNhdChlLmV2ZW50cygpKSw0PT09dD9nLT1lLmNvdW50KCk6aC09ZS5jb3VudCgpfSkpLHIuYmF0Y2hlcz1bXSxyLmlLZXlNYXA9e30pLHQtLX1uLmxlbmd0aD4wJiZKKEthLG4sSG8uS2lsbFN3aXRjaCksaSYmXz49ZSYmKF89LTEsYz0wKX0pLChmdW5jdGlvbigpe3JldHVybntsYXRlbmN5OmUsc2VuZFR5cGU6dCxzZW5kUmVhc29uOnJ9fSksIWEpOihfPV8+PTA/TWF0aC5taW4oXyxlKTplLGM9TWF0aC5tYXgoYyxyKSksaX1mdW5jdGlvbiBXKG4sZSl7TSgxLDAsZSksSCgpLFYoKGZ1bmN0aW9uKCl7biYmbigpLGQubGVuZ3RoPjA/dj1GKChmdW5jdGlvbigpe3Y9bnVsbCxXKGQuc2hpZnQoKSxlKX0pLDApOih2PW51bGwsUigpKX0pKX1mdW5jdGlvbiBWKG4pe28uaXNDb21wbGV0ZWx5SWRsZSgpP24oKTp2PUYoKGZ1bmN0aW9uKCl7dj1udWxsLFYobil9KSwuMjUpfWZ1bmN0aW9uIFgoKXsoYj17fSlbam9dPVsyLDEsMF0sYltXb109WzYsMywwXSxiW1ZvXT1bMTgsOSwwXX1mdW5jdGlvbiBHKGUsdCl7dmFyIHI9W10saT1rO1AmJihpPU4pLFduKGUsKGZ1bmN0aW9uKGUpe2UmJmUuY291bnQoKT4wJiZXbihlLmV2ZW50cygpLChmdW5jdGlvbihlKXtlJiYoZS5zeW5jJiYoZS5sYXRlbmN5PTQsZS5zeW5jPSExKSxlLnNlbmRBdHRlbXB0PGk/KHpyKGUsbi5pZGVudGlmaWVyKSxBKGUsITEpKTpyLnB1c2goZSkpfSkpfSkpLHIubGVuZ3RoPjAmJkooS2EscixIby5Ob25SZXRyeWFibGVTdGF0dXMpLFAmJlUoMiwyKX1mdW5jdGlvbiBRKGUsdCl7dmFyIHI9bi5fbm90aWZpY2F0aW9uTWFuYWdlcnx8e30saT1yW2VdO2lmKGkpdHJ5e2kuYXBwbHkocix0KX1jYXRjaChvKXtydChuLmRpYWdMb2coKSwxLDc0LGUrXCIgbm90aWZpY2F0aW9uIGZhaWxlZDogXCIrbyl9fWZ1bmN0aW9uIEoobixlKXtmb3IodmFyIHQ9W10scj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdFtyLTJdPWFyZ3VtZW50c1tyXTtlJiZlLmxlbmd0aD4wJiZRKG4sW2VdLmNvbmNhdCh0KSl9ZnVuY3Rpb24gJChuLGUpe2Zvcih2YXIgdD1bXSxyPTI7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMl09YXJndW1lbnRzW3JdO2UmJmUubGVuZ3RoPjAmJlduKGUsKGZ1bmN0aW9uKGUpe2UmJmUuY291bnQoKT4wJiZRKG4sW2UuZXZlbnRzKCldLmNvbmNhdCh0KSl9KSl9ZnVuY3Rpb24gWShuLGUsdCl7biYmbi5sZW5ndGg+MCYmUShcImV2ZW50c1NlbmRSZXF1ZXN0XCIsW2U+PTFlMyYmZTw9MTk5OT9lLTFlMzowLCEwIT09dF0pfWZ1bmN0aW9uIFoobixlKXskKFwiZXZlbnRzU2VudFwiLG4sZSksUigpfWZ1bmN0aW9uIG5uKG4sZSl7JChLYSxuLGU+PThlMyYmZTw9ODk5OT9lLThlMzpIby5Vbmtub3duKX1mdW5jdGlvbiBlbihuKXskKEthLG4sSG8uTm9uUmV0cnlhYmxlU3RhdHVzKSxSKCl9ZnVuY3Rpb24gdG4obixlKXskKEthLG4sSG8uVW5rbm93biksUigpfWZ1bmN0aW9uIHJuKCl7dT10JiZ0LmRpc2FibGVBdXRvQmF0Y2hGbHVzaExpbWl0PzA6TWF0aC5tYXgoMTUwMCxtLzYpfUwoKSxuLl9nZXREYmdQbGdUYXJnZXRzPWZ1bmN0aW9uKCl7cmV0dXJuW29dfSxuLmluaXRpYWxpemU9ZnVuY3Rpb24odSxjLGYpe0dyKGMsKGZ1bmN0aW9uKCl7cmV0dXJuXCJQb3N0Q2hhbm5lbDppbml0aWFsaXplXCJ9KSwoZnVuY3Rpb24oKXt2YXIgZD1jO2UuaW5pdGlhbGl6ZSh1LGMsZik7dHJ5e2MuYWRkVW5sb2FkQ2I7cz1scihqdChuLmlkZW50aWZpZXIpLGMuZXZ0TmFtZXNwYWNlJiZjLmV2dE5hbWVzcGFjZSgpKTt2YXIgdj1uLl9nZXRUZWxDdHgoKTt1LmV4dGVuc2lvbkNvbmZpZ1tuLmlkZW50aWZpZXJdPXUuZXh0ZW5zaW9uQ29uZmlnW24uaWRlbnRpZmllcl18fHt9LHQ9di5nZXRFeHRDZmcobi5pZGVudGlmaWVyKSxsPUJhKHQuc2V0VGltZW91dE92ZXJyaWRlLHQuY2xlYXJUaW1lb3V0T3ZlcnJpZGUpLEU9IXQuZGlzYWJsZU9wdGltaXplT2JqJiYhIUVlKFwiY2hyb21lXCIpLGZ1bmN0aW9uKG4pe3ZhciBlPW4uZ2V0V1BhcmFtO24uZ2V0V1BhcmFtPWZ1bmN0aW9uKCl7dmFyIG49MDtyZXR1cm4gdC5pZ25vcmVNYzFNczBDb29raWVQcm9jZXNzaW5nJiYobnw9MiksbnxlKCl9fShkKSx0LmV2ZW50c0xpbWl0SW5NZW0+MCYmKG09dC5ldmVudHNMaW1pdEluTWVtKSx0LmltbWVkaWF0ZUV2ZW50TGltaXQ+MCYmKHk9dC5pbW1lZGlhdGVFdmVudExpbWl0KSx0LmF1dG9GbHVzaEV2ZW50c0xpbWl0PjAmJihhPXQuYXV0b0ZsdXNoRXZlbnRzTGltaXQpLHpuKHQubWF4RXZlbnRSZXRyeUF0dGVtcHRzKSYmKGs9dC5tYXhFdmVudFJldHJ5QXR0ZW1wdHMpLHpuKHQubWF4VW5sb2FkRXZlbnRSZXRyeUF0dGVtcHRzKSYmKE49dC5tYXhVbmxvYWRFdmVudFJldHJ5QXR0ZW1wdHMpLHJuKCksdC5odHRwWEhST3ZlcnJpZGUmJnQuaHR0cFhIUk92ZXJyaWRlLnNlbmRQT1NUJiYoaT10Lmh0dHBYSFJPdmVycmlkZSksa3IodS5hbm9uQ29va2llTmFtZSkmJm8uYWRkUXVlcnlTdHJpbmdQYXJhbWV0ZXIoXCJhbm9uY2tubVwiLHUuYW5vbkNvb2tpZU5hbWUpLG8uc2VuZEhvb2s9dC5wYXlsb2FkUHJlcHJvY2Vzc29yLG8uc2VuZExpc3RlbmVyPXQucGF5bG9hZExpc3RlbmVyO3ZhciBwPXQub3ZlcnJpZGVFbmRwb2ludFVybD90Lm92ZXJyaWRlRW5kcG9pbnRVcmw6dS5lbmRwb2ludFVybDtuLl9ub3RpZmljYXRpb25NYW5hZ2VyPWMuZ2V0Tm90aWZ5TWdyKCksby5pbml0aWFsaXplKHAsbi5jb3JlLG4saSx0KTt2YXIgZz11LmRpc2FibGVQYWdlVW5sb2FkRXZlbnRzfHxbXTt5cihyLGcscyksaHIocixnLHMpLG1yKEQsdS5kaXNhYmxlUGFnZVNob3dFdmVudHMscyl9Y2F0Y2goaCl7dGhyb3cgbi5zZXRJbml0aWFsaXplZCghMSksaH19KSwoZnVuY3Rpb24oKXtyZXR1cm57Y29yZUNvbmZpZzp1LGNvcmU6YyxleHRlbnNpb25zOmZ9fSkpfSxuLnByb2Nlc3NUZWxlbWV0cnk9ZnVuY3Rpb24oZSxyKXt6cihlLG4uaWRlbnRpZmllcik7dmFyIGk9KHI9bi5fZ2V0VGVsQ3R4KHIpKS5nZXRFeHRDZmcobi5pZGVudGlmaWVyKSxvPSEhdC5kaXNhYmxlVGVsZW1ldHJ5O2kmJihvPW98fCEhaS5kaXNhYmxlVGVsZW1ldHJ5KTt2YXIgYT1lO298fGZ8fCh0Lm92ZXJyaWRlSW5zdHJ1bWVudGF0aW9uS2V5JiYoYS5pS2V5PXQub3ZlcnJpZGVJbnN0cnVtZW50YXRpb25LZXkpLGkmJmkub3ZlcnJpZGVJbnN0cnVtZW50YXRpb25LZXkmJihhLmlLZXk9aS5vdmVycmlkZUluc3RydW1lbnRhdGlvbktleSksQShhLCEwKSxQP1UoMiwyKTpSKCkpLG4ucHJvY2Vzc05leHQoYSxyKX0sbi5fZG9UZWFyZG93bj1mdW5jdGlvbihuLGUpe1UoMiwyKSxmPSEwLG8udGVhcmRvd24oKSxncihbJHQsSnQsR3RdLG51bGwscyksZnVuY3Rpb24obixlKXt2YXIgdD1scihZdCxlKTtncihbR3RdLG4sdCksZ3IoW1h0XSxudWxsLHQpfShudWxsLHMpLGZ1bmN0aW9uKG4sZSl7dmFyIHQ9bHIoWnQsZSk7Z3IoW1F0XSxuLHQpLGdyKFtYdF0sbnVsbCx0KX0obnVsbCxzKSxMKCl9LG4uc2V0RXZlbnRRdWV1ZUxpbWl0cz1mdW5jdGlvbihuLGUpe209bj4wP246MWU0LGE9ZT4wP2U6MCxybigpO3ZhciB0PWg+bjtpZighdCYmdT4wKWZvcih2YXIgcj0xOyF0JiZyPD0zO3IrKyl7dmFyIGk9VFtyXTtpJiZpLmJhdGNoZXMmJlduKGkuYmF0Y2hlcywoZnVuY3Rpb24obil7biYmbi5jb3VudCgpPj11JiYodD0hMCl9KSl9eighMCx0KX0sbi5wYXVzZT1mdW5jdGlvbigpe0IoKSxwPSEwLG8ucGF1c2UoKX0sbi5yZXN1bWU9ZnVuY3Rpb24oKXtwPSExLG8ucmVzdW1lKCksUigpfSxuLmFkZFJlc3BvbnNlSGFuZGxlcj1mdW5jdGlvbihuKXtvLl9yZXNwb25zZUhhbmRsZXJzLnB1c2gobil9LG4uX2xvYWRUcmFuc21pdFByb2ZpbGVzPWZ1bmN0aW9uKG4pe0IoKSxYKCksUz1qbyxSKCksTW4obiwoZnVuY3Rpb24obixlKXt2YXIgdD1lLmxlbmd0aDtpZih0Pj0yKXt2YXIgcj10PjI/ZVsyXTowO2lmKGUuc3BsaWNlKDAsdC0yKSxlWzFdPDAmJihlWzBdPS0xKSxlWzFdPjAmJmVbMF0+MCl7dmFyIGk9ZVswXS9lWzFdO2VbMF09TWF0aC5jZWlsKGkpKmVbMV19cj49MCYmZVsxXT49MCYmcj5lWzFdJiYocj1lWzFdKSxlLnB1c2gociksYltuXT1lfX0pKX0sbi5mbHVzaD1mdW5jdGlvbihuLGUsdCl7aWYodm9pZCAwPT09biYmKG49ITApLCFwKWlmKHQ9dHx8MSxuKW51bGw9PXY/KEIoKSxqKDEsMCx0KSx2PUYoKGZ1bmN0aW9uKCl7dj1udWxsLFcoZSx0KX0pLDApKTpkLnB1c2goZSk7ZWxzZXt2YXIgcj1CKCk7TSgxLDEsdCksbnVsbCE9ZSYmZSgpLHImJlIoKX19LG4uc2V0TXNhQXV0aFRpY2tldD1mdW5jdGlvbihuKXtvLmFkZEhlYWRlcihzYSxuKX0sbi5oYXNFdmVudHM9TyxuLl9zZXRUcmFuc21pdFByb2ZpbGU9ZnVuY3Rpb24obil7UyE9PW4mJnZvaWQgMCE9PWJbbl0mJihCKCksUz1uLFIoKSl9LG4uX2JhY2tPZmZUcmFuc21pc3Npb249ZnVuY3Rpb24oKXtJPDQmJihJKyssQigpLFIoKSl9LG4uX2NsZWFyQmFja09mZj1mdW5jdGlvbigpe0kmJihJPTAsQigpLFIoKSl9LFpuKG4sXCJfc2V0VGltZW91dE92ZXJyaWRlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGwuc2V0fSksKGZ1bmN0aW9uKG4pe2w9QmEobixsLmNsZWFyKX0pKSxabihuLFwiX2NsZWFyVGltZW91dE92ZXJyaWRlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGwuY2xlYXJ9KSwoZnVuY3Rpb24obil7bD1CYShsLnNldCxuKX0pKX0pKSxyfXJldHVybiBDKGUsbiksZS5fX2llRHluPTEsZX0oZGkpLHFhPXphLEhhPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGUoKXt2YXIgdCxyLGk9bi5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBRKGUsaSwoZnVuY3Rpb24obixlKXtuLmluaXRpYWxpemU9ZnVuY3Rpb24obixvKXt2YXIgYT1pO0dyKGksKGZ1bmN0aW9uKCl7cmV0dXJuXCJBcHBsaWNhdGlvbkluc2lnaHRzOmluaXRpYWxpemVcIn0pLChmdW5jdGlvbigpe3Q9bmV3IHFhO3ZhciBpPVtyPW5ldyBQb107byYmKGk9aS5jb25jYXQobykpLG58fHNlKFwiWW91IG11c3QgcHJvdmlkZSBhIGNvbmZpZyBvYmplY3QhXCIpO3ZhciB1PW4uY2hhbm5lbHM7aWYodSYmdS5sZW5ndGg+MCl7Zm9yKHZhciBjPSExLHM9MDtzPHVbMF0ubGVuZ3RoO3MrKylpZih1WzBdW3NdLmlkZW50aWZpZXI9PT10LmlkZW50aWZpZXIpe2M9ITA7YnJlYWt9Y3x8dVswXS5wdXNoKHQpfWVsc2Ugbi5jaGFubmVscz1bW3RdXTt2YXIgbD1uLmV4dGVuc2lvbkNvbmZpZz1uLmV4dGVuc2lvbkNvbmZpZ3x8W107bFt0LmlkZW50aWZpZXJdPWxbdC5pZGVudGlmaWVyXXx8biYmbi5jaGFubmVsQ29uZmlndXJhdGlvbnx8e30sbFtyLmlkZW50aWZpZXJdPWxbci5pZGVudGlmaWVyXXx8biYmbi5wcm9wZXJ0eUNvbmZpZ3VyYXRpb258fHt9O3RyeXtlLmluaXRpYWxpemUobixpKX1jYXRjaChmKXtydChhLmxvZ2dlciwxLDUxNCxcIkZhaWxlZCB0byBpbml0aWFsaXplIFNESy5cIitLZShmKSl9fSksKGZ1bmN0aW9uKCl7cmV0dXJue2NvbmZpZzpuLGV4dGVuc2lvbnM6b319KSl9LG4uZ2V0UHJvcGVydHlNYW5hZ2VyPWZ1bmN0aW9uKCl7cmV0dXJuIHJ9LG4uZ2V0UG9zdENoYW5uZWw9ZnVuY3Rpb24oKXtyZXR1cm4gdH19KSksaX1yZXR1cm4gQyhlLG4pLGUuX19pZUR5bj0xLGV9KHFvKSxqYT1IYSxXYT12aSh7Q1JJVElDQUw6MSxXQVJOSU5HOjJ9KSxWYT12aSgoKFVhPXt9KS5Ccm93c2VyRG9lc05vdFN1cHBvcnRMb2NhbFN0b3JhZ2U9MCxVYS5Ccm93c2VyQ2Fubm90UmVhZExvY2FsU3RvcmFnZT0xLFVhLkJyb3dzZXJDYW5ub3RSZWFkU2Vzc2lvblN0b3JhZ2U9MixVYS5Ccm93c2VyQ2Fubm90V3JpdGVMb2NhbFN0b3JhZ2U9MyxVYS5Ccm93c2VyQ2Fubm90V3JpdGVTZXNzaW9uU3RvcmFnZT00LFVhLkJyb3dzZXJGYWlsZWRSZW1vdmFsRnJvbUxvY2FsU3RvcmFnZT01LFVhLkJyb3dzZXJGYWlsZWRSZW1vdmFsRnJvbVNlc3Npb25TdG9yYWdlPTYsVWEuQ2Fubm90U2VuZEVtcHR5VGVsZW1ldHJ5PTcsVWEuQ2xpZW50UGVyZm9ybWFuY2VNYXRoRXJyb3I9OCxVYS5FcnJvclBhcnNpbmdBSVNlc3Npb25Db29raWU9OSxVYS5FcnJvclBWQ2FsYz0xMCxVYS5FeGNlcHRpb25XaGlsZUxvZ2dpbmdFcnJvcj0xMSxVYS5GYWlsZWRBZGRpbmdUZWxlbWV0cnlUb0J1ZmZlcj0xMixVYS5GYWlsZWRNb25pdG9yQWpheEFib3J0PTEzLFVhLkZhaWxlZE1vbml0b3JBamF4RHVyPTE0LFVhLkZhaWxlZE1vbml0b3JBamF4T3Blbj0xNSxVYS5GYWlsZWRNb25pdG9yQWpheFJTQz0xNixVYS5GYWlsZWRNb25pdG9yQWpheFNlbmQ9MTcsVWEuRmFpbGVkTW9uaXRvckFqYXhHZXRDb3JyZWxhdGlvbkhlYWRlcj0xOCxVYS5GYWlsZWRUb0FkZEhhbmRsZXJGb3JPbkJlZm9yZVVubG9hZD0xOSxVYS5GYWlsZWRUb1NlbmRRdWV1ZWRUZWxlbWV0cnk9MjAsVWEuRmFpbGVkVG9SZXBvcnREYXRhTG9zcz0yMSxVYS5GbHVzaEZhaWxlZD0yMixVYS5NZXNzYWdlTGltaXRQZXJQVkV4Y2VlZGVkPTIzLFVhLk1pc3NpbmdSZXF1aXJlZEZpZWxkU3BlY2lmaWNhdGlvbj0yNCxVYS5OYXZpZ2F0aW9uVGltaW5nTm90U3VwcG9ydGVkPTI1LFVhLk9uRXJyb3I9MjYsVWEuU2Vzc2lvblJlbmV3YWxEYXRlSXNaZXJvPTI3LFVhLlNlbmRlck5vdEluaXRpYWxpemVkPTI4LFVhLlN0YXJ0VHJhY2tFdmVudEZhaWxlZD0yOSxVYS5TdG9wVHJhY2tFdmVudEZhaWxlZD0zMCxVYS5TdGFydFRyYWNrRmFpbGVkPTMxLFVhLlN0b3BUcmFja0ZhaWxlZD0zMixVYS5UZWxlbWV0cnlTYW1wbGVkQW5kTm90U2VudD0zMyxVYS5UcmFja0V2ZW50RmFpbGVkPTM0LFVhLlRyYWNrRXhjZXB0aW9uRmFpbGVkPTM1LFVhLlRyYWNrTWV0cmljRmFpbGVkPTM2LFVhLlRyYWNrUFZGYWlsZWQ9MzcsVWEuVHJhY2tQVkZhaWxlZENhbGM9MzgsVWEuVHJhY2tUcmFjZUZhaWxlZD0zOSxVYS5UcmFuc21pc3Npb25GYWlsZWQ9NDAsVWEuRmFpbGVkVG9TZXRTdG9yYWdlQnVmZmVyPTQxLFVhLkZhaWxlZFRvUmVzdG9yZVN0b3JhZ2VCdWZmZXI9NDIsVWEuSW52YWxpZEJhY2tlbmRSZXNwb25zZT00MyxVYS5GYWlsZWRUb0ZpeERlcHJpY2F0ZWRWYWx1ZXM9NDQsVWEuSW52YWxpZER1cmF0aW9uVmFsdWU9NDUsVWEuVGVsZW1ldHJ5RW52ZWxvcGVJbnZhbGlkPTQ2LFVhLkNyZWF0ZUVudmVsb3BlRXJyb3I9NDcsVWEuQ2Fubm90U2VyaWFsaXplT2JqZWN0PTQ4LFVhLkNhbm5vdFNlcmlhbGl6ZU9iamVjdE5vblNlcmlhbGl6YWJsZT00OSxVYS5DaXJjdWxhclJlZmVyZW5jZURldGVjdGVkPTUwLFVhLkNsZWFyQXV0aENvbnRleHRGYWlsZWQ9NTEsVWEuRXhjZXB0aW9uVHJ1bmNhdGVkPTUyLFVhLklsbGVnYWxDaGFyc0luTmFtZT01MyxVYS5JdGVtTm90SW5BcnJheT01NCxVYS5NYXhBamF4UGVyUFZFeGNlZWRlZD01NSxVYS5NZXNzYWdlVHJ1bmNhdGVkPTU2LFVhLk5hbWVUb29Mb25nPTU3LFVhLlNhbXBsZVJhdGVPdXRPZlJhbmdlPTU4LFVhLlNldEF1dGhDb250ZXh0RmFpbGVkPTU5LFVhLlNldEF1dGhDb250ZXh0RmFpbGVkQWNjb3VudE5hbWU9NjAsVWEuU3RyaW5nVmFsdWVUb29Mb25nPTYxLFVhLlN0YXJ0Q2FsbGVkTW9yZVRoYW5PbmNlPTYyLFVhLlN0b3BDYWxsZWRXaXRob3V0U3RhcnQ9NjMsVWEuVGVsZW1ldHJ5SW5pdGlhbGl6ZXJGYWlsZWQ9NjQsVWEuVHJhY2tBcmd1bWVudHNOb3RTcGVjaWZpZWQ9NjUsVWEuVXJsVG9vTG9uZz02NixVYS5TZXNzaW9uU3RvcmFnZUJ1ZmZlckZ1bGw9NjcsVWEuQ2Fubm90QWNjZXNzQ29va2llPTY4LFVhLklkVG9vTG9uZz02OSxVYS5JbnZhbGlkRXZlbnQ9NzAsVWEuRmFpbGVkTW9uaXRvckFqYXhTZXRSZXF1ZXN0SGVhZGVyPTcxLFVhLlNlbmRCcm93c2VySW5mb09uVXNlckluaXQ9NzIsVWEuUGx1Z2luRXhjZXB0aW9uPTczLFVhLk5vdGlmaWNhdGlvbkV4Y2VwdGlvbj03NCxVYS5TbmlwcGV0U2NyaXB0TG9hZEZhaWx1cmU9OTksVWEuSW52YWxpZEluc3RydW1lbnRhdGlvbktleT0xMDAsVWEuQ2Fubm90UGFyc2VBaUJsb2JWYWx1ZT0xMDEsVWEuSW52YWxpZENvbnRlbnRCbG9iPTEwMixVYS5UcmFja1BhZ2VBY3Rpb25FdmVudEZhaWxlZD0xMDMsVWEuRmFpbGVkQWRkaW5nQ3VzdG9tRGVmaW5lZFJlcXVlc3RDb250ZXh0PTEwNCxVYS5Jbk1lbW9yeVN0b3JhZ2VCdWZmZXJGdWxsPTEwNSxVYS5JbnN0cnVtZW50YXRpb25LZXlEZXByZWNhdGlvbj0xMDYsVWEpKSxYYT12aSh7Tm90U2V0OjAsUGlpX0Rpc3Rpbmd1aXNoZWROYW1lOjEsUGlpX0dlbmVyaWNEYXRhOjIsUGlpX0lQVjRBZGRyZXNzOjMsUGlpX0lQdjZBZGRyZXNzOjQsUGlpX01haWxTdWJqZWN0OjUsUGlpX1Bob25lTnVtYmVyOjYsUGlpX1F1ZXJ5U3RyaW5nOjcsUGlpX1NpcEFkZHJlc3M6OCxQaWlfU210cEFkZHJlc3M6OSxQaWlfSWRlbnRpdHk6MTAsUGlpX1VyaToxMSxQaWlfRnFkbjoxMixQaWlfSVBWNEFkZHJlc3NMZWdhY3k6MTMsQ3VzdG9tZXJDb250ZW50X0dlbmVyaWNDb250ZW50OjMyfSksR2E9dmkoe05vcm1hbDoxLENvc3REZWZlcnJlZDoyLFJlYWxUaW1lOjMsSW1tZWRpYXRlOjR9KSxRYT0odmkoe1Vuc3BlY2lmaWVkOjAsU3RyaW5nOjEsSW50MzI6MixVSW50MzI6MyxJbnQ2NDo0LFVJbnQ2NDo1LERvdWJsZTo2LEJvb2w6NyxHdWlkOjgsRGF0ZVRpbWU6OX0pLHZpKHtOb3JtYWw6MSxDcml0aWNhbDoyfSkpLEphPXZpKHtOT05FOjAsRVJST1I6MSxXQVJOSU5HOjIsSU5GT1JNQVRJT046M30pLCRhPSh0ZShiKGIoe30sVmEpLHZpKHtBdXRoSGFuZFNoYWtlRXJyb3I6NTAxLEF1dGhSZWRpcmVjdEZhaWw6NTAyLEJyb3dzZXJDYW5ub3RSZWFkTG9jYWxTdG9yYWdlOjUwMyxCcm93c2VyQ2Fubm90V3JpdGVMb2NhbFN0b3JhZ2U6NTA0LEJyb3dzZXJEb2VzTm90U3VwcG9ydExvY2FsU3RvcmFnZTo1MDUsQ2Fubm90UGFyc2VCaUJsb2JWYWx1ZTo1MDYsQ2Fubm90UGFyc2VEYXRhQXR0cmlidXRlOjUwNyxDVlBsdWdpbk5vdEF2YWlsYWJsZTo1MDgsRHJvcHBlZEV2ZW50OjUwOSxFcnJvclBhcnNpbmdBSVNlc3Npb25Db29raWU6NTEwLEVycm9yUHJvdmlkZWRDaGFubmVsczo1MTEsRmFpbGVkVG9HZXRDb29raWVzOjUxMixGYWlsZWRUb0luaXRpYWxpemVDb3JyZWxhdGlvblZlY3Rvcjo1MTMsRmFpbGVkVG9Jbml0aWFsaXplU0RLOjUxNCxJbnZhbGlkQ29udGVudEJsb2I6NTE1LEludmFsaWRDb3JyZWxhdGlvblZhbHVlOjUxNixTZXNzaW9uUmVuZXdhbERhdGVJc1plcm86NTE3LFNlbmRQb3N0T25Db21wbGV0ZUZhaWx1cmU6NTE4LFBvc3RSZXNwb25zZUhhbmRsZXI6NTE5LFNES05vdEluaXRpYWxpemVkOjUyMH0pKSksMTAwKX19XSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD0uLi9qcy9vbmVkcy1hbmFseXRpY3MtanNfZW5fNWU3YjU5YWNkYjkwMTY5ZWY3N2MuanMubWFwIn0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDMzMDE1LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiAzMzAxNX0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDEwLjcyOSwgInJlY2VpdmUiOiAzNC41ODF9LCAicGFnZXJlZiI6ICJwYWdlQDgxMTM3Y2YzOWNhMDNlZWVkYTVhYWVjYjczZjBhZmU2IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjoyODAwOjIzMzoxY2I3OjI2MWI6MWY5YzoyMDc0OjNjXSIsICJfc2VydmVyUG9ydCI6IDQ0MywgIl9zZWN1cml0eURldGFpbHMiOiB7InByb3RvY29sIjogIlRMUyAxLjMiLCAic3ViamVjdE5hbWUiOiAiaWRlbnRpdHljZG4ubXNhdXRoLm5ldCIsICJpc3N1ZXIiOiAiTWljcm9zb2Z0IEF6dXJlIFJTQSBUTFMgSXNzdWluZyBDQSAwNCIsICJ2YWxpZEZyb20iOiAxNzE3NzE5MTc1LCAidmFsaWRUbyI6IDE3NDg4MjMxNzV9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyNC0wOC0wMVQyMDozMDowNS4yMTNaIiwgInRpbWUiOiA0NS4xODUsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiR0VUIiwgInVybCI6ICJodHRwczovL2xvZ2luY2RuLm1zZnRhdXRoLm5ldC9zaGFyZWQvNS9pbWFnZXMvbWljcm9zb2Z0X2xvZ29fZWU1YzhkOWZiNjI0OGM5MzhmZDAuc3ZnIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAibG9naW5jZG4ubXNmdGF1dGgubmV0In0sIHsibmFtZSI6ICI6bWV0aG9kIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiOnBhdGgiLCAidmFsdWUiOiAiL3NoYXJlZC81L2ltYWdlcy9taWNyb3NvZnRfbG9nb19lZTVjOGQ5ZmI2MjQ4YzkzOGZkMC5zdmcifSwgeyJuYW1lIjogIjpzY2hlbWUiLCAidmFsdWUiOiAiaHR0cHMifSwgeyJuYW1lIjogImFjY2VwdCIsICJ2YWx1ZSI6ICJpbWFnZS9hdmlmLGltYWdlL3dlYnAsaW1hZ2UvYXBuZyxpbWFnZS9zdmcreG1sLGltYWdlLyosKi8qO3E9MC44In0sIHsibmFtZSI6ICJhY2NlcHQtZW5jb2RpbmciLCAidmFsdWUiOiAiZ3ppcCwgZGVmbGF0ZSwgYnIsIHpzdGQifSwgeyJuYW1lIjogImFjY2VwdC1sYW5ndWFnZSIsICJ2YWx1ZSI6ICJlbi1VUyxlbjtxPTAuOSJ9LCB7Im5hbWUiOiAicHJpb3JpdHkiLCAidmFsdWUiOiAiaSJ9LCB7Im5hbWUiOiAicmVmZXJlciIsICJ2YWx1ZSI6ICJodHRwczovL2xvZ2luLmxpdmUuY29tLyJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhIiwgInZhbHVlIjogIlwiQ2hyb21pdW1cIjt2PVwiMTI3XCIsIFwiTm90KUE7QnJhbmRcIjt2PVwiOTlcIiJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLW1vYmlsZSIsICJ2YWx1ZSI6ICI/MCJ9LCB7Im5hbWUiOiAic2VjLWNoLXVhLXBsYXRmb3JtIiwgInZhbHVlIjogIlwiV2luZG93c1wiIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtZGVzdCIsICJ2YWx1ZSI6ICJpbWFnZSJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLW1vZGUiLCAidmFsdWUiOiAibm8tY29ycyJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLXNpdGUiLCAidmFsdWUiOiAiY3Jvc3Mtc2l0ZSJ9LCB7Im5hbWUiOiAidXNlci1hZ2VudCIsICJ2YWx1ZSI6ICJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTI3LjAuNjUzMy4xNyBTYWZhcmkvNTM3LjM2In1dLCAicXVlcnlTdHJpbmciOiBbXSwgImhlYWRlcnNTaXplIjogNzA4LCAiYm9keVNpemUiOiAwfSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICJhY2NlcHQtcmFuZ2VzIiwgInZhbHVlIjogImJ5dGVzIn0sIHsibmFtZSI6ICJhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLCAidmFsdWUiOiAiKiJ9LCB7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtZXhwb3NlLWhlYWRlcnMiLCAidmFsdWUiOiAieC1tcy1yZXF1ZXN0LWlkLFNlcnZlcix4LW1zLXZlcnNpb24sQ29udGVudC1UeXBlLENvbnRlbnQtRW5jb2RpbmcsQ2FjaGUtQ29udHJvbCxMYXN0LU1vZGlmaWVkLEVUYWcsQ29udGVudC1NRDUseC1tcy1sZWFzZS1zdGF0dXMseC1tcy1ibG9iLXR5cGUsQ29udGVudC1MZW5ndGgsRGF0ZSxUcmFuc2Zlci1FbmNvZGluZyJ9LCB7Im5hbWUiOiAiYWdlIiwgInZhbHVlIjogIjExMjkzMDI0In0sIHsibmFtZSI6ICJjYWNoZS1jb250cm9sIiwgInZhbHVlIjogInB1YmxpYywgbWF4LWFnZT0zMTUzNjAwMCJ9LCB7Im5hbWUiOiAiY29udGVudC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwIn0sIHsibmFtZSI6ICJjb250ZW50LWxlbmd0aCIsICJ2YWx1ZSI6ICIxNDM1In0sIHsibmFtZSI6ICJjb250ZW50LW1kNSIsICJ2YWx1ZSI6ICJuemFMeEZnUDdaQjNkZk1jYXliV3p3PT0ifSwgeyJuYW1lIjogImNvbnRlbnQtdHlwZSIsICJ2YWx1ZSI6ICJpbWFnZS9zdmcreG1sIn0sIHsibmFtZSI6ICJkYXRlIiwgInZhbHVlIjogIlRodSwgMDEgQXVnIDIwMjQgMjA6MzA6MDUgR01UIn0sIHsibmFtZSI6ICJldGFnIiwgInZhbHVlIjogIjB4OERCNzcyNTdGRkU2QjRFIn0sIHsibmFtZSI6ICJsYXN0LW1vZGlmaWVkIiwgInZhbHVlIjogIlR1ZSwgMjcgSnVuIDIwMjMgMTU6NDU6MTQgR01UIn0sIHsibmFtZSI6ICJzZXJ2ZXIiLCAidmFsdWUiOiAiRUNBY2MgKGZyYy80Q0Y1KSJ9LCB7Im5hbWUiOiAidmFyeSIsICJ2YWx1ZSI6ICJBY2NlcHQtRW5jb2RpbmcifSwgeyJuYW1lIjogIngtY2FjaGUiLCAidmFsdWUiOiAiSElUIn0sIHsibmFtZSI6ICJ4LW1zLWJsb2ItdHlwZSIsICJ2YWx1ZSI6ICJCbG9ja0Jsb2IifSwgeyJuYW1lIjogIngtbXMtbGVhc2Utc3RhdHVzIiwgInZhbHVlIjogInVubG9ja2VkIn0sIHsibmFtZSI6ICJ4LW1zLXJlcXVlc3QtaWQiLCAidmFsdWUiOiAiMTI3MGYwZWMtNTAxZS0wMGZlLTM0OWItN2Q1ZDZlMDAwMDAwIn0sIHsibmFtZSI6ICJ4LW1zLXZlcnNpb24iLCAidmFsdWUiOiAiMjAwOS0wOS0xOSJ9XSwgImNvbnRlbnQiOiB7InNpemUiOiAzNjUxLCAibWltZVR5cGUiOiAiaW1hZ2Uvc3ZnK3htbCIsICJjb21wcmVzc2lvbiI6IDE3MzgsICJ0ZXh0IjogIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTA4XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDEwOCAyNFwiPjx0aXRsZT5hc3NldHM8L3RpdGxlPjxwYXRoIGQ9XCJNNDQuODM2LDQuNlYxOC40aC0yLjRWNy41ODNINDIuNEwzOC4xMTksMTguNEgzNi41MzFMMzIuMTQyLDcuNTgzaC0uMDI5VjE4LjRIMjkuOVY0LjZoMy40MzZMMzcuMywxNC44M2guMDU4TDQxLjU0NSw0LjZabTIsMS4wNDlhMS4yNjgsMS4yNjgsMCwwLDEsLjQxOS0uOTY3LDEuNDEzLDEuNDEzLDAsMCwxLDEtLjM5LDEuMzkyLDEuMzkyLDAsMCwxLDEuMDIuNCwxLjMsMS4zLDAsMCwxLC40Ljk1OCwxLjI0OCwxLjI0OCwwLDAsMS0uNDE0Ljk1MywxLjQyOCwxLjQyOCwwLDAsMS0xLjAxLjM4NUExLjQsMS40LDAsMCwxLDQ3LjI1LDYuNmExLjI2MSwxLjI2MSwwLDAsMS0uNDA5LS45NDhNNDkuNDEsMTguNEg0Ny4wODFWOC41MDdINDkuNDFabTcuMDY0LTEuNjk0YTMuMjEzLDMuMjEzLDAsMCwwLDEuMTQ1LS4yNDEsNC44MTEsNC44MTEsMCwwLDAsMS4xNTUtLjYzNVYxOGE0LjY2NSw0LjY2NSwwLDAsMS0xLjI2Ni40ODEsNi44ODYsNi44ODYsMCwwLDEtMS41NTQuMTY0LDQuNzA3LDQuNzA3LDAsMCwxLTQuOTE4LTQuOTA4LDUuNjQxLDUuNjQxLDAsMCwxLDEuNC0zLjkzMiw1LjA1NSw1LjA1NSwwLDAsMSwzLjk1NS0xLjU0NSw1LjQxNCw1LjQxNCwwLDAsMSwxLjMyNC4xNjgsNC40MzEsNC40MzEsMCwwLDEsMS4wNjMuMzl2Mi4yMzNhNC43NjMsNC43NjMsMCwwLDAtMS4xLS42MTEsMy4xODQsMy4xODQsMCwwLDAtMS4xNS0uMjE3LDIuOTE5LDIuOTE5LDAsMCwwLTIuMjIzLjksMy4zNywzLjM3LDAsMCwwLS44NDcsMi40MTYsMy4yMTYsMy4yMTYsMCwwLDAsLjgxMywyLjMzOCwyLjkzNiwyLjkzNiwwLDAsMCwyLjIwOS44MzdNNjUuNCw4LjM0M2EyLjk1MiwyLjk1MiwwLDAsMSwuNS4wMzksMi4xLDIuMSwwLDAsMSwuMzc1LjF2Mi4zNThhMi4wNCwyLjA0LDAsMCwwLS41MzQtLjI1NSwyLjY0NiwyLjY0NiwwLDAsMC0uODUyLS4xMiwxLjgwOCwxLjgwOCwwLDAsMC0xLjQ0OC43MjIsMy40NjcsMy40NjcsMCwwLDAtLjU5MiwyLjIyM1YxOC40SDYwLjUyNVY4LjUwN2gyLjMyOXYxLjU1OWguMDM4QTIuNzI5LDIuNzI5LDAsMCwxLDYzLjg1NSw4LjgsMi42MTEsMi42MTEsMCwwLDEsNjUuNCw4LjM0M20xLDUuMjU0QTUuMzU4LDUuMzU4LDAsMCwxLDY3Ljc5Miw5LjcxYTUuMSw1LjEsMCwwLDEsMy44NS0xLjQzNCw0Ljc0Miw0Ljc0MiwwLDAsMSwzLjYyMywxLjM4MSw1LjIxMiw1LjIxMiwwLDAsMSwxLjMsMy43MjksNS4yNTcsNS4yNTcsMCwwLDEtMS4zODYsMy44Myw1LjAxOSw1LjAxOSwwLDAsMS0zLjc3MiwxLjQyNCw0LjkzNSw0LjkzNSwwLDAsMS0zLjY1Mi0xLjM1MkE0Ljk4Nyw0Ljk4NywwLDAsMSw2Ni40MDYsMTMuNm0yLjQyNS0uMDc3YTMuNTM1LDMuNTM1LDAsMCwwLC43LDIuMzY4LDIuNTA1LDIuNTA1LDAsMCwwLDIuMDExLjgxOCwyLjM0NSwyLjM0NSwwLDAsMCwxLjkzNC0uODE4LDMuNzgzLDMuNzgzLDAsMCwwLC42NjQtMi40MjUsMy42NTEsMy42NTEsMCwwLDAtLjY4OC0yLjQxMSwyLjM4OSwyLjM4OSwwLDAsMC0xLjkyOS0uODEzLDIuNDQsMi40NCwwLDAsMC0xLjk4OC44NTIsMy43MDcsMy43MDcsMCwwLDAtLjcwNywyLjQzbTExLjItMi40MTZhMSwxLDAsMCwwLC4zMTguNzg1LDUuNDI2LDUuNDI2LDAsMCwwLDEuNC43MTcsNC43NjcsNC43NjcsMCwwLDEsMS45NTksMS4yNTYsMi42LDIuNiwwLDAsMSwuNTYzLDEuNjg5QTIuNzE1LDIuNzE1LDAsMCwxLDgzLjIsMTcuNzk0YTQuNTU4LDQuNTU4LDAsMCwxLTIuOS44NDcsNi45NzgsNi45NzgsMCwwLDEtMS4zNjItLjE0OSw2LjA0Nyw2LjA0NywwLDAsMS0xLjI2NS0uMzh2LTIuMjlhNS43MzMsNS43MzMsMCwwLDAsMS4zNjcuNyw0LDQsMCwwLDAsMS4zMjguMjYsMi4zNjUsMi4zNjUsMCwwLDAsMS4xNjQtLjIyMS43OS43OSwwLDAsMCwuMzc1LS43NDEsMS4wMjksMS4wMjksMCwwLDAtLjM5LS44MTMsNS43NjgsNS43NjgsMCwwLDAtMS40NzctLjc2NSw0LjU2NCw0LjU2NCwwLDAsMS0xLjgyOS0xLjIxMywyLjY1NSwyLjY1NSwwLDAsMS0uNTM5LTEuNzEzLDIuNzA2LDIuNzA2LDAsMCwxLDEuMDYzLTIuMkE0LjI0Myw0LjI0MywwLDAsMSw4MS41LDguMjU2YTYuNjYzLDYuNjYzLDAsMCwxLDEuMTY0LjExNSw1LjE2MSw1LjE2MSwwLDAsMSwxLjA3OC4zdjIuMjE0YTQuOTc0LDQuOTc0LDAsMCwwLTEuMDc4LS41MjksMy42LDMuNiwwLDAsMC0xLjIyMi0uMjIxLDEuNzgxLDEuNzgxLDAsMCwwLTEuMDM0LjI2LjgyNC44MjQsMCwwLDAtLjM3MS43MTJNODUuMjc4LDEzLjZBNS4zNTgsNS4zNTgsMCwwLDEsODYuNjY0LDkuNzFhNS4xLDUuMSwwLDAsMSwzLjg0OS0xLjQzNCw0Ljc0Myw0Ljc0MywwLDAsMSwzLjYyNCwxLjM4MSw1LjIxMiw1LjIxMiwwLDAsMSwxLjMsMy43MjksNS4yNTksNS4yNTksMCwwLDEtMS4zODYsMy44Myw1LjAyLDUuMDIsMCwwLDEtMy43NzMsMS40MjQsNC45MzQsNC45MzQsMCwwLDEtMy42NTItMS4zNTJBNC45ODcsNC45ODcsMCwwLDEsODUuMjc4LDEzLjZtMi40MjUtLjA3N2EzLjUzNywzLjUzNywwLDAsMCwuNywyLjM2OCwyLjUwNiwyLjUwNiwwLDAsMCwyLjAxMS44MTgsMi4zNDUsMi4zNDUsMCwwLDAsMS45MzQtLjgxOCwzLjc4MywzLjc4MywwLDAsMCwuNjY0LTIuNDI1LDMuNjUxLDMuNjUxLDAsMCwwLS42ODgtMi40MTEsMi4zOSwyLjM5LDAsMCwwLTEuOTMtLjgxMywyLjQzOSwyLjQzOSwwLDAsMC0xLjk4Ny44NTIsMy43MDcsMy43MDcsMCwwLDAtLjcwNywyLjQzbTE1LjQ2NC0zLjEwOUg5OS43VjE4LjRIOTcuMzQxVjEwLjQxMkg5NS42ODZWOC41MDdoMS42NTVWNy4xM2EzLjQyMywzLjQyMywwLDAsMSwxLjAxNS0yLjU1NSwzLjU2MSwzLjU2MSwwLDAsMSwyLjYtMSw1LjgwNyw1LjgwNywwLDAsMSwuNzUxLjA0MywyLjk5MywyLjk5MywwLDAsMSwuNTc3LjEzVjUuNzY0YTIuNDIyLDIuNDIyLDAsMCwwLS40LS4xNjQsMi4xMDcsMi4xMDcsMCwwLDAtLjY2NC0uMSwxLjQwNywxLjQwNywwLDAsMC0xLjEyNi40NTdBMi4wMTcsMi4wMTcsMCwwLDAsOTkuNyw3LjMxM1Y4LjUwN2gzLjQ2OVY2LjI4M2wyLjMzOS0uNzEyVjguNTA3aDIuMzU4djEuOTA2aC0yLjM1OHY0LjYyOWExLjk1MSwxLjk1MSwwLDAsMCwuMzMyLDEuMjksMS4zMjYsMS4zMjYsMCwwLDAsMS4wNDQuMzc1LDEuNTU3LDEuNTU3LDAsMCwwLC40ODYtLjEsMi4yOTQsMi4yOTQsMCwwLDAsLjUtLjIzMVYxOC4zYTIuNzM3LDIuNzM3LDAsMCwxLS43MzYuMjMxLDUuMDI5LDUuMDI5LDAsMCwxLTEuMDE1LjEwNiwyLjg4NywyLjg4NywwLDAsMS0yLjIwOS0uNzg0LDMuMzQxLDMuMzQxLDAsMCwxLS43MzYtMi4zNjNaXCIgZmlsbD1cIiM3MzczNzNcIi8+PHJlY3Qgd2lkdGg9XCIxMC45MzFcIiBoZWlnaHQ9XCIxMC45MzFcIiBmaWxsPVwiI2YyNTAyMlwiLz48cmVjdCB4PVwiMTIuMDY5XCIgd2lkdGg9XCIxMC45MzFcIiBoZWlnaHQ9XCIxMC45MzFcIiBmaWxsPVwiIzdmYmEwMFwiLz48cmVjdCB5PVwiMTIuMDY5XCIgd2lkdGg9XCIxMC45MzFcIiBoZWlnaHQ9XCIxMC45MzFcIiBmaWxsPVwiIzAwYTRlZlwiLz48cmVjdCB4PVwiMTIuMDY5XCIgeT1cIjEyLjA2OVwiIHdpZHRoPVwiMTAuOTMxXCIgaGVpZ2h0PVwiMTAuOTMxXCIgZmlsbD1cIiNmZmI5MDBcIi8+PC9zdmc+In0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDE5MTMsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDE5MTN9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDAuMDIyLCAiY29ubmVjdCI6IDE5LjI2MiwgInNzbCI6IDE0LjI1NCwgInNlbmQiOiAwLCAid2FpdCI6IDcuMDQyLCAicmVjZWl2ZSI6IDQuNjA1fSwgInBhZ2VyZWYiOiAicGFnZUA4MTEzN2NmMzljYTAzZWVlZGE1YWFlY2I3M2YwYWZlNiIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiWzI2MDY6MjgwMDoyMzM6MWNiNzoyNjFiOjFmOWM6MjA3NDozY10iLCAiX3NlcnZlclBvcnQiOiA0NDMsICJfc2VjdXJpdHlEZXRhaWxzIjogeyJwcm90b2NvbCI6ICJUTFMgMS4zIiwgInN1YmplY3ROYW1lIjogImlkZW50aXR5Y2RuLm1zYXV0aC5uZXQiLCAiaXNzdWVyIjogIk1pY3Jvc29mdCBBenVyZSBSU0EgVExTIElzc3VpbmcgQ0EgMDQiLCAidmFsaWRGcm9tIjogMTcxNzcxOTE3NSwgInZhbGlkVG8iOiAxNzQ4ODIzMTc1fX0sIHsic3RhcnRlZERhdGVUaW1lIjogIjIwMjQtMDgtMDFUMjA6MzA6MDUuMzA0WiIsICJ0aW1lIjogMTQuMTI1LCAicmVxdWVzdCI6IHsibWV0aG9kIjogIkdFVCIsICJ1cmwiOiAiaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvc2hhcmVkLzUvaW1hZ2VzLzJfYmMzZDMyYTY5Njg5NWY3OGMxOWQuc3ZnIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogIjphdXRob3JpdHkiLCAidmFsdWUiOiAibG9naW5jZG4ubXNmdGF1dGgubmV0In0sIHsibmFtZSI6ICI6bWV0aG9kIiwgInZhbHVlIjogIkdFVCJ9LCB7Im5hbWUiOiAiOnBhdGgiLCAidmFsdWUiOiAiL3NoYXJlZC81L2ltYWdlcy8yX2JjM2QzMmE2OTY4OTVmNzhjMTlkLnN2ZyJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogImFjY2VwdC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciwgenN0ZCJ9LCB7Im5hbWUiOiAiYWNjZXB0LWxhbmd1YWdlIiwgInZhbHVlIjogImVuLVVTLGVuO3E9MC45In0sIHsibmFtZSI6ICJwcmlvcml0eSIsICJ2YWx1ZSI6ICJpIn0sIHsibmFtZSI6ICJyZWZlcmVyIiwgInZhbHVlIjogImh0dHBzOi8vbG9naW4ubGl2ZS5jb20vIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEiLCAidmFsdWUiOiAiXCJDaHJvbWl1bVwiO3Y9XCIxMjdcIiwgXCJOb3QpQTtCcmFuZFwiO3Y9XCI5OVwiIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtbW9iaWxlIiwgInZhbHVlIjogIj8wIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtcGxhdGZvcm0iLCAidmFsdWUiOiAiXCJXaW5kb3dzXCIifSwgeyJuYW1lIjogInNlYy1mZXRjaC1kZXN0IiwgInZhbHVlIjogImltYWdlIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtbW9kZSIsICJ2YWx1ZSI6ICJuby1jb3JzIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtc2l0ZSIsICJ2YWx1ZSI6ICJjcm9zcy1zaXRlIn0sIHsibmFtZSI6ICJ1c2VyLWFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjcuMC42NTMzLjE3IFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA2ODIsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogImFjY2VwdC1yYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJhY2Nlc3MtY29udHJvbC1leHBvc2UtaGVhZGVycyIsICJ2YWx1ZSI6ICJ4LW1zLXJlcXVlc3QtaWQsU2VydmVyLHgtbXMtdmVyc2lvbixDb250ZW50LVR5cGUsQ29udGVudC1FbmNvZGluZyxDYWNoZS1Db250cm9sLExhc3QtTW9kaWZpZWQsRVRhZyxDb250ZW50LU1ENSx4LW1zLWxlYXNlLXN0YXR1cyx4LW1zLWJsb2ItdHlwZSxDb250ZW50LUxlbmd0aCxEYXRlLFRyYW5zZmVyLUVuY29kaW5nIn0sIHsibmFtZSI6ICJhZ2UiLCAidmFsdWUiOiAiMTEyOTI1NTcifSwgeyJuYW1lIjogImNhY2hlLWNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwIn0sIHsibmFtZSI6ICJjb250ZW50LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogImNvbnRlbnQtbGVuZ3RoIiwgInZhbHVlIjogIjY3MyJ9LCB7Im5hbWUiOiAiY29udGVudC1tZDUiLCAidmFsdWUiOiAiRGhkaWRqWXJsQ2VhUkpKUkcveTltQT09In0sIHsibmFtZSI6ICJjb250ZW50LXR5cGUiLCAidmFsdWUiOiAiaW1hZ2Uvc3ZnK3htbCJ9LCB7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJUaHUsIDAxIEF1ZyAyMDI0IDIwOjMwOjA1IEdNVCJ9LCB7Im5hbWUiOiAiZXRhZyIsICJ2YWx1ZSI6ICIweDhEQjc3MjU3QzkxQjE2OCJ9LCB7Im5hbWUiOiAibGFzdC1tb2RpZmllZCIsICJ2YWx1ZSI6ICJUdWUsIDI3IEp1biAyMDIzIDE1OjQ1OjA5IEdNVCJ9LCB7Im5hbWUiOiAic2VydmVyIiwgInZhbHVlIjogIkVDQWNjIChmcmMvNENDMCkifSwgeyJuYW1lIjogInZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJ4LWNhY2hlIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAieC1tcy1ibG9iLXR5cGUiLCAidmFsdWUiOiAiQmxvY2tCbG9iIn0sIHsibmFtZSI6ICJ4LW1zLWxlYXNlLXN0YXR1cyIsICJ2YWx1ZSI6ICJ1bmxvY2tlZCJ9LCB7Im5hbWUiOiAieC1tcy1yZXF1ZXN0LWlkIiwgInZhbHVlIjogImFmYTQwNDQxLTUwMWUtMDA0Ni0yNzlkLTdkNzMzYjAwMDAwMCJ9LCB7Im5hbWUiOiAieC1tcy12ZXJzaW9uIiwgInZhbHVlIjogIjIwMDktMDktMTkifV0sICJjb250ZW50IjogeyJzaXplIjogMTg2NCwgIm1pbWVUeXBlIjogImltYWdlL3N2Zyt4bWwiLCAiY29tcHJlc3Npb24iOiAxMDQwLCAidGV4dCI6ICI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE5MjBcIiBoZWlnaHQ9XCIxMDgwXCIgZmlsbD1cIm5vbmVcIj48ZyBvcGFjaXR5PVwiLjJcIiBjbGlwLXBhdGg9XCJ1cmwoI0UpXCI+PHBhdGggZD1cIk0xNDY2LjQgMTc5NS4yYzk1MC4zNyAwIDE3MjAuOC02MjcuNTIgMTcyMC44LTE0MDEuNlMyNDE2Ljc3LTEwMDggMTQ2Ni40LTEwMDgtMjU0LjQtMzgwLjQ4Mi0yNTQuNCAzOTMuNnM3NzAuNDI4IDE0MDEuNiAxNzIwLjggMTQwMS42elwiIGZpbGw9XCJ1cmwoI0EpXCIvPjxwYXRoIGQ9XCJNMzk0LjIgMTgxNS42Yzc0Ni41OCAwIDEzNTEuOC00OTMuMiAxMzUxLjgtMTEwMS42UzExNDAuNzgtMzg3LjYgMzk0LjItMzg3LjYtOTU3LjYgMTA1LjYwMy05NTcuNiA3MTQtMzUyLjM4IDE4MTUuNiAzOTQuMiAxODE1LjZ6XCIgZmlsbD1cInVybCgjQilcIi8+PHBhdGggZD1cIk0xNTQ4LjYgMTg4NS4yYzYzMS45MiAwIDExNDQuMi00MTcuNDUgMTE0NC4yLTkzMi40UzIxODAuNTIgMjAuNCAxNTQ4LjYgMjAuNCA0MDQuNCA0MzcuODUgNDA0LjQgOTUyLjhzNTEyLjI3NiA5MzIuNCAxMTQ0LjIgOTMyLjR6XCIgZmlsbD1cInVybCgjQylcIi8+PHBhdGggZD1cIk0yNjUuOCAxMjE1LjZjNjkwLjI0NiAwIDEyNDkuOC00NTUuNTk1IDEyNDkuOC0xMDE3LjZTOTU2LjA0Ni04MTkuNiAyNjUuOC04MTkuNi05ODQtMzY0LjAwNS05ODQgMTk4LTQyNC40NDUgMTIxNS42IDI2NS44IDEyMTUuNnpcIiBmaWxsPVwidXJsKCNEKVwiLz48L2c+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiQVwiIGN4PVwiMFwiIGN5PVwiMFwiIHI9XCIxXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTQ2Ni40IDM5My42KSByb3RhdGUoOTApIHNjYWxlKDE0MDEuNiAxNzIwLjgpXCI+PHN0b3Agc3RvcC1jb2xvcj1cIiMxMDdjMTBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYzRjNGM0XCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cIkJcIiBjeD1cIjBcIiBjeT1cIjBcIiByPVwiMVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDM5NC4yIDcxNCkgcm90YXRlKDkwKSBzY2FsZSgxMTAxLjYgMTM1MS44KVwiPjxzdG9wIHN0b3AtY29sb3I9XCIjMDA3OGQ0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2M0YzRjNFwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJDXCIgY3g9XCIwXCIgY3k9XCIwXCIgcj1cIjFcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgxNTQ4LjYgOTUyLjgpIHJvdGF0ZSg5MCkgc2NhbGUoOTMyLjQgMTE0NC4yKVwiPjxzdG9wIHN0b3AtY29sb3I9XCIjZmZiOTAwXCIgc3RvcC1vcGFjaXR5PVwiLjc1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2M0YzRjNFwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJEXCIgY3g9XCIwXCIgY3k9XCIwXCIgcj1cIjFcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNjUuOCAxOTgpIHJvdGF0ZSg5MCkgc2NhbGUoMTAxNy42IDEyNDkuOClcIj48c3RvcCBzdG9wLWNvbG9yPVwiI2Q4M2IwMVwiIHN0b3Atb3BhY2l0eT1cIi43NVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNjNGM0YzRcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjwvcmFkaWFsR3JhZGllbnQ+PGNsaXBQYXRoIGlkPVwiRVwiPjxwYXRoIGZpbGw9XCIjZmZmXCIgZD1cIk0wIDBoMTkyMHYxMDgwSDB6XCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPiJ9LCAiaGVhZGVyc1NpemUiOiAwLCAiYm9keVNpemUiOiA4MjQsICJyZWRpcmVjdFVSTCI6ICIiLCAiX3RyYW5zZmVyU2l6ZSI6IDgyNH0sICJjYWNoZSI6IHt9LCAidGltaW5ncyI6IHsiZG5zIjogLTEsICJjb25uZWN0IjogLTEsICJzc2wiOiAtMSwgInNlbmQiOiAwLCAid2FpdCI6IDExLjA4MywgInJlY2VpdmUiOiAzLjA0Mn0sICJwYWdlcmVmIjogInBhZ2VAODExMzdjZjM5Y2EwM2VlZWRhNWFhZWNiNzNmMGFmZTYiLCAic2VydmVySVBBZGRyZXNzIjogIlsyNjA2OjI4MDA6MjMzOjFjYjc6MjYxYjoxZjljOjIwNzQ6M2NdIiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMyIsICJzdWJqZWN0TmFtZSI6ICJpZGVudGl0eWNkbi5tc2F1dGgubmV0IiwgImlzc3VlciI6ICJNaWNyb3NvZnQgQXp1cmUgUlNBIFRMUyBJc3N1aW5nIENBIDA0IiwgInZhbGlkRnJvbSI6IDE3MTc3MTkxNzUsICJ2YWxpZFRvIjogMTc0ODgyMzE3NX19LCB7InN0YXJ0ZWREYXRlVGltZSI6ICIyMDI0LTA4LTAxVDIwOjMwOjA1Ljc3MVoiLCAidGltZSI6IDExLjA1NjAwMDAwMDAwMDAwMSwgInJlcXVlc3QiOiB7Im1ldGhvZCI6ICJHRVQiLCAidXJsIjogImh0dHBzOi8vbG9naW5jZG4ubXNmdGF1dGgubmV0L3NoYXJlZC81L2ltYWdlcy9zaWduaW5fb3B0aW9uc180ZTQ4MDQ2Y2U3NGY0Yjg5ZDQ1MC5zdmciLCAiaHR0cFZlcnNpb24iOiAiSFRUUC8yLjAiLCAiY29va2llcyI6IFtdLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiOmF1dGhvcml0eSIsICJ2YWx1ZSI6ICJsb2dpbmNkbi5tc2Z0YXV0aC5uZXQifSwgeyJuYW1lIjogIjptZXRob2QiLCAidmFsdWUiOiAiR0VUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvc2hhcmVkLzUvaW1hZ2VzL3NpZ25pbl9vcHRpb25zXzRlNDgwNDZjZTc0ZjRiODlkNDUwLnN2ZyJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogImltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLGltYWdlL3N2Zyt4bWwsaW1hZ2UvKiwqLyo7cT0wLjgifSwgeyJuYW1lIjogImFjY2VwdC1lbmNvZGluZyIsICJ2YWx1ZSI6ICJnemlwLCBkZWZsYXRlLCBiciwgenN0ZCJ9LCB7Im5hbWUiOiAiYWNjZXB0LWxhbmd1YWdlIiwgInZhbHVlIjogImVuLVVTLGVuO3E9MC45In0sIHsibmFtZSI6ICJwcmlvcml0eSIsICJ2YWx1ZSI6ICJpIn0sIHsibmFtZSI6ICJyZWZlcmVyIiwgInZhbHVlIjogImh0dHBzOi8vbG9naW4ubGl2ZS5jb20vIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEiLCAidmFsdWUiOiAiXCJDaHJvbWl1bVwiO3Y9XCIxMjdcIiwgXCJOb3QpQTtCcmFuZFwiO3Y9XCI5OVwiIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtbW9iaWxlIiwgInZhbHVlIjogIj8wIn0sIHsibmFtZSI6ICJzZWMtY2gtdWEtcGxhdGZvcm0iLCAidmFsdWUiOiAiXCJXaW5kb3dzXCIifSwgeyJuYW1lIjogInNlYy1mZXRjaC1kZXN0IiwgInZhbHVlIjogImltYWdlIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtbW9kZSIsICJ2YWx1ZSI6ICJuby1jb3JzIn0sIHsibmFtZSI6ICJzZWMtZmV0Y2gtc2l0ZSIsICJ2YWx1ZSI6ICJjcm9zcy1zaXRlIn0sIHsibmFtZSI6ICJ1c2VyLWFnZW50IiwgInZhbHVlIjogIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjcuMC42NTMzLjE3IFNhZmFyaS81MzcuMzYifV0sICJxdWVyeVN0cmluZyI6IFtdLCAiaGVhZGVyc1NpemUiOiA3MDgsICJib2R5U2l6ZSI6IDB9LCAicmVzcG9uc2UiOiB7InN0YXR1cyI6IDIwMCwgInN0YXR1c1RleHQiOiAiIiwgImh0dHBWZXJzaW9uIjogIkhUVFAvMi4wIiwgImNvb2tpZXMiOiBbXSwgImhlYWRlcnMiOiBbeyJuYW1lIjogImFjY2VwdC1yYW5nZXMiLCAidmFsdWUiOiAiYnl0ZXMifSwgeyJuYW1lIjogImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsICJ2YWx1ZSI6ICIqIn0sIHsibmFtZSI6ICJhY2Nlc3MtY29udHJvbC1leHBvc2UtaGVhZGVycyIsICJ2YWx1ZSI6ICJ4LW1zLXJlcXVlc3QtaWQsU2VydmVyLHgtbXMtdmVyc2lvbixDb250ZW50LVR5cGUsQ29udGVudC1FbmNvZGluZyxDYWNoZS1Db250cm9sLExhc3QtTW9kaWZpZWQsRVRhZyxDb250ZW50LU1ENSx4LW1zLWxlYXNlLXN0YXR1cyx4LW1zLWJsb2ItdHlwZSxDb250ZW50LUxlbmd0aCxEYXRlLFRyYW5zZmVyLUVuY29kaW5nIn0sIHsibmFtZSI6ICJhZ2UiLCAidmFsdWUiOiAiMTEyOTI2ODgifSwgeyJuYW1lIjogImNhY2hlLWNvbnRyb2wiLCAidmFsdWUiOiAicHVibGljLCBtYXgtYWdlPTMxNTM2MDAwIn0sIHsibmFtZSI6ICJjb250ZW50LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAifSwgeyJuYW1lIjogImNvbnRlbnQtbGVuZ3RoIiwgInZhbHVlIjogIjYyMSJ9LCB7Im5hbWUiOiAiY29udGVudC1tZDUiLCAidmFsdWUiOiAiUjJGQVZ4ZnBPTmZuUUF1eFZ4WGJIZz09In0sIHsibmFtZSI6ICJjb250ZW50LXR5cGUiLCAidmFsdWUiOiAiaW1hZ2Uvc3ZnK3htbCJ9LCB7Im5hbWUiOiAiZGF0ZSIsICJ2YWx1ZSI6ICJUaHUsIDAxIEF1ZyAyMDI0IDIwOjMwOjA1IEdNVCJ9LCB7Im5hbWUiOiAiZXRhZyIsICJ2YWx1ZSI6ICIweDhEQjc3MjU4MkQ0NTI3QyJ9LCB7Im5hbWUiOiAibGFzdC1tb2RpZmllZCIsICJ2YWx1ZSI6ICJUdWUsIDI3IEp1biAyMDIzIDE1OjQ1OjE5IEdNVCJ9LCB7Im5hbWUiOiAic2VydmVyIiwgInZhbHVlIjogIkVDQWNjIChmcmMvNEM5NykifSwgeyJuYW1lIjogInZhcnkiLCAidmFsdWUiOiAiQWNjZXB0LUVuY29kaW5nIn0sIHsibmFtZSI6ICJ4LWNhY2hlIiwgInZhbHVlIjogIkhJVCJ9LCB7Im5hbWUiOiAieC1tcy1ibG9iLXR5cGUiLCAidmFsdWUiOiAiQmxvY2tCbG9iIn0sIHsibmFtZSI6ICJ4LW1zLWxlYXNlLXN0YXR1cyIsICJ2YWx1ZSI6ICJ1bmxvY2tlZCJ9LCB7Im5hbWUiOiAieC1tcy1yZXF1ZXN0LWlkIiwgInZhbHVlIjogIjMyNzg5NzY5LTQwMWUtMDA3My01ZDljLTdkZDUyMDAwMDAwMCJ9LCB7Im5hbWUiOiAieC1tcy12ZXJzaW9uIiwgInZhbHVlIjogIjIwMDktMDktMTkifV0sICJjb250ZW50IjogeyJzaXplIjogMTU5MiwgIm1pbWVUeXBlIjogImltYWdlL3N2Zyt4bWwiLCAiY29tcHJlc3Npb24iOiA4MTksICJ0ZXh0IjogIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHZpZXdCb3g9XCIwIDAgNDggNDhcIj48ZGVmcz48c3R5bGU+LmF7ZmlsbDpub25lO30uYntmaWxsOiM0MDQwNDA7fTwvc3R5bGU+PC9kZWZzPjxyZWN0IGNsYXNzPVwiYVwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiLz48cGF0aCBjbGFzcz1cImJcIiBkPVwiTTQwLDMyLjU3OFY0MEgzMlYzNkgyOFYzMkgyNFYyOC43NjZBMTAuNjg5LDEwLjY4OSwwLDAsMSwxOSwzMGExMC45LDEwLjksMCwwLDEtNS41NDctMS41LDExLjEwNiwxMS4xMDYsMCwwLDEtMi4yMTktMS43MTlBMTEuMzczLDExLjM3MywwLDAsMSw5LjUsMjQuNTQ3YTEwLjQsMTAuNCwwLDAsMS0xLjEwOS0yLjYyNUExMS42MTYsMTEuNjE2LDAsMCwxLDgsMTlhMTAuOSwxMC45LDAsMCwxLDEuNS01LjU0NywxMS4xMDYsMTEuMTA2LDAsMCwxLDEuNzE5LTIuMjE5QTExLjM3MywxMS4zNzMsMCwwLDEsMTMuNDUzLDkuNWExMC40LDEwLjQsMCwwLDEsMi42MjUtMS4xMDlBMTEuNjE2LDExLjYxNiwwLDAsMSwxOSw4YTEwLjksMTAuOSwwLDAsMSw1LjU0NywxLjUsMTEuMTA2LDExLjEwNiwwLDAsMSwyLjIxOSwxLjcxOUExMS4zNzMsMTEuMzczLDAsMCwxLDI4LjUsMTMuNDUzYTEwLjQsMTAuNCwwLDAsMSwxLjEwOSwyLjYyNUExMS42MTYsMTEuNjE2LDAsMCwxLDMwLDE5YTEwLjAxNSwxMC4wMTUsMCwwLDEtLjEyNSwxLjU3OCwxMC44NzksMTAuODc5LDAsMCwxLS4zNTksMS41MzFabS0yLC44NDRMMjcuMjE5LDIyLjY0MWExNC43MTYsMTQuNzE2LDAsMCwwLC41NjItMS43ODJBNy43NTEsNy43NTEsMCwwLDAsMjgsMTlhOC43ODYsOC43ODYsMCwwLDAtLjctMy41LDguOSw4LjksMCwwLDAtMS45MzgtMi44NTlBOS4yNjksOS4yNjksMCwwLDAsMjIuNSwxMC43MTksOC45LDguOSwwLDAsMCwxOSwxMGE4Ljc4Niw4Ljc4NiwwLDAsMC0zLjUuNyw4LjksOC45LDAsMCwwLTIuODU5LDEuOTM4QTkuMjY5LDkuMjY5LDAsMCwwLDEwLjcxOSwxNS41LDguOSw4LjksMCwwLDAsMTAsMTlhOC43ODYsOC43ODYsMCwwLDAsLjcsMy41LDguOSw4LjksMCwwLDAsMS45MzgsMi44NTlBOS4yNjksOS4yNjksMCwwLDAsMTUuNSwyNy4yODFhOC44NDIsOC44NDIsMCwwLDAsNi40NjkuMkE4Ljc2Nyw4Ljc2NywwLDAsMCwyNC42MDksMjZIMjZ2NGg0djRoNHY0aDRaTTE2LDE0YTEuOTM4LDEuOTM4LDAsMCwxLC43ODEuMTU2LDIsMiwwLDAsMSwuNjI1LjQyMiwyLjE5MSwyLjE5MSwwLDAsMSwuNDM4LjY0MUExLjcwNSwxLjcwNSwwLDAsMSwxOCwxNmExLjkzOCwxLjkzOCwwLDAsMS0uMTU2Ljc4MSwyLDIsMCwwLDEtLjQyMi42MjUsMi4xOTEsMi4xOTEsMCwwLDEtLjY0MS40MzhBMS43MDUsMS43MDUsMCwwLDEsMTYsMThhMS45MzgsMS45MzgsMCwwLDEtLjc4MS0uMTU2LDIsMiwwLDAsMS0uNjI1LS40MjIsMi4xOTEsMi4xOTEsMCwwLDEtLjQzOC0uNjQxQTEuNzA1LDEuNzA1LDAsMCwxLDE0LDE2YTEuOTM4LDEuOTM4LDAsMCwxLC4xNTYtLjc4MSwyLDIsMCwwLDEsLjQyMi0uNjI1LDIuMTkxLDIuMTkxLDAsMCwxLC42NDEtLjQzOEExLjcwNSwxLjcwNSwwLDAsMSwxNiwxNFpcIi8+PC9zdmc+In0sICJoZWFkZXJzU2l6ZSI6IDAsICJib2R5U2l6ZSI6IDc3MywgInJlZGlyZWN0VVJMIjogIiIsICJfdHJhbnNmZXJTaXplIjogNzczfSwgImNhY2hlIjoge30sICJ0aW1pbmdzIjogeyJkbnMiOiAtMSwgImNvbm5lY3QiOiAtMSwgInNzbCI6IC0xLCAic2VuZCI6IDAsICJ3YWl0IjogNy4wNjEsICJyZWNlaXZlIjogMy45OTV9LCAicGFnZXJlZiI6ICJwYWdlQDgxMTM3Y2YzOWNhMDNlZWVkYTVhYWVjYjczZjBhZmU2IiwgInNlcnZlcklQQWRkcmVzcyI6ICJbMjYwNjoyODAwOjIzMzoxY2I3OjI2MWI6MWY5YzoyMDc0OjNjXSIsICJfc2VydmVyUG9ydCI6IDQ0MywgIl9zZWN1cml0eURldGFpbHMiOiB7InByb3RvY29sIjogIlRMUyAxLjMiLCAic3ViamVjdE5hbWUiOiAiaWRlbnRpdHljZG4ubXNhdXRoLm5ldCIsICJpc3N1ZXIiOiAiTWljcm9zb2Z0IEF6dXJlIFJTQSBUTFMgSXNzdWluZyBDQSAwNCIsICJ2YWxpZEZyb20iOiAxNzE3NzE5MTc1LCAidmFsaWRUbyI6IDE3NDg4MjMxNzV9fSwgeyJzdGFydGVkRGF0ZVRpbWUiOiAiMjAyNC0wOC0wMVQyMDozMDowNy40OTNaIiwgInRpbWUiOiAyMTU0LjUzODk5OTk5OTk5OTgsICJyZXF1ZXN0IjogeyJtZXRob2QiOiAiUE9TVCIsICJ1cmwiOiAiaHR0cHM6Ly9icm93c2VyLmV2ZW50cy5kYXRhLm1pY3Jvc29mdC5jb20vT25lQ29sbGVjdG9yLzEuMC8/Y29ycz10cnVlJmNvbnRlbnQtdHlwZT1hcHBsaWNhdGlvbi94LWpzb24tc3RyZWFtJnc9MCIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW10sICJoZWFkZXJzIjogW3sibmFtZSI6ICI6YXV0aG9yaXR5IiwgInZhbHVlIjogImJyb3dzZXIuZXZlbnRzLmRhdGEubWljcm9zb2Z0LmNvbSJ9LCB7Im5hbWUiOiAiOm1ldGhvZCIsICJ2YWx1ZSI6ICJQT1NUIn0sIHsibmFtZSI6ICI6cGF0aCIsICJ2YWx1ZSI6ICIvT25lQ29sbGVjdG9yLzEuMC8/Y29ycz10cnVlJmNvbnRlbnQtdHlwZT1hcHBsaWNhdGlvbi94LWpzb24tc3RyZWFtJnc9MCJ9LCB7Im5hbWUiOiAiOnNjaGVtZSIsICJ2YWx1ZSI6ICJodHRwcyJ9LCB7Im5hbWUiOiAiYWNjZXB0IiwgInZhbHVlIjogIiovKiJ9LCB7Im5hbWUiOiAiYWNjZXB0LWVuY29kaW5nIiwgInZhbHVlIjogImd6aXAsIGRlZmxhdGUsIGJyLCB6c3RkIn0sIHsibmFtZSI6ICJhY2NlcHQtbGFuZ3VhZ2UiLCAidmFsdWUiOiAiZW4tVVMsZW47cT0wLjkifSwgeyJuYW1lIjogImFwaWtleSIsICJ2YWx1ZSI6ICI2OWFkYzNjNzY4YmQ0ZGMwOGMxOTQxNjEyMTI0OWZjYy02NmYxNjY4YS03OTdiLTQyNDktOTVlMy02YzY2NTE3NjhjMjgtNzI5MyJ9LCB7Im5hbWUiOiAiY2FjaGUtY29udHJvbCIsICJ2YWx1ZSI6ICJuby1jYWNoZSwgbm8tc3RvcmUifSwgeyJuYW1lIjogImNsaWVudC1pZCIsICJ2YWx1ZSI6ICJOT19BVVRIIn0sIHsibmFtZSI6ICJjbGllbnQtdmVyc2lvbiIsICJ2YWx1ZSI6ICIxRFMtV2ViLUpTLTMuMi4xNSJ9LCB7Im5hbWUiOiAiY29udGVudC1sZW5ndGgiLCAidmFsdWUiOiAiNDQyNyJ9LCB7Im5hbWUiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogImFwcGxpY2F0aW9uL3gtanNvbi1zdHJlYW0ifSwgeyJuYW1lIjogIm9yaWdpbiIsICJ2YWx1ZSI6ICJodHRwczovL2xvZ2luLmxpdmUuY29tIn0sIHsibmFtZSI6ICJwcmlvcml0eSIsICJ2YWx1ZSI6ICJ1PTEsIGkifSwgeyJuYW1lIjogInJlZmVyZXIiLCAidmFsdWUiOiAiaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS8ifSwgeyJuYW1lIjogInNlYy1jaC11YSIsICJ2YWx1ZSI6ICJcIkNocm9taXVtXCI7dj1cIjEyN1wiLCBcIk5vdClBO0JyYW5kXCI7dj1cIjk5XCIifSwgeyJuYW1lIjogInNlYy1jaC11YS1tb2JpbGUiLCAidmFsdWUiOiAiPzAifSwgeyJuYW1lIjogInNlYy1jaC11YS1wbGF0Zm9ybSIsICJ2YWx1ZSI6ICJcIldpbmRvd3NcIiJ9LCB7Im5hbWUiOiAic2VjLWZldGNoLWRlc3QiLCAidmFsdWUiOiAiZW1wdHkifSwgeyJuYW1lIjogInNlYy1mZXRjaC1tb2RlIiwgInZhbHVlIjogImNvcnMifSwgeyJuYW1lIjogInNlYy1mZXRjaC1zaXRlIiwgInZhbHVlIjogImNyb3NzLXNpdGUifSwgeyJuYW1lIjogInRpbWUtZGVsdGEtdG8tYXBwbHktbWlsbGlzIiwgInZhbHVlIjogInVzZS1jb2xsZWN0b3ItZGVsdGEifSwgeyJuYW1lIjogInVwbG9hZC10aW1lIiwgInZhbHVlIjogIjE3MjI1NDQyMDc0ODQifSwgeyJuYW1lIjogInVzZXItYWdlbnQiLCAidmFsdWUiOiAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyNy4wLjY1MzMuMTcgU2FmYXJpLzUzNy4zNiJ9XSwgInF1ZXJ5U3RyaW5nIjogW3sibmFtZSI6ICJjb3JzIiwgInZhbHVlIjogInRydWUifSwgeyJuYW1lIjogImNvbnRlbnQtdHlwZSIsICJ2YWx1ZSI6ICJhcHBsaWNhdGlvbi94LWpzb24tc3RyZWFtIn0sIHsibmFtZSI6ICJ3IiwgInZhbHVlIjogIjAifV0sICJoZWFkZXJzU2l6ZSI6IDk4NiwgImJvZHlTaXplIjogNDQyNywgInBvc3REYXRhIjogeyJtaW1lVHlwZSI6ICJhcHBsaWNhdGlvbi94LWpzb24tc3RyZWFtIiwgInRleHQiOiAie1wibmFtZVwiOlwiSURVWF9DbGllbnRUZWxlbWV0cnlfUGx0RXZlbnRzXCIsXCJ0aW1lXCI6XCIyMDI0LTA4LTAxVDIwOjMwOjA1LjQ2OVpcIixcInZlclwiOlwiNC4wXCIsXCJpS2V5XCI6XCJvOjY5YWRjM2M3NjhiZDRkYzA4YzE5NDE2MTIxMjQ5ZmNjXCIsXCJleHRcIjp7XCJzZGtcIjp7XCJ2ZXJcIjpcIjFEUy1XZWItSlMtMy4yLjE1XCIsXCJzZXFcIjoxLFwiaW5zdGFsbElkXCI6XCI1MzM5OTgwMS03ODk2LTQwY2MtOWNmMy04ZjExNWEwMmVjNjFcIixcImVwb2NoXCI6XCIyMzMyMzU4NzU0XCJ9LFwiYXBwXCI6e1wibG9jYWxlXCI6XCJFTi1VU1wiLFwic2VzSWRcIjpcIjNoMXZqaGhjbUVaSHlFUlNsZnRQeUlcIn0sXCJ1c2VyXCI6e1wibG9jYWxlXCI6XCJlbi1VU1wifSxcIndlYlwiOntcImRvbWFpblwiOlwibG9naW4ubGl2ZS5jb21cIixcInVzZXJDb25zZW50XCI6ZmFsc2UsXCJjb25zZW50RGV0YWlsc1wiOlwie1xcXCJHUENfRGF0YVNoYXJpbmdPcHRJblxcXCI6ZmFsc2V9XCJ9LFwiaW50d2ViXCI6e30sXCJ1dGNcIjp7XCJwb3BTYW1wbGVcIjoxMDAsXCJldmVudEZsYWdzXCI6MTA0ODU3Nn0sXCJsb2NcIjp7XCJ0elwiOlwiKzAwOjAwXCJ9LFwibWV0YWRhdGFcIjp7XCJmXCI6e1wicGx0VHJhbnNmZXJCdWNrZXRcIjp7XCJ0XCI6Nn0sXCJzdGFydFRpbWVcIjp7XCJ0XCI6Nn0sXCJkdXJhdGlvblwiOntcInRcIjo2fSxcIndvcmtlclN0YXJ0XCI6e1widFwiOjZ9LFwicmVkaXJlY3RTdGFydFwiOntcInRcIjo2fSxcInJlZGlyZWN0RW5kXCI6e1widFwiOjZ9LFwiZmV0Y2hTdGFydFwiOntcInRcIjo2fSxcImRvbWFpbkxvb2t1cFN0YXJ0XCI6e1widFwiOjZ9LFwiZG9tYWluTG9va3VwRW5kXCI6e1widFwiOjZ9LFwiY29ubmVjdFN0YXJ0XCI6e1widFwiOjZ9LFwic2VjdXJlQ29ubmVjdGlvblN0YXJ0XCI6e1widFwiOjZ9LFwiY29ubmVjdEVuZFwiOntcInRcIjo2fSxcInJlcXVlc3RTdGFydFwiOntcInRcIjo2fSxcInJlc3BvbnNlU3RhcnRcIjp7XCJ0XCI6Nn0sXCJmaXJzdEludGVyaW1SZXNwb25zZVN0YXJ0XCI6e1widFwiOjZ9LFwicmVzcG9uc2VFbmRcIjp7XCJ0XCI6Nn0sXCJ0cmFuc2ZlclNpemVcIjp7XCJ0XCI6Nn0sXCJlbmNvZGVkQm9keVNpemVcIjp7XCJ0XCI6Nn0sXCJkZWNvZGVkQm9keVNpemVcIjp7XCJ0XCI6Nn0sXCJyZXNwb25zZVN0YXR1c1wiOntcInRcIjo2fSxcInVubG9hZEV2ZW50U3RhcnRcIjp7XCJ0XCI6Nn0sXCJ1bmxvYWRFdmVudEVuZFwiOntcInRcIjo2fSxcImRvbUludGVyYWN0aXZlXCI6e1widFwiOjZ9LFwiZG9tQ29udGVudExvYWRlZEV2ZW50U3RhcnRcIjp7XCJ0XCI6Nn0sXCJkb21Db250ZW50TG9hZGVkRXZlbnRFbmRcIjp7XCJ0XCI6Nn0sXCJkb21Db21wbGV0ZVwiOntcInRcIjo2fSxcImxvYWRFdmVudFN0YXJ0XCI6e1widFwiOjZ9LFwibG9hZEV2ZW50RW5kXCI6e1widFwiOjZ9LFwicmVkaXJlY3RDb3VudFwiOntcInRcIjo2fSxcImFjdGl2YXRpb25TdGFydFwiOntcInRcIjo2fSxcImNyaXRpY2FsQ0hSZXN0YXJ0XCI6e1widFwiOjZ9fX19LFwiZGF0YVwiOntcImJhc2VEYXRhXCI6e1wicHJvcGVydGllc1wiOntcInZlcnNpb25cIjpcIlBvc3RDaGFubmVsPTMuMi4xNTtTeXN0ZW1Qcm9wZXJ0aWVzQ29sbGVjdG9yPTMuMi4xNVwifX0sXCJpc1BsdDFcIjpmYWxzZSxcInBsdFRyYW5zZmVyQnVja2V0XCI6MTEsXCJuYW1lXCI6XCJodHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZj8qKlwiLFwiZW50cnlUeXBlXCI6XCJuYXZpZ2F0aW9uXCIsXCJzdGFydFRpbWVcIjowLFwiZHVyYXRpb25cIjoxNzA4LjIwMDAwMDc2MjkzOTUsXCJpbml0aWF0b3JUeXBlXCI6XCJuYXZpZ2F0aW9uXCIsXCJuZXh0SG9wUHJvdG9jb2xcIjpcImh0dHAvMS4xXCIsXCJyZW5kZXJCbG9ja2luZ1N0YXR1c1wiOlwibm9uLWJsb2NraW5nXCIsXCJ3b3JrZXJTdGFydFwiOjAsXCJyZWRpcmVjdFN0YXJ0XCI6MCxcInJlZGlyZWN0RW5kXCI6MCxcImZldGNoU3RhcnRcIjo2ODkuNjAwMDAwMzgxNDY5NyxcImRvbWFpbkxvb2t1cFN0YXJ0XCI6ODYzLFwiZG9tYWluTG9va3VwRW5kXCI6ODYzLjEwMDAwMDM4MTQ2OTcsXCJjb25uZWN0U3RhcnRcIjo4NjMuMTAwMDAwMzgxNDY5NyxcInNlY3VyZUNvbm5lY3Rpb25TdGFydFwiOjg3NC45MDAwMDA1NzIyMDQ2LFwiY29ubmVjdEVuZFwiOjkwNy41LFwicmVxdWVzdFN0YXJ0XCI6OTA3LjgwMDAwMDE5MDczNDksXCJyZXNwb25zZVN0YXJ0XCI6MTA1Ny42MDAwMDAzODE0Njk3LFwiZmlyc3RJbnRlcmltUmVzcG9uc2VTdGFydFwiOjAsXCJyZXNwb25zZUVuZFwiOjEwNjIuNDAwMDAwNTcyMjA0NixcInRyYW5zZmVyU2l6ZVwiOjExMjI5LFwiZW5jb2RlZEJvZHlTaXplXCI6MTA5MjksXCJkZWNvZGVkQm9keVNpemVcIjoyNjMwOCxcInJlc3BvbnNlU3RhdHVzXCI6MjAwLFwidW5sb2FkRXZlbnRTdGFydFwiOjAsXCJ1bmxvYWRFdmVudEVuZFwiOjAsXCJkb21JbnRlcmFjdGl2ZVwiOjE2ODIuNjAwMDAwMzgxNDY5NyxcImRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0XCI6MTY4Mi42MDAwMDAzODE0Njk3LFwiZG9tQ29udGVudExvYWRlZEV2ZW50RW5kXCI6MTY4Mi42MDAwMDAzODE0Njk3LFwiZG9tQ29tcGxldGVcIjoxNzA0LjYwMDAwMDM4MTQ2OTcsXCJsb2FkRXZlbnRTdGFydFwiOjE3MDQuNjAwMDAwMzgxNDY5NyxcImxvYWRFdmVudEVuZFwiOjE3MDguMjAwMDAwNzYyOTM5NSxcInR5cGVcIjpcIm5hdmlnYXRlXCIsXCJyZWRpcmVjdENvdW50XCI6MCxcImFjdGl2YXRpb25TdGFydFwiOjAsXCJjcml0aWNhbENIUmVzdGFydFwiOjAsXCJkaW1lbnNpb25zXCI6e1widmlld1wiOlwiTm9uZVwiLFwiZmxvd1wiOlwiTG9naW5cIixcImZsYXZvclwiOlwiZmFicmljXCIsXCJjb3JyZWxhdGlvbklkXCI6XCIwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNlwiLFwiaG9zdFBhZ2VJZFwiOlwiMzNcIixcInB1aWRcIjpcIlwiLFwiY2xpZW50RmxpZ2h0XCI6XCJcIixcImJ1bmRsZVZlcnNpb25cIjpcIlwiLFwiY2xpZW50SWRcIjpcIlwifX19XG57XCJuYW1lXCI6XCJJRFVYX0NsaWVudFRlbGVtZXRyeV9TZXJ2aWNlRGlhZ1wiLFwidGltZVwiOlwiMjAyNC0wOC0wMVQyMDozMDowNS43NTFaXCIsXCJ2ZXJcIjpcIjQuMFwiLFwiaUtleVwiOlwibzo2OWFkYzNjNzY4YmQ0ZGMwOGMxOTQxNjEyMTI0OWZjY1wiLFwiZXh0XCI6e1wic2RrXCI6e1widmVyXCI6XCIxRFMtV2ViLUpTLTMuMi4xNVwiLFwic2VxXCI6MixcImluc3RhbGxJZFwiOlwiNTMzOTk4MDEtNzg5Ni00MGNjLTljZjMtOGYxMTVhMDJlYzYxXCIsXCJlcG9jaFwiOlwiMjMzMjM1ODc1NFwifSxcImFwcFwiOntcImxvY2FsZVwiOlwiRU4tVVNcIixcInNlc0lkXCI6XCIzaDF2amhoY21FWkh5RVJTbGZ0UHlJXCJ9LFwidXNlclwiOntcImxvY2FsZVwiOlwiZW4tVVNcIn0sXCJ3ZWJcIjp7XCJkb21haW5cIjpcImxvZ2luLmxpdmUuY29tXCIsXCJ1c2VyQ29uc2VudFwiOmZhbHNlLFwiY29uc2VudERldGFpbHNcIjpcIntcXFwiR1BDX0RhdGFTaGFyaW5nT3B0SW5cXFwiOmZhbHNlfVwifSxcImludHdlYlwiOnt9LFwidXRjXCI6e1wicG9wU2FtcGxlXCI6MTAwLFwiZXZlbnRGbGFnc1wiOjEwNDg1NzZ9LFwibG9jXCI6e1widHpcIjpcIiswMDowMFwifX0sXCJkYXRhXCI6e1wiYmFzZURhdGFcIjp7XCJwcm9wZXJ0aWVzXCI6e1widmVyc2lvblwiOlwiUG9zdENoYW5uZWw9My4yLjE1O1N5c3RlbVByb3BlcnRpZXNDb2xsZWN0b3I9My4yLjE1XCJ9fSxcIm1ldHJpY05hbWVcIjpcIlZpZXdBY3RpdmF0aW9uXCIsXCJtZXRyaWNWYWx1ZVwiOlwiMVwiLFwiZGltZW5zaW9uc1wiOntcInZpZXdcIjpcIlVzZXJuYW1lXCIsXCJmbG93XCI6XCJMb2dpblwiLFwiZmxhdm9yXCI6XCJmYWJyaWNcIixcImNvcnJlbGF0aW9uSWRcIjpcIjA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2XCIsXCJob3N0UGFnZUlkXCI6XCIzM1wiLFwicHVpZFwiOlwiXCIsXCJjbGllbnRGbGlnaHRcIjpcIlwiLFwiYnVuZGxlVmVyc2lvblwiOlwiXCIsXCJjbGllbnRJZFwiOlwiXCJ9fX1cbntcIm5hbWVcIjpcIklEVVhfQ2xpZW50VGVsZW1ldHJ5X1NlcnZpY2VEaWFnXCIsXCJ0aW1lXCI6XCIyMDI0LTA4LTAxVDIwOjMwOjA1Ljc3NFpcIixcInZlclwiOlwiNC4wXCIsXCJpS2V5XCI6XCJvOjY5YWRjM2M3NjhiZDRkYzA4YzE5NDE2MTIxMjQ5ZmNjXCIsXCJleHRcIjp7XCJzZGtcIjp7XCJ2ZXJcIjpcIjFEUy1XZWItSlMtMy4yLjE1XCIsXCJzZXFcIjozLFwiaW5zdGFsbElkXCI6XCI1MzM5OTgwMS03ODk2LTQwY2MtOWNmMy04ZjExNWEwMmVjNjFcIixcImVwb2NoXCI6XCIyMzMyMzU4NzU0XCJ9LFwiYXBwXCI6e1wibG9jYWxlXCI6XCJFTi1VU1wiLFwic2VzSWRcIjpcIjNoMXZqaGhjbUVaSHlFUlNsZnRQeUlcIn0sXCJ1c2VyXCI6e1wibG9jYWxlXCI6XCJlbi1VU1wifSxcIndlYlwiOntcImRvbWFpblwiOlwibG9naW4ubGl2ZS5jb21cIixcInVzZXJDb25zZW50XCI6ZmFsc2UsXCJjb25zZW50RGV0YWlsc1wiOlwie1xcXCJHUENfRGF0YVNoYXJpbmdPcHRJblxcXCI6ZmFsc2V9XCJ9LFwiaW50d2ViXCI6e30sXCJ1dGNcIjp7XCJwb3BTYW1wbGVcIjoxMDAsXCJldmVudEZsYWdzXCI6MTA0ODU3Nn0sXCJsb2NcIjp7XCJ0elwiOlwiKzAwOjAwXCJ9fSxcImRhdGFcIjp7XCJiYXNlRGF0YVwiOntcInByb3BlcnRpZXNcIjp7XCJ2ZXJzaW9uXCI6XCJQb3N0Q2hhbm5lbD0zLjIuMTU7U3lzdGVtUHJvcGVydGllc0NvbGxlY3Rvcj0zLjIuMTVcIn19LFwiZGltZW5zaW9uc1wiOntcInZpZXdcIjpcIlVzZXJuYW1lXCIsXCJmbG93XCI6XCJMb2dpblwiLFwiZmxhdm9yXCI6XCJmYWJyaWNcIixcImNvcnJlbGF0aW9uSWRcIjpcIjA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2XCIsXCJob3N0UGFnZUlkXCI6XCIzM1wiLFwicHVpZFwiOlwiXCIsXCJjbGllbnRGbGlnaHRcIjpcIlwiLFwiYnVuZGxlVmVyc2lvblwiOlwiXCIsXCJjbGllbnRJZFwiOlwiXCJ9LFwibWV0cmljTmFtZVwiOlwiSWZyYW1lTG9hZER1cmF0aW9uX0RGUFwiLFwibWV0cmljVmFsdWVcIjpcIjEyNVwifX0iLCAicGFyYW1zIjogW119fSwgInJlc3BvbnNlIjogeyJzdGF0dXMiOiAyMDAsICJzdGF0dXNUZXh0IjogIiIsICJodHRwVmVyc2lvbiI6ICJIVFRQLzIuMCIsICJjb29raWVzIjogW3sibmFtZSI6ICJNQzEiLCAidmFsdWUiOiAiR1VJRD1lNDMxNTU4OTU4ODU0ODE5YTZlNGU5MTU0OTJjNDhjNyZIQVNIPWU0MzEmTFY9MjAyNDA4JlY9NCZMVT0xNzIyNTQ0MjA5MTAyIiwgImRvbWFpbiI6ICIubWljcm9zb2Z0LmNvbSIsICJleHBpcmVzIjogIjIwMjUtMDgtMDFUMjA6MzA6MDkuMDAwWiIsICJwYXRoIjogIi8iLCAic2VjdXJlIjogdHJ1ZSwgInNhbWVTaXRlIjogIk5vbmUifSwgeyJuYW1lIjogIk1TMCIsICJ2YWx1ZSI6ICI3Y2JkNzFhYjdlNzI0YWM5ODU0NjkzZTkwZmE4MDkwNyIsICJkb21haW4iOiAiLm1pY3Jvc29mdC5jb20iLCAiZXhwaXJlcyI6ICIyMDI0LTA4LTAxVDIxOjAwOjA5LjAwMFoiLCAicGF0aCI6ICIvIiwgInNlY3VyZSI6IHRydWUsICJzYW1lU2l0ZSI6ICJOb25lIn1dLCAiaGVhZGVycyI6IFt7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtYWxsb3ctY3JlZGVudGlhbHMiLCAidmFsdWUiOiAidHJ1ZSJ9LCB7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtYWxsb3ctaGVhZGVycyIsICJ2YWx1ZSI6ICJQM1AsU2V0LUNvb2tpZSx0aW1lLWRlbHRhLW1pbGxpcyJ9LCB7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtYWxsb3ctbWV0aG9kcyIsICJ2YWx1ZSI6ICJQT1NUIn0sIHsibmFtZSI6ICJhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4iLCAidmFsdWUiOiAiaHR0cHM6Ly9sb2dpbi5saXZlLmNvbSJ9LCB7Im5hbWUiOiAiYWNjZXNzLWNvbnRyb2wtZXhwb3NlLWhlYWRlcnMiLCAidmFsdWUiOiAidGltZS1kZWx0YS1taWxsaXMifSwgeyJuYW1lIjogImNvbnRlbnQtbGVuZ3RoIiwgInZhbHVlIjogIjE1MyJ9LCB7Im5hbWUiOiAiY29udGVudC10eXBlIiwgInZhbHVlIjogImFwcGxpY2F0aW9uL2pzb24ifSwgeyJuYW1lIjogImRhdGUiLCAidmFsdWUiOiAiVGh1LCAwMSBBdWcgMjAyNCAyMDozMDowOCBHTVQifSwgeyJuYW1lIjogInAzcCIsICJ2YWx1ZSI6ICJDUD1cIkFMTCBJTkQgRFNQIENPUiBBRE0gQ09ObyBDVVIgQ1VTbyBJVkFvIElWRG8gUFNBIFBTRCBUQUkgVEVMbyBPVVIgU0FNbyBDTlQgQ09NIElOVCBOQVYgT05MIFBIWSBQUkUgUFVSIFVOSVwiIn0sIHsibmFtZSI6ICJzZXJ2ZXIiLCAidmFsdWUiOiAiTWljcm9zb2Z0LUhUVFBBUEkvMi4wIn0sIHsibmFtZSI6ICJzZXQtY29va2llIiwgInZhbHVlIjogIk1DMT1HVUlEPWU0MzE1NTg5NTg4NTQ4MTlhNmU0ZTkxNTQ5MmM0OGM3JkhBU0g9ZTQzMSZMVj0yMDI0MDgmVj00JkxVPTE3MjI1NDQyMDkxMDI7IERvbWFpbj0ubWljcm9zb2Z0LmNvbTsgRXhwaXJlcz1GcmksIDAxIEF1ZyAyMDI1IDIwOjMwOjA5IEdNVDsgUGF0aD0vO1NlY3VyZTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAic2V0LWNvb2tpZSIsICJ2YWx1ZSI6ICJNUzA9N2NiZDcxYWI3ZTcyNGFjOTg1NDY5M2U5MGZhODA5MDc7IERvbWFpbj0ubWljcm9zb2Z0LmNvbTsgRXhwaXJlcz1UaHUsIDAxIEF1ZyAyMDI0IDIxOjAwOjA5IEdNVDsgUGF0aD0vO1NlY3VyZTsgU2FtZVNpdGU9Tm9uZSJ9LCB7Im5hbWUiOiAic3RyaWN0LXRyYW5zcG9ydC1zZWN1cml0eSIsICJ2YWx1ZSI6ICJtYXgtYWdlPTMxNTM2MDAwIn0sIHsibmFtZSI6ICJ0aW1lLWRlbHRhLW1pbGxpcyIsICJ2YWx1ZSI6ICIxNjE4In1dLCAiY29udGVudCI6IHsic2l6ZSI6IDE1MywgIm1pbWVUeXBlIjogImFwcGxpY2F0aW9uL2pzb24iLCAiY29tcHJlc3Npb24iOiAwLCAidGV4dCI6ICJ7XCJhY2NcIjozLFwid2ViUmVzdWx0XCI6e1wibXNmcGNcIjpcIkdVSUQ9ZTQzMTU1ODk1ODg1NDgxOWE2ZTRlOTE1NDkyYzQ4YzcmSEFTSD1lNDMxJkxWPTIwMjQwOCZWPTQmTFU9MTcyMjU0NDIwOTEwMlwiLFwibWMxXCI6XCJlNDMxNTU4OTU4ODU0ODE5YTZlNGU5MTU0OTJjNDhjN1wifX0ifSwgImhlYWRlcnNTaXplIjogMCwgImJvZHlTaXplIjogNzU4LCAicmVkaXJlY3RVUkwiOiAiIiwgIl90cmFuc2ZlclNpemUiOiA3NTh9LCAiY2FjaGUiOiB7fSwgInRpbWluZ3MiOiB7ImRucyI6IDAuMDI4LCAiY29ubmVjdCI6IDQ5MS43MDcsICJzc2wiOiAzMzMuNDk2LCAic2VuZCI6IDAsICJ3YWl0IjogMzQ2LjIxMywgInJlY2VpdmUiOiA5ODMuMDk1fSwgInBhZ2VyZWYiOiAicGFnZUA4MTEzN2NmMzljYTAzZWVlZGE1YWFlY2I3M2YwYWZlNiIsICJzZXJ2ZXJJUEFkZHJlc3MiOiAiMjAuMTg5LjE3My40IiwgIl9zZXJ2ZXJQb3J0IjogNDQzLCAiX3NlY3VyaXR5RGV0YWlscyI6IHsicHJvdG9jb2wiOiAiVExTIDEuMyIsICJzdWJqZWN0TmFtZSI6ICIqLmV2ZW50cy5kYXRhLm1pY3Jvc29mdC5jb20iLCAiaXNzdWVyIjogIk1pY3Jvc29mdCBBenVyZSBSU0EgVExTIElzc3VpbmcgQ0EgMDQiLCAidmFsaWRGcm9tIjogMTcxODQ5NzkwOSwgInZhbGlkVG8iOiAxNzQ5NjAxOTA5fX1dfX0=","disable_correlation":true,"to_ids":false,"type":"attachment","uuid":"1b938246-ee50-4b79-82c5-f3256768b014","value":"har.json"},{"category":"External analysis","comment":"The rendered page at the end of the capture","data":"PCFET0NUWVBFIGh0bWw+PGh0bWwgZGlyPSJsdHIiIGxhbmc9IkVOLVVTIj48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+PG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1FZGdlIj48bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vYWNjdGNkbi5tc2F1dGgubmV0IiBjcm9zc29yaWdpbj0iIj4KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2FjY3RjZG4ubXNmdGF1dGgubmV0IiBjcm9zc29yaWdpbj0iIj4KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2xvZ2luY2RuLm1zZnRhdXRoLm5ldCIgY3Jvc3NvcmlnaW49IiI+CjxtZXRhIGh0dHAtZXF1aXY9IngtZG5zLXByZWZldGNoLWNvbnRyb2wiIGNvbnRlbnQ9Im9uIj4KPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYWNjdGNkbi5tc2F1dGgubmV0LyI+CjxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2FjY3RjZG4ubXNmdGF1dGgubmV0LyI+CjxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2FjY3RjZG5tc2Z0dXN3ZTIuYXp1cmVlZGdlLm5ldC8iPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hY2N0Y2RudnpldW5vLmF6dXJlZWRnZS5uZXQvIj4KPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vbG9naW5jZG4ubXNhdXRoLm5ldC8iPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvIj4KPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vbGdpbmNkbnZ6ZXVuby5henVyZWVkZ2UubmV0LyI+CjxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2xnaW5jZG5tc2Z0dXN3ZTIuYXp1cmVlZGdlLm5ldC8iPgo8YmFzZSBocmVmPSJodHRwczovL2xvZ2luLmxpdmUuY29tIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Ino4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9Ij50cnl7ZG9jdW1lbnQmJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXImJihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoZnVuY3Rpb24oZSl7ZS50YXJnZXQmJiJoYW5kbGUtZXJyb3ItdGFnIj09PWUudGFyZ2V0LmNsYXNzTmFtZSYmJExvYWRlci5PbihlLnRhcmdldCl9KSwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLChmdW5jdGlvbihlKXtlLnRhcmdldCYmImhhbmRsZS1lcnJvci10YWciPT09ZS50YXJnZXQuY2xhc3NOYW1lJiYkTG9hZGVyLk9uKGUudGFyZ2V0LCEwKX0pLCEwKSl9Y2F0Y2goZSl7fTwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBub25jZT0iejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT0iPnZhciBQUk9PRiA9IHt9O1BST09GLlR5cGUgPSB7U1FTQTogNiwgQ1NTOiA1LCBEZXZpY2VJZDogNCwgRW1haWw6IDEsIEFsdEVtYWlsOiAyLCBTTVM6IDMsIEhJUDogOCwgQmlydGhkYXk6IDksIFRPVFBBdXRoZW50aWNhdG9yOiAxMCwgUmVjb3ZlcnlDb2RlOiAxMSwgU3Ryb25nVGlja2V0OiAxMywgVE9UUEF1dGhlbnRpY2F0b3JWMjogMTQsIFVuaXZlcnNhbFNlY29uZEZhY3RvcjogMTUsIFNlY3VyaXR5S2V5OiAxOCwgVm9pY2U6IC0zfTs8L3NjcmlwdD48bm9zY3JpcHQ+PG1ldGEgaHR0cC1lcXVpdj0iUmVmcmVzaCIgY29udGVudD0iMDsgVVJMPWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vanNEaXNhYmxlZC5zcmY/bWt0PUVOLVVTJmxjPTEwMzMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiIvPk1pY3Jvc29mdCBhY2NvdW50IHJlcXVpcmVzIEphdmFTY3JpcHQgdG8gc2lnbiBpbi4gVGhpcyB3ZWIgYnJvd3NlciBlaXRoZXIgZG9lcyBub3Qgc3VwcG9ydCBKYXZhU2NyaXB0LCBvciBzY3JpcHRzIGFyZSBiZWluZyBibG9ja2VkLjxiciAvPjxiciAvPlRvIGZpbmQgb3V0IHdoZXRoZXIgeW91ciBicm93c2VyIHN1cHBvcnRzIEphdmFTY3JpcHQsIG9yIHRvIGFsbG93IHNjcmlwdHMsIHNlZSB0aGUgYnJvd3NlcidzIG9ubGluZSBoZWxwLjwvbm9zY3JpcHQ+PHRpdGxlPlNpZ24gaW4gdG8geW91ciBNaWNyb3NvZnQgYWNjb3VudDwvdGl0bGU+PG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub25lIj48bWV0YSBuYW1lPSJQYWdlSUQiIGNvbnRlbnQ9Imk1MDMwIj48bWV0YSBuYW1lPSJTaXRlSUQiIGNvbnRlbnQ9IjM4OTM2Ij48bWV0YSBuYW1lPSJSZXFMQyIgY29udGVudD0iMTAzMyI+PG1ldGEgbmFtZT0iTG9jTEMiIGNvbnRlbnQ9IjEwMzMiPjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTIuMCwgbWluaW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9eWVzIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Ino4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9Ij52YXIgU2VydmVyRGF0YSA9IHtmRml4VXJsUmVzZXRQYXNzd29yZDpmYWxzZSxlQ0JCcmFuZE1vZGU6MixmQWN0aXZhdGVGb2N1c09uQXBwcm92YWxOdW1iZXJSZW1vdGVOR0M6ZmFsc2UsZkNCQnJhbmRTaG93VmFsdWVQcm9wOnRydWUsZkNCVXNlTW9kZXJuQ29icmFuZGluZzp0cnVlLHVybFBvc3RNc2E6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vcHBzZWN1cmUvcG9zdC5zcmY/bWt0PWVuLVVTJmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZiaz0xNzIyNTQ0MjA0JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmcGlkPTAnLGZVcGdyYWRlRVZDZXJ0OnRydWUsZklzQm91bmRBY2NvdW50OmZhbHNlLGZJc1Bhc3NrZXlTdXBwb3J0RW5hYmxlZDp0cnVlLGlMb2dpblN0cmluZ3NWYXJpYW50SWQ6MCxmRW5hYmxlQ2xpZW50UGVyZjpmYWxzZSxpUHJvbW90ZWRGZWRDcmVkVHlwZTowLGZIYXNFcnJvcjpmYWxzZSxmSXNPdGNMb2dpbkRpc2FibGVkOmZhbHNlLHVybEZpZG9IZWxwOidodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjAxMzczOCcsZklzUmVtb3RlTkdDU3VwcG9ydGVkOnRydWUsdXJsRm9vdGVySGVscDonJyxzQ0lEOicnLGZIaWRlTG9naW5EZXNjOmZhbHNlLGZLTVNJRW5hYmxlZDpmYWxzZSx1cmxNYW5hZ2VDcmVkczonJyxmVXNlSGlnaENvbnRyYXN0T3ZlcnJpZGVzOmZhbHNlLHNQcmVmU01TQ291bnRyeTonTFUnLHVybE1TQWNjb3VudEhlbHA6J2h0dHBzOi8vZ28ubWljcm9zb2Z0LmNvbS9md2xpbmsvP0xpbmtJRD0yNTQ0ODYnLHVybENCUGFydG5lclByZWxvYWQ6JycsdXJsUmVwb3J0UGFnZUxvYWQ6Jycsc1BPU1RfUGFnaW5hdGVkTG9naW5TdGF0ZVJOR0NTTEs6JycsdXJsRVZDZXJ0VXBncmFkZTonJyxzUHJvb2ZUeXBlOicnLHVybEZpZG9Mb2dpbjonaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnQuY29tL2NvbnN1bWVycy9maWRvL2dldD9ta3Q9RU4tVVMmbGM9MTAzMyZ1aWZsYXZvcj13ZWInLHVybExvZ2luOidodHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZj9pZD0zODkzNiZpZD0zODkzNiZjb250ZXh0aWQ9MDg5NTI2NDFDMjIxQ0Y5QSZvcGlkPUQzNUJDOEI1M0EzMUUyQTcmYms9MTcyMjU0NDIwNCZta3Q9RU4tVVMmbGM9MTAzMyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JyxmTU1YUVJOZXdEZXNjcmlwdGlvbjp0cnVlLHVybEZvb3RlclRPVTonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9nbHMuc3JmP3VybElEPVdpbkxpdmVUZXJtc09mVXNlJm1rdD1FTi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jyx1cmxDaGFuZ2VQYXNzd29yZDonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL0NoYW5nZVBhc3N3b3JkP3VhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLHVybEdldENyZWRlbnRpYWxUeXBlOidodHRwczovL2xvZ2luLmxpdmUuY29tL0dldENyZWRlbnRpYWxUeXBlLnNyZj9vcGlkPUQzNUJDOEI1M0EzMUUyQTcmaWQ9Mzg5MzYmaWQ9Mzg5MzYmbWt0PUVOLVVTJmxjPTEwMzMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsb1doaXRlTGJsUHJvcHM6eydMb2dvJzonJywnTG9nb0FsdFRleHQnOicnLCdMb2dvVGV4dCc6JycsJ1Nob3dXTEhlYWRlcic6dHJ1ZX0sdXJsSVB2NkV4cGVyaW1lbnQ6JycsdXJsTG9zdEF1dGhlbnRpY2F0b3I6J2h0dHBzOi8vYWNjb3VudC5saXZlLmNvbS9SZXNldFBhc3N3b3JkLmFzcHg/d3JlcGx5PWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmJTNmaWQlM2QzODkzNiUyNm1rdCUzZGVuLVVTJTI2dWFpZCUzZDA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JTI2aWQlM2QzODkzNiUyNmNvbnRleHRpZCUzZDA4OTUyNjQxQzIyMUNGOUElMjZvcGlkJTNkRDM1QkM4QjUzQTMxRTJBNyUyNmJrJTNkMTcyMjU0NDIwNCZpZD0zODkzNiZ1aWZsYXZvcj13ZWImbG9zdGF1dGhlbnRpY2F0b3I9MSZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jm1rdD1FTi1VUyZsYz0xMDMzJmJrPTE3MjI1NDQyMDQnLHVybEFjY291bnRRdWVyeTonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL3F1ZXJ5LmFzcHg/dWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZta3Q9RU4tVVMmbGM9MTAzMyZpZD0zODkzNicsaHBnaWQ6MzMsc1JlcXVlc3RDb3VudHJ5OidMVScsc0NCQnJhbmRTdWJUaXRsZTonIyNsaTE2IyMjI0IjI0hvdG1haWwjIy9CIyMjI0JSIyNUaGUgc21hcnQgd2F5IHRvIGRvIGVtYWlsIC0gZmFzdCwgZWFzeSBhbmQgcmVsaWFibGUjI2xpOCMjIyNCIyNNZXNzZW5nZXIjIy9CIyMjI0JSIyNTdGF5IGluIHRvdWNoIHdpdGggdGhlIG1vc3QgaW1wb3J0YW50IHBlb3BsZSBpbiB5b3VyIGxpZmUjI2xpMTAjIyMjQiMjU2t5RHJpdmUjIy9CIyMjI0JSIyNGcmVlLCBwYXNzd29yZC1wcm90ZWN0ZWQgb25saW5lIHN0b3JhZ2UnLHVybE1zYVN0YXRpY01lQ29udHJvbDonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9NZS5odG0/dj0zJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLHVybFBob25lTGlua1ByaXZhY3lUZXJtczonaHR0cHM6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay9wLz9saW5raWQ9ODUwNzQ5I21haW55b3VycGhvbmVtb2R1bGUmcHJvZmlsZT10cmFuc3BhcmVudExpZ2h0JyxzQ0JIZWFkZXJUZXh0OicnLGExMXlDb25mb3JtZUxpbms6bnVsbCxzQ29uc3VtZXJEb21haW5zOicnLHVybFNlc3Npb25TdGF0ZTonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9HZXRTZXNzaW9uU3RhdGUuc3JmP2lkPTM4OTM2Jm1rdD1FTi1VUyZsYz0xMDMzJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZBcHBsaWNhdGlvbkluc2lnaHRzRW5hYmxlZDpmYWxzZSxzTmV0d29ya1R5cGU6Jycsc1BPU1RfVHlwZTonJyxlQ0JIZWFkZXJNb2RlOjAsZkFsbG93R3JheU91dExpZ2h0Qm94OnRydWUsZlByZWZpeENvb2tpZURvbWFpbkVuYWJsZWQ6ZmFsc2UsdXJsRmVkOicnLHN0ckZlZEludml0ZUJsb2NrZWRNc2c6IiN+I3BhcnRuZXJkb21haW4jfiMgZG9lc1wndCB1c2UgdGhpcyBzZXJ2aWNlLiBQbGVhc2Ugc2lnbiBpbiB3aXRoIGEgTWljcm9zb2Z0IGFjY291bnQgb3IgY3JlYXRlIGEgbmV3IGFjY291bnQuIDxhIGhyZWY9XCIjfiNXTFBhbmVIZWxwSW52aXRlQmxvY2tlZFVSTF9MUyN+I1wiIGlkPVwiaWRQYW5lSGVscEludml0ZUJsb2NrZWRMaW5rOVwiPkxlYXJuIE1vcmU8L2E+IixmQnJlYWtCcmFuZGluZ1NpZ25pblN0cmluZzp0cnVlLGlBcHBsaWNhdGlvbkluc2lnaHRzRW5hYmxlZFBlcmNlbnRhZ2U6MCxmU2hvd1B1c2hOb3RpZmljYXRpb25zRGVyaXNrOnRydWUsZlNob3dTaWduSW5XaXRoR2l0SHViT25seU9uQ3JlZFBpY2tlcjp0cnVlLHVybFBvc3RBYWQ6Jycsc3RyT1RDSW5mb01zZzoiQSBzaW5nbGUtdXNlIGNvZGUgbGV0cyB5b3Ugc2lnbiBpbiB3aXRob3V0IGVudGVyaW5nIHlvdXIgcGFzc3dvcmQuIFRoaXMgaGVscHMgcHJvdGVjdCB5b3VyIGFjY291bnQgd2hlbiB5b3VcJ3JlIHVzaW5nIHNvbWVvbmUgZWxzZVwncyBQQy4gPGEgaHJlZj1cImh0dHA6Ly9leHBsb3JlLmxpdmUuY29tL3dpbmRvd3MtbGl2ZS1zaWduLWluLXNpbmdsZS11c2UtY29kZS1mYXFcIiBpZD1cImlkUGFuZUhlbHBPVENJbmZvTGluazlcIiB0YXJnZXQ9XCJfYmxhbmtcIj5MZWFybiBtb3JlPC9hPiIsZkRpc2FibGVBbmltYXRpb25JZkFuaW1hdGlvbkVuZFVuc3VwcG9ydGVkOmZhbHNlLGlGZWRTdGF0ZTowLHN0ck9UQ1Nlc3Npb25FeHBpcmVkTXNnOiJZb3VyIHNlc3Npb24gaGFzIHRpbWVkIG91dC4gVG8gcmVxdWVzdCBhIHNpbmdsZSB1c2UgY29kZSwgcGxlYXNlIDxhIGhyZWY9XCJqYXZhc2NyaXB0Ok5ld09UQ1JlcXVlc3QoKVwiPnJlZnJlc2ggdGhlIHBhZ2U8L2E+LiIsc3RyU2lnbkluSGVhZGVyOiJTaWduIGluIixpVVhNb2RlOjEsdXJsQXBwbGljYXRpb25JbnNpZ2h0c0VuZHBvaW50OicnLGZIaWRlTGVhcm5Nb3JlTGluazpmYWxzZSxzUE9TVF9OZXdVc2VyOicnLHNDb29raWVEb21haW46J2xvZ2luLmxpdmUuY29tJyxmVXNlU2FtZVNpdGU6dHJ1ZSx1cmxDQkJyYW5kSUZyYW1lOidodHRwczovL3NjLmltcC5saXZlLmNvbS9jb250ZW50L2RhbS9pbXAvc3VyZmFjZXMvbWFpbF9zaWduaW4vdjMvYWNjb3VudC9FTi1VUy5odG1sP2lkPTM4OTM2Jm1rdD1FTi1VUycsZkhJUEVycm9yOmZhbHNlLHNQT1NUX1BhZ2luYXRlZExvZ2luU3RhdGU6JycsdXJsQ0JCcmFuZFVwc2VsbDonJyxzUHJvb2ZDb25maXJtOicnLGZJbnN0cnVtZW50YXRpb25FbmFibGVkOnRydWUsdXJsQ0JIZWFkZXJJRnJhbWU6JycsdXJsRGlzYW1iaWdSZW5hbWU6JycsaVByb2R1Y3RJY29uOjAsaVNlcnZlckV4ZWN1dGlvblRpbWU6NCx1cmxQb3N0OidodHRwczovL2xvZ2luLmxpdmUuY29tL3Bwc2VjdXJlL3Bvc3Quc3JmP21rdD1lbi1VUyZpZD0zODkzNiZjb250ZXh0aWQ9MDg5NTI2NDFDMjIxQ0Y5QSZvcGlkPUQzNUJDOEI1M0EzMUUyQTcmYms9MTcyMjU0NDIwNCZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JnBpZD0wJyxpUmVzZXRQd2RTdHJpbmdJRDoxLHVybEZvb3RlclByaXZhY3k6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vZ2xzLnNyZj91cmxJRD1NU05Qcml2YWN5U3RhdGVtZW50Jm1rdD1FTi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JyxvV2hpdGVMYmxGb290ZXJVUkxzOnt9LHVybEltcHJlc3N1bTonJyxzQXBwVmVyc2lvbjonJyxzRlROYW1lOidQUEZUJyxzQ0JCcmFuZFRpdGxlOidzaWduIHVwJyxvV2hpdGVMYmxGb290ZXJUeHRPbmU6e30sc0NsaWVudEZsaWdodDonJyxvV2hpdGVMYmxGb290ZXJUeHRUd286e30sc1BPU1RfUGFnaW5hdGVkTG9naW5TdGF0ZVJOR0NFbnRyb3B5OicnLHNBcHBsaWNhdGlvbkluc2lnaHRzSW5zdHJ1bWVudGF0aW9uS2V5OicnLGlNYXhTdGFja0Zvcktub2Nrb3V0QXN5bmNDb21wb25lbnRzOjEwMDAwLGZXZWJOZ2NGUzpmYWxzZSxpQmFja2dyb3VuZEltYWdlOjIsb0FwcENvYnJhbmRpbmc6e30sc1JhbmRvbUJsb2I6J1Bhcycsc0ZlZFFTOid3YT13c2lnbmluMS4wJnd0cmVhbG09dXJpOldpbmRvd3NMaXZlSUQmd2N0eD1ta3QlM0Rlbi1VUyUyNnVhaWQlM0QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiUyNmlkJTNEMzg5MzYlMjZjb250ZXh0aWQlM0QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzREQzNUJDOEI1M0EzMUUyQTclMjZiayUzRDE3MjI1NDQyMDQnLHVybENhbmNlbDonJyxmU2hvd01vcmVQcm9vZnNMaW5rTmV3TG9naWM6dHJ1ZSxzUE9TVF9Vc2VybmFtZTonJyxzdHJMV0FEaXNjbGFpbWVyTXNnOicnLHNDbGllbnRJZDonJyxmU2hvd1NpZ25JbldpdGhGaWRvT25Vc2VybmFtZVZpZXc6dHJ1ZSxzVW5hdXRoU2Vzc2lvbklEOicwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsZkVuYWJsZVVzZXJTdGF0ZUZpeDpmYWxzZSxzdHJPVENNb2JpbGVIaW50TXNnOiJVc2UgdGhlIHByaW1hcnkgcGhvbmUgbnVtYmVyIHlvdVwndmUgYXNzb2NpYXRlZCB3aXRoIHlvdXIgTWljcm9zb2Z0IGFjY291bnQuIDxhIGhyZWY9XCJodHRwOi8vZXhwbG9yZS5saXZlLmNvbS93aW5kb3dzLWxpdmUtc2lnbi1pbi1zaW5nbGUtdXNlLWNvZGUtZmFxXCIgaWQ9XCJpZFBhbmVIZWxwT1RDSW5mb0xpbms5XCIgdGFyZ2V0PVwiX2JsYW5rXCI+TGVhcm4gbW9yZTwvYT4iLGZTd2l0Y2hEaXNhbWJpZzpmYWxzZSxmQ2hlY2tBcGlDYW5hcnk6ZmFsc2UsZlNob3dMZWFybk1vcmVWMjp0cnVlLGlCaW5kUHJvdmlkZXI6LTEsZlVzZUlubGluZVBob25lTnVtYmVyOnRydWUsdXJsQmVoYXZpb3JhbFRlbGVtZXRyeVNjcmlwdDonJyxmSXNXcml0ZVdsb3B0Q29va2llRGlzYWxsb3dlZDp0cnVlLHN0cjpbXSxmVXNlUmVzZXRQd2RVcmxGb3JQd2RSZXF1aXJlZEVycjp0cnVlLHVybENCQnJhbmRMb2dvOicnLGlSZXF1ZXN0TENJRDoxMDMzLHVybENCQ3VzdG9tSlM6JycsdXJsQ0JIZWFkZXJMb2dvOicnLGZMb2FkR2FtZXBhZE5hdmlnYXRpb25Nb2R1bGU6ZmFsc2UsZklzSG9zdGVkOmZhbHNlLGlHY3RGZWRlcmF0aW9uRmxhZ3M6MyxpTWF4UG9sbEVycm9yczo1LHVybEdpdEh1YkZlZDonaHR0cHM6Ly9naXRodWIuY29tL2xvZ2luL29hdXRoL2F1dGhvcml6ZT9yZXNwb25zZV90eXBlPWNvZGUmY2xpZW50X2lkPWUzN2ZmZGVjMTFjMDI0NWNiMmUwJnNjb3BlPXJlYWQ6dXNlcisrdXNlcjplbWFpbCZyZWRpcmVjdF91cmk9aHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9IYW5kbGVHaXRodWJSZXNwb25zZS5zcmYmYWxsb3dfc2lnbnVwPWZhbHNlJnN0YXRlPUQzNUJDOEI1M0EzMUUyQTcnLGZUZW5hbnRCcmFuZGluZ0NkbkFkZEV2ZW50SGFuZGxlcnM6dHJ1ZSx1cmxOb0Nvb2tpZXM6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vY29va2llc0Rpc2FibGVkLnNyZj91YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jm1rdD1FTi1VUyZsYz0xMDMzJyxmVXNlRmFrZUhJUDpmYWxzZSxmVXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbDpmYWxzZSxmVXNlTWluSGVpZ2h0OnRydWUsZlVzZVBhc3N3b3JkUGVlazpmYWxzZSx1cmxTd2l0Y2g6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9nb3V0LnNyZj9ta3Q9ZW4tVVMmaWQ9Mzg5MzYmY29udGV4dGlkPTA4OTUyNjQxQzIyMUNGOUEmb3BpZD1EMzVCQzhCNTNBMzFFMkE3JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmcnU9aHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL2ElM2Z1YWlkJTNkMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmYms9MTcyMjU0NDIwNCZsbT1JJyxpTEJvZHlEZWZhdWx0OjAsc0ZlZFBhcnRuZXJOYW1lOicnLGlBcmtvc2VFbmZvcmNlbWVudFRpbWVvdXRNczozMDAwMCxpUG9sbGluZ1RpbWVvdXQ6NjAsdXJsRmVkQ29udmVydFJlbmFtZTonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL3NlY3VyaXR5L0xvZ2luU3RhZ2UuYXNweD9sbWlmPTEwMDAmcnU9aHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9sb2dpbi5zcmYlM0ZpZCUzRDM4OTM2JTI2bWt0JTNERU4tVVMlMjZsYyUzRDEwMzMlMjZ1YWlkJTNEMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmbWt0PUVOLVVTJmxjPTEwMzMmY2JpZD0wJmlkPTM4OTM2JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZJc1VwZGF0ZWRBdXRvY29tcGxldGVFbmFibGVkOnRydWUsaUF1dG9TU09TdGF0ZTowLHNQYWdlSWQ6J2k1MDMwJyx1cmxBcmtvc2VFbmZvcmNlbWVudDonaHR0cHM6Ly9pZnJhbWUuYXJrb3NlbGFicy5jb20vQjdEODkxMUMtNUNDOC1BOUEzLTM1QjAtNTU0QUNFRTYwNERBL2luZGV4Lmh0bWw/bWt0PWVuJyxzUmF3UXVlcnlTdHJpbmc6J21rdD1lbi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZiaz0xNzIyNTQ0MjA0JyxzUE9TVF9QYWdpbmF0ZWRMb2dpblN0YXRlUk5HQ0RlZmF1bHRUeXBlOicnLHVybENkbjonaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvc2hhcmVkLzEuMC8nLGZBbGxvd0xvZ2luVGV4dEN1c3RvbWl6YXRpb25zOnRydWUsZkRlcHJlY2F0ZUhpcExvY2tvdXQ6dHJ1ZSxzU2lnbkluVXNlcm5hbWU6JycsZkFsbG93Q2FuY2VsOmZhbHNlLGZTaG93QnV0dG9uczp0cnVlLGZEb0lmRXhpc3RzOmZhbHNlLGZJc1NpbXBsaWZpZWRDaGlsZEFjY291bnRDcmVhdGlvbjpmYWxzZSxpTG9naW5Nb2RlOjEsZklzRmlkb1N1cHBvcnRlZDp0cnVlLHNGb3J3YXJkZWRDbGllbnRJZDonJyxmU2hvd0ZvcmdvdFVzZXJuYW1lTGluazp0cnVlLGZJc1dMUm9vdGVkU2l0ZUlEOnRydWUsdXJsUmVzZXRQYXNzd29yZEFhZDonJyxzU2l0ZUlkOiczODkzNicsdXJsU2lnblVwOidodHRwczovL3NpZ251cC5saXZlLmNvbS9zaWdudXA/aWQ9Mzg5MzYmY29udGV4dGlkPTA4OTUyNjQxQzIyMUNGOUEmb3BpZD1EMzVCQzhCNTNBMzFFMkE3JmJrPTE3MjI1NDQyMDQmc3J1PWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmJTNmaWQlM2QzODkzNiUyNmlkJTNkMzg5MzYlMjZjb250ZXh0aWQlM2QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzZEQzNUJDOEI1M0EzMUUyQTclMjZta3QlM2RFTi1VUyUyNmxjJTNkMTAzMyUyNmJrJTNkMTcyMjU0NDIwNCUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZ1aWZsYXZvcj13ZWImbGljPTEmbWt0PUVOLVVTJmxjPTEwMzMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsaURlZmF1bHRMb2dpbk9wdGlvbnM6MyxzZXJ2ZXJEZXRhaWxzOnsicmkiOiJTTjFQRVBGMDAwMkYwQTgiLCJ2ZXIiOiIxNi4wLjMwMjkzLjIifSxvR2V0Q3JlZFR5cGVSZXN1bHQ6bnVsbCxmUmVtb3ZlTWluV2lkdGhGcm9tTGlnaHRCb3g6dHJ1ZSx1cmxSZXNldFBhc3N3b3JkOidodHRwczovL2FjY291bnQubGl2ZS5jb20vUmVzZXRQYXNzd29yZC5hc3B4P3dyZXBseT1odHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZiUzZmlkJTNkMzg5MzYlMjZta3QlM2Rlbi1VUyUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiUyNmlkJTNkMzg5MzYlMjZjb250ZXh0aWQlM2QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzZEQzNUJDOEI1M0EzMUUyQTclMjZiayUzZDE3MjI1NDQyMDQmaWQ9Mzg5MzYmdWlmbGF2b3I9d2ViJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmbWt0PUVOLVVTJmxjPTEwMzMmYms9MTcyMjU0NDIwNCcsZlNob3dDb3B5RGVidWdEZXRhaWxzTGluazp0cnVlLGlBbGxvd2VkSWRlbnRpdGllczowLGZJc0dhbWluZ0Zsb3c6ZmFsc2Usc0NCVXBUeHQxOicnLHVybEhJUFNjcmlwdDonaHR0cHM6Ly9jbGllbnQucHJvZC5yZXBtYXAubWljcm9zb2Z0LmNvbS9HZXRISVAvR2V0SElQL0hJUD9pZD0xNTAzNCZ0eXBlPXZpc3VhbCZmaWQ9MTQwMDAzNzU2NyZyYW5kPTMyMTYyMTQ5NyZta3Q9RU4tVVMnLGZFbmFibGVBcmlhTGl2ZVVwZGF0ZXM6dHJ1ZSxzQ0JVcFR4dDI6Jycsc0hvc3RCdWlsZE51bWJlcjonMTYuMC4zMDI5My4yJyxmU2hvd0Nvb2tpZUJhbm5lcjpmYWxzZSxmU2hvd1B1c2hOb3RpZmljYXRpb25zOnRydWUsZkNCU2hvd1NpZ25VcDp0cnVlLGZTaG93U2t5cGVVc2VybmFtZUhpbnQ6ZmFsc2UsdXJsRm9yZ290VXNlcm5hbWU6J2h0dHBzOi8vYWNjb3VudC5saXZlLmNvbS91c2VybmFtZS9yZWNvdmVyP3dyZXBseT1odHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZiUzZmxjJTNkMTAzMyUyNm1rdCUzZGVuLVVTJTI2aWQlM2QzODkzNiUyNm1rdCUzZGVuLVVTJTI2aWQlM2QzODkzNiUyNmNvbnRleHRpZCUzZDA4OTUyNjQxQzIyMUNGOUElMjZvcGlkJTNkRDM1QkM4QjUzQTMxRTJBNyUyNmJrJTNkMTcyMjU0NDIwNCUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZpZD0zODkzNiZta3Q9RU4tVVMmbGM9MTAzMyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JnVpZmxhdm9yPXdlYicsdXJsTGlua2VkSW5GZWQ6JycsZkltcHJvdmVQaG9uZURpc2FtYmlnOnRydWUsY29ycmVsYXRpb25JZDonMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLG9Qb3N0Ont9LHVybENsaWVudEV4cGVyaW1lbnQ6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vR2V0RXhwZXJpbWVudEFzc2lnbm1lbnRzLnNyZicsZlNob3dTd2l0Y2hVc2VyOnRydWUsZkF1dG9DYXB0dXJlRXZlbnRzOmZhbHNlLGlQb2xsaW5nSW50ZXJ2YWw6MSxvRmVkU2lnbnVwUG9zdFBhcmFtczpudWxsLGlCYW5uZXJFbnZpcm9ubWVudDowLGZFbmFibGVDbGllbnRUZWxlbWV0cnk6ZmFsc2UsZlNob3dVcGRhdGVkS29yZWFuUHJpdmFjeUZvb3Rlcjp0cnVlLHNQcmVmaWxsVXNlcm5hbWU6JycsZkVuYWJsZVNob3dQaWNrZXJDcmVkT2JzZXJ2YWJsZTpmYWxzZSx1cmxGZWRTaWdudXA6JycsdXJsR29Ub0FBREVycm9yOicnLGZGaXhVSUNyYXNoRm9yQXBpUmVxdWVzdEhhbmRsZXI6ZmFsc2Usc0VyclR4dDonJyxmSGlkZVBob25lQ29iYXNpSW5PdGhlclNpZ25Jbjp0cnVlLGZTaG93U2lnbkluT3B0aW9uc0FzQnV0dG9uOnRydWUsaUNsaWVudExvZ0xldmVsOjAsZklzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZDpmYWxzZSxodG1sOltdLGlQYXduSWNvbjoxLHNGVFRhZzonPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUFBGVCIgaWQ9ImkwMzI3IiB2YWx1ZT0iLURuQVJ1dnFtOVd3TTNzSG8hTUxLT2FhWmNSeFF2cTJodUxIWjBua0MqelFEeHlJenBqMHhKeEV4UThMbWtVVWxsZnkqMGZyQkNOam9wemRjcG96Km4xM2JxTEFkcW1BNHhnU1J2RzBod0RPTXFuNCpaWVFRNmk4U2pvNDJTejlGUEZteDNtaUlmWnBobjRiaVFqdkxaUG5ZY01FYlpORDliT3dQS0R1VU9TKjlEa3I1OEdzS2dqMG51alRjUjUqcFM3UVVGcTg2clNTQkxiTExSUWtWTkFTM0gwTEptQzVvT1JUYXdyd3cxV3RiangxUFNhUGE1bVVMalNvRU4xMEZMQSQkIi8+Jyxsb2FkZXI6e2NkblJvb3RzOlsnaHR0cHM6Ly9sb2dpbmNkbi5tc2F1dGgubmV0LycsJ2h0dHBzOi8vbG9naW5jZG4ubXNmdGF1dGgubmV0LycsJ2h0dHBzOi8vbGdpbmNkbnZ6ZXVuby5henVyZWVkZ2UubmV0LycsJ2h0dHBzOi8vbGdpbmNkbm1zZnR1c3dlMi5henVyZWVkZ2UubmV0LyddfSxzU01TQ3RyeVBob25lRGF0YTonQUZ+QWZnaGFuaXN0YW5+OTMhISFBTH5BbGJhbmlhfjM1NSEhIURafkFsZ2VyaWF+MjEzISEhQUR+QW5kb3JyYX4zNzYhISFBT35BbmdvbGF+MjQ0ISEhQVF+QW50YXJjdGljYX42NzIhISFBR35BbnRpZ3VhIGFuZCBCYXJidWRhfjEhISFBUn5BcmdlbnRpbmF+NTQhISFBTX5Bcm1lbmlhfjM3NCEhIUFXfkFydWJhfjI5NyEhIUFDfkFzY2Vuc2lvbiBJc2xhbmR+MjQ3ISEhQVV+QXVzdHJhbGlhfjYxISEhQVR+QXVzdHJpYX40MyEhIUFafkF6ZXJiYWlqYW5+OTk0ISEhQlN+QmFoYW1hc34xISEhQkh+QmFocmFpbn45NzMhISFCRH5CYW5nbGFkZXNofjg4MCEhIUJCfkJhcmJhZG9zfjEhISFCWX5CZWxhcnVzfjM3NSEhIUJFfkJlbGdpdW1+MzIhISFCWn5CZWxpemV+NTAxISEhQkp+QmVuaW5+MjI5ISEhQk1+QmVybXVkYX4xISEhQlR+Qmh1dGFufjk3NSEhIUJPfkJvbGl2aWF+NTkxISEhQlF+Qm9uYWlyZX41OTkhISFCQX5Cb3NuaWEgYW5kIEhlcnplZ292aW5hfjM4NyEhIUJXfkJvdHN3YW5hfjI2NyEhIUJWfkJvdXZldCBJc2xhbmR+NDchISFCUn5CcmF6aWx+NTUhISFJT35Ccml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnl+NDQhISFWR35Ccml0aXNoIFZpcmdpbiBJc2xhbmRzfjEhISFCTn5CcnVuZWl+NjczISEhQkd+QnVsZ2FyaWF+MzU5ISEhQkZ+QnVya2luYSBGYXNvfjIyNiEhIUJJfkJ1cnVuZGl+MjU3ISEhQ1Z+Q2FibyBWZXJkZX4yMzghISFLSH5DYW1ib2RpYX44NTUhISFDTX5DYW1lcm9vbn4yMzchISFDQX5DYW5hZGF+MSEhIUtZfkNheW1hbiBJc2xhbmRzfjEhISFDRn5DZW50cmFsIEFmcmljYW4gUmVwdWJsaWN+MjM2ISEhVER+Q2hhZH4yMzUhISFDTH5DaGlsZX41NiEhIUNOfkNoaW5hfjg2ISEhQ1h+Q2hyaXN0bWFzIElzbGFuZH42MSEhIUNDfkNvY29zIChLZWVsaW5nKSBJc2xhbmRzfjYxISEhQ09+Q29sb21iaWF+NTchISFLTX5Db21vcm9zfjI2OSEhIUNHfkNvbmdvfjI0MiEhIUNEfkNvbmdvIChEUkMpfjI0MyEhIUNLfkNvb2sgSXNsYW5kc342ODIhISFDUn5Db3N0YSBSaWNhfjUwNiEhIUNJfkPDtHRlIGRcJ0l2b2lyZX4yMjUhISFIUn5Dcm9hdGlhfjM4NSEhIUNVfkN1YmF+NTMhISFDV35DdXJhw6dhb341OTkhISFDWX5DeXBydXN+MzU3ISEhQ1p+Q3plY2hpYX40MjAhISFES35EZW5tYXJrfjQ1ISEhREp+RGppYm91dGl+MjUzISEhRE1+RG9taW5pY2F+MSEhIURPfkRvbWluaWNhbiBSZXB1YmxpY34xISEhRUN+RWN1YWRvcn41OTMhISFFR35FZ3lwdH4yMCEhIVNWfkVsIFNhbHZhZG9yfjUwMyEhIUdRfkVxdWF0b3JpYWwgR3VpbmVhfjI0MCEhIUVSfkVyaXRyZWF+MjkxISEhRUV+RXN0b25pYX4zNzIhISFFVH5FdGhpb3BpYX4yNTEhISFGS35GYWxrbGFuZCBJc2xhbmRzfjUwMCEhIUZPfkZhcm9lIElzbGFuZHN+Mjk4ISEhRkp+RmlqaX42NzkhISFGSX5GaW5sYW5kfjM1OCEhIUZSfkZyYW5jZX4zMyEhIUdGfkZyZW5jaCBHdWlhbmF+NTk0ISEhUEZ+RnJlbmNoIFBvbHluZXNpYX42ODkhISFHQX5HYWJvbn4yNDEhISFHTX5HYW1iaWF+MjIwISEhR0V+R2VvcmdpYX45OTUhISFERX5HZXJtYW55fjQ5ISEhR0h+R2hhbmF+MjMzISEhR0l+R2licmFsdGFyfjM1MCEhIUdSfkdyZWVjZX4zMCEhIUdMfkdyZWVubGFuZH4yOTkhISFHRH5HcmVuYWRhfjEhISFHUH5HdWFkZWxvdXBlfjU5MCEhIUdVfkd1YW1+MSEhIUdUfkd1YXRlbWFsYX41MDIhISFHR35HdWVybnNleX40NCEhIUdOfkd1aW5lYX4yMjQhISFHV35HdWluZWEtQmlzc2F1fjI0NSEhIUdZfkd1eWFuYX41OTIhISFIVH5IYWl0aX41MDkhISFITn5Ib25kdXJhc341MDQhISFIS35Ib25nIEtvbmcgU0FSfjg1MiEhIUhVfkh1bmdhcnl+MzYhISFJU35JY2VsYW5kfjM1NCEhIUlOfkluZGlhfjkxISEhSUR+SW5kb25lc2lhfjYyISEhSVJ+SXJhbn45OCEhIUlRfklyYXF+OTY0ISEhSUV+SXJlbGFuZH4zNTMhISFJTX5Jc2xlIG9mIE1hbn40NCEhIUlMfklzcmFlbH45NzIhISFJVH5JdGFseX4zOSEhIUpNfkphbWFpY2F+MSEhIVhKfkphbiBNYXllbn40NyEhIUpQfkphcGFufjgxISEhSkV+SmVyc2V5fjQ0ISEhSk9+Sm9yZGFufjk2MiEhIUtafkthemFraHN0YW5+NyEhIUtFfktlbnlhfjI1NCEhIUtJfktpcmliYXRpfjY4NiEhIUtSfktvcmVhfjgyISEhWEt+S29zb3ZvfjM4MyEhIUtXfkt1d2FpdH45NjUhISFLR35LeXJneXpzdGFufjk5NiEhIUxBfkxhb3N+ODU2ISEhTFZ+TGF0dmlhfjM3MSEhIUxCfkxlYmFub25+OTYxISEhTFN+TGVzb3Rob34yNjYhISFMUn5MaWJlcmlhfjIzMSEhIUxZfkxpYnlhfjIxOCEhIUxJfkxpZWNodGVuc3RlaW5+NDIzISEhTFR+TGl0aHVhbmlhfjM3MCEhIUxVfkx1eGVtYm91cmd+MzUyISEhTU9+TWFjYW8gU0FSfjg1MyEhIU1Lfk5vcnRoIE1hY2Vkb25pYX4zODkhISFNR35NYWRhZ2FzY2FyfjI2MSEhIU1Xfk1hbGF3aX4yNjUhISFNWX5NYWxheXNpYX42MCEhIU1Wfk1hbGRpdmVzfjk2MCEhIU1Mfk1hbGl+MjIzISEhTVR+TWFsdGF+MzU2ISEhTUh+TWFyc2hhbGwgSXNsYW5kc342OTIhISFNUX5NYXJ0aW5pcXVlfjU5NiEhIU1Sfk1hdXJpdGFuaWF+MjIyISEhTVV+TWF1cml0aXVzfjIzMCEhIVlUfk1heW90dGV+MjYyISEhTVh+TWV4aWNvfjUyISEhRk1+TWljcm9uZXNpYX42OTEhISFNRH5Nb2xkb3ZhfjM3MyEhIU1Dfk1vbmFjb34zNzchISFNTn5Nb25nb2xpYX45NzYhISFNRX5Nb250ZW5lZ3JvfjM4MiEhIU1Tfk1vbnRzZXJyYXR+MSEhIU1Bfk1vcm9jY29+MjEyISEhTVp+TW96YW1iaXF1ZX4yNTghISFNTX5NeWFubWFyfjk1ISEhTkF+TmFtaWJpYX4yNjQhISFOUn5OYXVydX42NzQhISFOUH5OZXBhbH45NzchISFOTH5OZXRoZXJsYW5kc34zMSEhIUFOfk5ldGhlcmxhbmRzIEFudGlsbGVzIChGb3JtZXIpfjU5OSEhIU5Dfk5ldyBDYWxlZG9uaWF+Njg3ISEhTlp+TmV3IFplYWxhbmR+NjQhISFOSX5OaWNhcmFndWF+NTA1ISEhTkV+TmlnZXJ+MjI3ISEhTkd+TmlnZXJpYX4yMzQhISFOVX5OaXVlfjY4MyEhIU1Qfk5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kc34xISEhTk9+Tm9yd2F5fjQ3ISEhT01+T21hbn45NjghISFQS35QYWtpc3Rhbn45MiEhIVBXflBhbGF1fjY4MCEhIVBTflBhbGVzdGluaWFuIEF1dGhvcml0eX45NzAhISFQQX5QYW5hbWF+NTA3ISEhUEd+UGFwdWEgTmV3IEd1aW5lYX42NzUhISFQWX5QYXJhZ3VheX41OTUhISFQRX5QZXJ1fjUxISEhUEh+UGhpbGlwcGluZXN+NjMhISFQTH5Qb2xhbmR+NDghISFQVH5Qb3J0dWdhbH4zNTEhISFRQX5RYXRhcn45NzQhISFSRX5Sw6l1bmlvbn4yNjIhISFST35Sb21hbmlhfjQwISEhUlV+UnVzc2lhfjchISFSV35Sd2FuZGF+MjUwISEhWFN+U2FiYX41OTkhISFLTn5TYWludCBLaXR0cyBhbmQgTmV2aXN+MSEhIUxDflNhaW50IEx1Y2lhfjEhISFQTX5TYWludCBQaWVycmUgYW5kIE1pcXVlbG9ufjUwOCEhIVZDflNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzfjEhISFXU35TYW1vYX42ODUhISFTTX5TYW4gTWFyaW5vfjM3OCEhIVNUflPDo28gVG9tw6kgYW5kIFByw61uY2lwZX4yMzkhISFTQX5TYXVkaSBBcmFiaWF+OTY2ISEhU05+U2VuZWdhbH4yMjEhISFSU35TZXJiaWF+MzgxISEhU0N+U2V5Y2hlbGxlc34yNDghISFTTH5TaWVycmEgTGVvbmV+MjMyISEhU0d+U2luZ2Fwb3JlfjY1ISEhWEV+U2ludCBFdXN0YXRpdXN+NTk5ISEhU0t+U2xvdmFraWF+NDIxISEhU0l+U2xvdmVuaWF+Mzg2ISEhU0J+U29sb21vbiBJc2xhbmRzfjY3NyEhIVNPflNvbWFsaWF+MjUyISEhWkF+U291dGggQWZyaWNhfjI3ISEhU1N+U291dGggU3VkYW5+MjExISEhRVN+U3BhaW5+MzQhISFMS35TcmkgTGFua2F+OTQhISFTSH5TdCBIZWxlbmEsIEFzY2Vuc2lvbiwgYW5kIFRyaXN0YW4gZGEgQ3VuaGF+MjkwISEhU0R+U3VkYW5+MjQ5ISEhU1J+U3VyaW5hbWV+NTk3ISEhU0p+U3ZhbGJhcmR+NDchISFTWn5Td2F6aWxhbmR+MjY4ISEhU0V+U3dlZGVufjQ2ISEhQ0h+U3dpdHplcmxhbmR+NDEhISFTWX5TeXJpYX45NjMhISFUV35UYWl3YW5+ODg2ISEhVEp+VGFqaWtpc3Rhbn45OTIhISFUWn5UYW56YW5pYX4yNTUhISFUSH5UaGFpbGFuZH42NiEhIVRMflRpbW9yLUxlc3RlfjY3MCEhIVRHflRvZ29+MjI4ISEhVEt+VG9rZWxhdX42OTAhISFUT35Ub25nYX42NzYhISFUVH5UcmluaWRhZCBhbmQgVG9iYWdvfjEhISFUQX5UcmlzdGFuIGRhIEN1bmhhfjI5MCEhIVROflR1bmlzaWF+MjE2ISEhVFJ+VHVya2V5fjkwISEhVE1+VHVya21lbmlzdGFufjk5MyEhIVRDflR1cmtzIGFuZCBDYWljb3MgSXNsYW5kc34xISEhVFZ+VHV2YWx1fjY4OCEhIVVNflUuUy4gT3V0bHlpbmcgSXNsYW5kc34xISEhVkl+VS5TLiBWaXJnaW4gSXNsYW5kc34xISEhVUd+VWdhbmRhfjI1NiEhIVVBflVrcmFpbmV+MzgwISEhQUV+VW5pdGVkIEFyYWIgRW1pcmF0ZXN+OTcxISEhVUt+VW5pdGVkIEtpbmdkb21+NDQhISFVU35Vbml0ZWQgU3RhdGVzfjEhISFVWX5VcnVndWF5fjU5OCEhIVVaflV6YmVraXN0YW5+OTk4ISEhVlV+VmFudWF0dX42NzghISFWQX5WYXRpY2FuIENpdHl+Mzc5ISEhVkV+VmVuZXp1ZWxhfjU4ISEhVk5+VmlldG5hbX44NCEhIVdGfldhbGxpcyBhbmQgRnV0dW5hfjY4MSEhIVlFflllbWVufjk2NyEhIVpNflphbWJpYX4yNjAhISFaV35aaW1iYWJ3ZX4yNjMnLGZJc1JlbW90ZUNvbm5lY3RTaWdudXA6ZmFsc2UsZklzUG9wdXBVSTpmYWxzZSxmSXNSVExNYXJrZXQ6ZmFsc2UsYXJyRmVkTmFtZXM6W10sZkFsbG93U2t5cGVOYW1lTG9naW46dHJ1ZSxjbGllbnRFdmVudHM6eyJhcHBJbnNpZ2h0c0NvbmZpZyI6eyJpbnN0cnVtZW50YXRpb25LZXkiOiI2OWFkYzNjNzY4YmQ0ZGMwOGMxOTQxNjEyMTI0OWZjYy02NmYxNjY4YS03OTdiLTQyNDktOTVlMy02YzY2NTE3NjhjMjgtNzI5MyIsIndlYkFuYWx5dGljc0NvbmZpZ3VyYXRpb24iOnsiYXV0b0NhcHR1cmUiOnsianNFcnJvciI6MSwiY2xpY2siOjB9fX0sImFwcElkIjoiLSIsImRlZmF1bHRFdmVudE5hbWUiOiJJRFVYX01TQUNsaWVudFRlbGVtZXRyeUV2ZW50X1dlYldhdHNvbiIsImF1dG9Qb3N0Ijp0cnVlLCJhdXRvUG9zdERlbGF5IjoxMDAwLCJmbHVzaCI6NjAwMDAsIm1heEV2ZW50cyI6MSwibWluRXZlbnRzIjoxLCJwbHREZWxheSI6NTAwLCJ0ZWxlbWV0cnlFbmFibGVkIjp0cnVlLCJ1c2VPbmVEU0V2ZW50QXBpIjp0cnVlLCJzZXJ2aWNlSUQiOjJ9LGZIYXNCYWNrZ3JvdW5kQ29sb3I6ZmFsc2UsZW52aXJvbm1lbnQ6J1BST0QnLHVybFN0YXlTaWduSW46J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmP2lkPTM4OTM2JmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZta3Q9RU4tVVMmbGM9MTAzMyZiaz0xNzIyNTQ0MjA0JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZBY3RpdmF0ZUtleWJvYXJkRm9jdXNPbkFwcHJvdmFsTnVtYmVyOnRydWUsZkF1dG9DYXB0dXJlQ2xpY2tzOmZhbHNlLGZBdXRvQ2FwdHVyZUpzRXJyb3JzOmZhbHNlLGZDaGVja1Byb29mRm9yQWxpYXNlczpmYWxzZSxmQWxsb3dQaG9uZVNpZ25Jbjp0cnVlLGZFbmFibGVDc3NBbmltYXRpb246dHJ1ZSxmQXBwbHlBc2NpaVJlZ2V4T25JbnB1dDp0cnVlLGZFbmFibGVPbmVEU0NsaWVudFRlbGVtZXRyeTp0cnVlLHVybFByb2ZpbGVQaG90bzonJ307PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG5vbmNlPSJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPSI+IWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0IGluIHIpZVt0XT1yW3RdfSh0aGlzLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2V4cG9ydHM6e30saWQ6bixsb2FkZWQ6ITF9O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubG9hZGVkPSEwLG8uZXhwb3J0c312YXIgdD17fTtyZXR1cm4gci5tPWUsci5jPXQsci5wPSIiLHIoMCl9KFtmdW5jdGlvbihlLHIpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbC4kQ29uZmlnfHxsLlNlcnZlckRhdGF8fHt9fWZ1bmN0aW9uIHIoZSxyKXt2YXIgdD1sLiREZWJ1Zzt0JiZ0LmFwcGVuZExvZyYmKHImJihlKz0iICciKyhyLnNyY3x8ci5ocmVmfHwiIikrIiciLGUrPSIsIGlkOiIrKHIuaWR8fCIiKSxlKz0iLCBhc3luYzoiKyhyLmFzeW5jfHwiIiksZSs9IiwgZGVmZXI6Iisoci5kZWZlcnx8IiIpKSx0LmFwcGVuZExvZyhlKSl9ZnVuY3Rpb24gdCgpe3ZhciBlPWwuJEI7aWYodm9pZCAwPT09YylpZihlKWM9ZS5JRTtlbHNle3ZhciByPWwubmF2aWdhdG9yLnVzZXJBZ2VudDtjPXIuaW5kZXhPZigiTVNJRSAiKSE9PS0xfHxyLmluZGV4T2YoIlRyaWRlbnQvIikhPT0tMX1yZXR1cm4gY31mdW5jdGlvbiBuKCl7dmFyIGU9bC4kQjtpZih2b2lkIDA9PT1mKWlmKGUpZj1lLlJFX0VkZ2U7ZWxzZXt2YXIgcj1sLm5hdmlnYXRvci51c2VyQWdlbnQ7Zj1yLmluZGV4T2YoIkVkZ2UiKSE9PS0xfXJldHVybiBmfWZ1bmN0aW9uIG8oZSl7dmFyIHI9ZS5pbmRleE9mKCI/IiksdD1yPi0xP3I6ZS5sZW5ndGgsbj1lLmxhc3RJbmRleE9mKCIuIix0KSxvPWUuc3Vic3RyaW5nKG4sbitoLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09PWg7cmV0dXJuIG99ZnVuY3Rpb24gYSgpe3ZhciByPWUoKSx0PXIubG9hZGVyfHx7fTtyZXR1cm4gdC5zbFJlcG9ydEZhaWx1cmV8fHIuc2xSZXBvcnRGYWlsdXJlfHwhMX1mdW5jdGlvbiBpKCl7dmFyIHI9ZSgpLHQ9ci5sb2FkZXJ8fHt9O3JldHVybiB0LnJlZGlyZWN0VG9FcnJvclBhZ2VPbkxvYWRGYWlsdXJlfHwhMX1mdW5jdGlvbiBzKCl7dmFyIHI9ZSgpLHQ9ci5sb2FkZXJ8fHt9O3JldHVybiB0LmxvZ0J5VGhyb3dpbmd8fCExfWZ1bmN0aW9uIGQoZSl7aWYoIXQoKSYmIW4oKSlyZXR1cm4hMTt2YXIgcj1lLnNyY3x8ZS5ocmVmfHwiIjtpZighcilyZXR1cm4hMDtpZihvKHIpKXt2YXIgYSxpLHM7dHJ5e2E9ZS5zaGVldCxpPWEmJmEuY3NzUnVsZXMscz0hMX1jYXRjaChkKXtzPSEwfWlmKGEmJiFpJiZzKXJldHVybiEwO2lmKGEmJmkmJjA9PT1pLmxlbmd0aClyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gdChlKXt2YXIgcj1nLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07ci5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBuKGUscix0LG4pe3ZhciBkPW51bGw7cmV0dXJuIGQ9byhlKT9hKGUpOiJzY3JpcHQiPT09bi50b0xvd2VyQ2FzZSgpP2koZSk6cyhlLG4pLHImJihkLmlkPXIpLCJmdW5jdGlvbiI9PXR5cGVvZiBkLnNldEF0dHJpYnV0ZSYmKGQuc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsImFub255bW91cyIpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmZC5zZXRBdHRyaWJ1dGUoImludGVncml0eSIsdCkpLGR9ZnVuY3Rpb24gYShlKXt2YXIgcj1nLmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtyZXR1cm4gci5yZWw9InN0eWxlc2hlZXQiLHIudHlwZT0idGV4dC9jc3MiLHIuaHJlZj1lLHJ9ZnVuY3Rpb24gaShlKXt2YXIgcj1nLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLHQ9Zy5xdWVyeVNlbGVjdG9yKCJzY3JpcHRbbm9uY2VdIik7aWYoci50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHIuc3JjPWUsci5kZWZlcj0hMSxyLmFzeW5jPSExLHQpe3ZhciBuPXQubm9uY2V8fHQuZ2V0QXR0cmlidXRlKCJub25jZSIpO3Iuc2V0QXR0cmlidXRlKCJub25jZSIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gcyhlLHIpe3ZhciB0PWcuY3JlYXRlRWxlbWVudChyKTtyZXR1cm4gdC5zcmM9ZSx0fWZ1bmN0aW9uIGMoZSxyKXtpZihlJiZlLmxlbmd0aD4wJiZyKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHIuaW5kZXhPZihlW3RdKSE9PS0xKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGYocil7dmFyIHQ9ZSgpO2lmKHQuY1Ape3ZhciBuPWMoTCxyKT9MOng7aWYoIShuJiZuLmxlbmd0aD4xKSlyZXR1cm4gcjtmb3IodmFyIG89Imh0dHBzOi8vIixhPTA7YTxuLmxlbmd0aDthKyspaWYoci5pbmRleE9mKG5bYV0pIT09LTEpe3ZhciBpPW5bYSsxPG4ubGVuZ3RoP2ErMTowXSxzPXIuc3Vic3RyaW5nKG5bYV0ubGVuZ3RoKTtyZXR1cm4gblthXS5zdWJzdHJpbmcoMCxvLmxlbmd0aCkhPT1vJiYoaT1vK2kscz1zLnN1YnN0cmluZyhvLmxlbmd0aCkpLGkrc31yZXR1cm4gcn1pZighKHgmJngubGVuZ3RoPjEpKXJldHVybiByO2Zvcih2YXIgZD0wO2Q8eC5sZW5ndGg7ZCsrKWlmKDA9PT1yLmluZGV4T2YoeFtkXSkpcmV0dXJuIHhbZCsxPHgubGVuZ3RoP2QrMTowXStyLnN1YnN0cmluZyh4W2RdLmxlbmd0aCk7cmV0dXJuIHJ9ZnVuY3Rpb24gbChlLHQsbixvKXtyZXR1cm4gcigiWyRMb2FkZXJdOiAiKyhSLmZhaWxNZXNzYWdlfHwiRmFpbGVkIiksbyksYltlXS5yZXRyeTx5PyhiW2VdLnJldHJ5KyssdihlLHQsbiksdm9pZCB1Ll9SZXBvcnRGYWlsdXJlKGJbZV0ucmV0cnksYltlXS5zcmNQYXRoKSk6dm9pZChuJiZuKCkpfWZ1bmN0aW9uIGgoZSx0LG4sbyl7aWYoZChvKSlyZXR1cm4gbChlLHQsbixvKTtyKCJbJExvYWRlcl06ICIrKFIuc3VjY2Vzc01lc3NhZ2V8fCJMb2FkZWQiKSxvKSx2KGUrMSx0LG4pO3ZhciBhPWJbZV0ub25TdWNjZXNzOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKGJbZV0uc3JjUGF0aCl9ZnVuY3Rpb24gdihlLG8sYSl7aWYoZTxiLmxlbmd0aCl7dmFyIGk9YltlXTtpZighaXx8IWkuc3JjUGF0aClyZXR1cm4gdm9pZCB2KGUrMSxvLGEpO2kucmV0cnk+MCYmKGkuc3JjUGF0aD1mKGkuc3JjUGF0aCksaS5vcmlnSWR8fChpLm9yaWdJZD1pLmlkKSxpLmlkPWkub3JpZ0lkKyJfUmV0cnlfIitpLnJldHJ5KTt2YXIgcz1uKGkuc3JjUGF0aCxpLmlkLGkuaW50ZWdyaXR5LGkudGFnTmFtZSk7cy5vbmxvYWQ9ZnVuY3Rpb24oKXtoKGUsbyxhLHMpfSxzLm9uZXJyb3I9ZnVuY3Rpb24oKXtsKGUsbyxhLHMpfSxzLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJsb2FkZWQiPT09cy5yZWFkeVN0YXRlP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtoKGUsbyxhLHMpfSw1MDApOiJjb21wbGV0ZSI9PT1zLnJlYWR5U3RhdGUmJmgoZSxvLGEscyl9LHQocykscigiWyRMb2FkZXJdOiBMb2FkaW5nICciKyhpLnNyY1BhdGh8fCIiKSsiJywgaWQ6IisoaS5pZHx8IiIpKX1lbHNlIG8mJm8oKX12YXIgcD1lKCkseT1wLnNsTWF4UmV0cnl8fDIsbT1wLmxvYWRlcnx8e30seD1tLmNkblJvb3RzfHxbXSxMPW0udGVuYW50QnJhbmRpbmdDZG5Sb290c3x8W10sUj10aGlzLGI9W107Ui5yZXRyeU9uRXJyb3I9ITAsUi5zdWNjZXNzTWVzc2FnZT0iTG9hZGVkIixSLmZhaWxNZXNzYWdlPSJFcnJvciIsUi5BZGQ9ZnVuY3Rpb24oZSxyLHQsbixvLGEpe2UmJmIucHVzaCh7c3JjUGF0aDplLGlkOnIscmV0cnk6bnx8MCxpbnRlZ3JpdHk6dCx0YWdOYW1lOm98fCJzY3JpcHQiLG9uU3VjY2VzczphfSl9LFIuQWRkRm9yUmVsb2FkPWZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5zcmN8fGUuaHJlZnx8IiI7Ui5BZGQodCwiQWRkRm9yUmVsb2FkIixlLmludGVncml0eSwxLGUudGFnTmFtZSxyKX0sUi5BZGRJZj1mdW5jdGlvbihlLHIsdCl7ZSYmUi5BZGQocix0KX0sUi5Mb2FkPWZ1bmN0aW9uKGUscil7digwLGUscil9fXZhciBjLGYsbD13aW5kb3csZz1sLmRvY3VtZW50LGg9Ii5jc3MiO3UuT249ZnVuY3Rpb24oZSxyLHQpe2lmKCFlKXRocm93IlRoZSB0YXJnZXQgZWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBjYW5ub3QgYmUgbnVsbC4iO3I/dS5PbkVycm9yKGUsdCk6dS5PblN1Y2Nlc3MoZSx0KX0sdS5PblN1Y2Nlc3M9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyJUaGUgdGFyZ2V0IGVsZW1lbnQgbXVzdCBiZSBwcm92aWRlZCBhbmQgY2Fubm90IGJlIG51bGwuIjtpZihkKGUpKXJldHVybiB1Lk9uRXJyb3IoZSx0KTt2YXIgbj1lLnNyY3x8ZS5ocmVmfHwiIixvPWEoKSxzPWkoKTtyKCJbJExvYWRlcl06IExvYWRlZCIsZSk7dmFyIGM9bmV3IHU7Yy5mYWlsTWVzc2FnZT0iUmVsb2FkIEZhaWxlZCIsYy5zdWNjZXNzTWVzc2FnZT0iUmVsb2FkIFN1Y2Nlc3MiLGMuTG9hZChudWxsLGZ1bmN0aW9uKCl7aWYobyl0aHJvdyJVbmV4cGVjdGVkIHN0YXRlLiBSZXNvdXJjZUxvYWRlci5Mb2FkKCkgZmFpbGVkIGRlc3BpdGUgaW5pdGlhbCBsb2FkIHN1Y2Nlc3MuIFsnIituKyInXSI7cyYmKGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ii9lcnJvci5hc3B4P2Vycj01MDQiKX0pfSx1Lk9uRXJyb3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNyY3x8ZS5ocmVmfHwiIixvPWEoKSxzPWkoKTtpZighZSl0aHJvdyJUaGUgdGFyZ2V0IGVsZW1lbnQgbXVzdCBiZSBwcm92aWRlZCBhbmQgY2Fubm90IGJlIG51bGwuIjtyKCJbJExvYWRlcl06IEZhaWxlZCIsZSk7dmFyIGQ9bmV3IHU7ZC5mYWlsTWVzc2FnZT0iUmVsb2FkIEZhaWxlZCIsZC5zdWNjZXNzTWVzc2FnZT0iUmVsb2FkIFN1Y2Nlc3MiLGQuQWRkRm9yUmVsb2FkKGUsdCksZC5Mb2FkKG51bGwsZnVuY3Rpb24oKXtpZihvKXRocm93IkZhaWxlZCB0byBsb2FkIGV4dGVybmFsIHJlc291cmNlIFsnIituKyInXSI7cyYmKGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ii9lcnJvci5hc3B4P2Vycj01MDQiKX0pLHUuX1JlcG9ydEZhaWx1cmUoMCxuKX0sdS5fUmVwb3J0RmFpbHVyZT1mdW5jdGlvbihlLHIpe2lmKHMoKSYmIXQoKSl0aHJvdyJbUmV0cnkgIitlKyJdIEZhaWxlZCB0byBsb2FkIGV4dGVybmFsIHJlc291cmNlIFsnIityKyInXSwgcmVsb2FkaW5nIGZyb20gZmFsbGJhY2sgQ0ROIGVuZHBvaW50In0sbC4kTG9hZGVyPXV9KCl9XSkpOzwvc2NyaXB0PjxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvMTYuMDAwLjMwMjkzLjIvaW1hZ2VzL2Zhdmljb24uaWNvIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiIG5vbmNlPSJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPSI+Ym9keXtkaXNwbGF5Om5vbmU7fTwvc3R5bGU+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG5vbmNlPSJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPSI+aWYgKHRvcCAhPSBzZWxmKXt0cnl7dG9wLmxvY2F0aW9uLnJlcGxhY2Uoc2VsZi5sb2NhdGlvbi5ocmVmKTt9Y2F0Y2ggKGUpe319ZWxzZXtkb2N1bWVudC53cml0ZSh1bmVzY2FwZSgnJTNDJTczJykgKyAndHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbm9uY2U9Ino4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9Ij5ib2R5e2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudDt9PC9zdHlsZT4nKTt9PC9zY3JpcHQ+PHN0eWxlIHR5cGU9InRleHQvY3NzIiBub25jZT0iejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT0iPmJvZHl7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O308L3N0eWxlPjxub3NjcmlwdD48c3R5bGUgdHlwZT0idGV4dC9jc3MiIG5vbmNlPSJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPSI+Ym9keXtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7fTwvc3R5bGU+PC9ub3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Ino4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9Ij4hZnVuY3Rpb24oZSxyKXtmb3IodmFyIHQgaW4gcillW3RdPXJbdF19KHRoaXMsZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcihuKXtpZih0W25dKXJldHVybiB0W25dLmV4cG9ydHM7dmFyIGk9dFtuXT17ZXhwb3J0czp7fSxpZDpuLGxvYWRlZDohMX07cmV0dXJuIGVbbl0uY2FsbChpLmV4cG9ydHMsaSxpLmV4cG9ydHMsciksaS5sb2FkZWQ9ITAsaS5leHBvcnRzfXZhciB0PXt9O3JldHVybiByLm09ZSxyLmM9dCxyLnA9IiIscigwKX0oW2Z1bmN0aW9uKGUscil7dmFyIHQ9d2luZG93LG49dC5uYXZpZ2F0b3I7dC5nX2lTUlNGYWlsZWQ9MCx0Lmdfc1NSU1N1Y2Nlc3M9IiIsci5TUlNSZXRyeT1mdW5jdGlvbihlLHIsaSxzLGEpe3ZhciBvPTEsYz11bmVzY2FwZSgiJTNDc2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCciKTthJiYoYys9IiBjcm9zc29yaWdpbj0nYW5vbnltb3VzJyBpbnRlZ3JpdHk9JyIrYSsiJyIpLGMrPSIgc3JjPSciO3ZhciB1PXVuZXNjYXBlKCInJTNFJTNDL3NjcmlwdCUzRSIpLFM9cjtpZihuJiZuLnVzZXJBZ2VudCYmcyYmcyE9PXIpe3ZhciBkPW4udXNlckFnZW50LnRvTG93ZXJDYXNlKCkscD1kLmluZGV4T2YoImVkZ2UiKT49MDtpZighcCl7dmFyIGY9ZC5tYXRjaCgvY2hyb21lXC8oWzAtOV0rKVwuLyksZz1mJiYyPT09Zi5sZW5ndGgmJiFpc05hTihmWzFdKSYmcGFyc2VJbnQoZlsxXSk+NTQ7ZyYmKFM9cyl9fXQuZ19zU1JTU3VjY2Vzcy5pbmRleE9mKGUpPT09LTEmJigidW5kZWZpbmVkIj09dHlwZW9mIHRbZV0/KHQuZ19pU1JTRmFpbGVkPTEsaTw9byYmZG9jdW1lbnQud3JpdGUoYytTK3UpKTp0Lmdfc1NSU1N1Y2Nlc3MrPWUrInwiK2krIiwiKX19XSkpO3ZhciBnX2R0Rmlyc3RCeXRlPW5ldyBEYXRlKCk7dmFyIGdfb2JqUGFnZU1vZGUgPSBudWxsOzwvc2NyaXB0PjxzdHlsZSBkYXRhLW1ha2Utc3R5bGVzLWJ1Y2tldD0iZCI+PC9zdHlsZT48c3R5bGUgZGF0YS1tYWtlLXN0eWxlcy1idWNrZXQ9ImYiPjwvc3R5bGU+PHN0eWxlIGRhdGEtbWFrZS1zdHlsZXMtYnVja2V0PSJoIj48L3N0eWxlPjxzdHlsZSBkYXRhLW1ha2Utc3R5bGVzLWJ1Y2tldD0iYSI+PC9zdHlsZT48c3R5bGUgZGF0YS1tYWtlLXN0eWxlcy1idWNrZXQ9ImsiPjwvc3R5bGU+PHN0eWxlIGRhdGEtbWFrZS1zdHlsZXMtYnVja2V0PSJ0Ij48L3N0eWxlPjwvaGVhZD48Ym9keT48ZGl2IGlkPSJyb290Ij48ZGl2IGRhdGEtdGVzdGlkPSJhcHAtYm91bmRhcnkiPjxkaXYgZGlyPSIiIGRhdGEtdGVzdGlkPSJkaXJlY3Rpb25XcmFwcGVyIGxpZ2h0Ym94LWxheW91dCIgY2xhc3M9Il9fX3N4bzl4ODAgZjF3djV5cmwiPjxkaXYgY2xhc3M9Il9fXzE5anVrd2QgZjFldXY0M2YgZjFsMDJzamwgZmx5NXgzZiBmMTV0d3R1ayBmMWUzMWI0ZCBmMXlhYjNyMSBmMXZnYzJzMyBmMW95M2RwYyBmNXpwNGYiIGRhdGEtdGVzdGlkPSJnYW1lcGFkTmF2aWdhdGlvbldyYXBwZXIiPjxkaXYgaWQ9ImJhY2tncm91bmQtY29udGFpbmVyIiBkYXRhLXRlc3RpZD0iYmFja2dyb3VuZC1jb250YWluZXIiIGNsYXNzPSIgX19fZmdmbHJ2MCBmMTV0d3R1ayBmbHk1eDNmIGYxbDAyc2psIGZrNHdxM3EgZm82eHF2YSBmajlqOGw4IGYxYjZkampiIGZ3eXVnZGMgZjE5ZG9nOGEgZjF2Z2MyczMgZjFic3VpbWgiIHJvbGU9InByZXNlbnRhdGlvbiIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNDIsIDI0MiwgMjQyKTsiPjxkaXYgZGF0YS10ZXN0aWQ9ImJhY2tncm91bmRJbWFnZSIgaWQ9ImJhY2tncm91bmQtaW1hZ2UiIGNsYXNzPSIgZXh0LWJhY2tncm91bmQtaW1hZ2UgX19fZmdmbHJ2MCBmMTV0d3R1ayBmbHk1eDNmIGYxbDAyc2psIGZrNHdxM3EgZm82eHF2YSBmajlqOGw4IGYxYjZkampiIGZ3eXVnZGMgZjE5ZG9nOGEgZjF2Z2MyczMgZjFic3VpbWgiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJnF1b3Q7aHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvc2hhcmVkLzUvanMvLi4vaW1hZ2VzLzJfYmMzZDMyYTY5Njg5NWY3OGMxOWQuc3ZnJnF1b3Q7KTsiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im91dGVyIiBkYXRhLXRlc3RpZD0ib3V0ZXIiIGNsYXNzPSJfX18xbzR1Z216IGYxdzRubXAwIGYxZXV2NDNmIGYxbDAyc2psIGZseTV4M2YgZjE1dHd0dWsgZjFlMzFiNGQgZjF5YWIzcjEgZjF2Z2MyczMiIHJvbGU9InByZXNlbnRhdGlvbiIgZGF0YS1zY3JvbGxhYmxlPSJ0cnVlIj48ZGl2IGlkPSJtaWRkbGUiIGNsYXNzPSJleHQtbWlkZGxlIF9fXzE2ZzZ4MG8gZjE1cHQ1ZXMgZm1ydjRscyBmMWhpaHlwdyIgcm9sZT0ibWFpbiI+PGRpdiBjbGFzcz0iIj48ZGl2PjxkaXY+PGRpdiBpZD0iaW5uZXIiIGRhdGEtdGVzdGlkPSJpbm5lciIgY2xhc3M9IiAgICBleHQtc2lnbi1pbi1ib3ggX19fMXQzOWFjbSBmY2d4dDBvIGYxdWp1c2o2IGYxMHBpMTNuIGYxN24xaG9hIGZkYXZsNmcgZjFxbzZkNWggZmRldXhqZCBmMWV6YjU0diBmOXkwc2t4IGYxNDBrbmJ2IGZvbHhyOWEgZjFmZHRkNDcgZjExcGo2ZzEgZjF4dmsxYWkgZjE0aHA1ZHggZmgyYnNpbyBmMXA5bzFiYSBmMXNpbDZtdyBmeW9vbXNvIGYxaGR4cG4yIGZpcGRwaG8gZjEzY3JlcWogZjFiMDlrN3IgZjFzdzE1Z3MgZjFqZjMzcnQgZmIybnVucCBmMW5mazcyYiBmaWVnODZ3IGZ3M2VpZG4gZjF5YW45NGogZnN4YjBnZyBmMThkdjN6MSBmMTY1Nzc5dyBmOGE2ajhyIGYxOWcwYWMgZmkyM2x2dyBmMWxvcTVtMSBmb2o3bTlmIGYxeWVieTJ5IGYxZ2w0NXcxIGYxZzF6bmQ5IGY2ZmNoNTMgZjFidGd3dHAgZmdkM3U5OSBmMXBzaHF0NSI+PGRpdiBpZD0ibGlnaHRib3gtY292ZXIiIGNsYXNzPSJfX18xcmJhaXhsIGZ5Nm1sNm4gZms3M3Z4MSBmMXZlNTUzayBmMWJzdWltaCBmMWwwMnNqbCBmbHk1eDNmIGYxZXV2NDNmIGYxNXR3dHVrIGYxdmdjMnMzIGYxc3I1ZmMgZjhrZWZlciBmOWVvZndyIGYxeHhycGVoIj48L2Rpdj48ZGl2PjxpbWcgZGF0YS10ZXN0aWQ9ImFjY2Vzc2libGVJbWciIGNsYXNzPSJfX18xdjQxN3cwIGYycmJ3ZnMgZnJ2Z2g1NSIgc3JjPSJodHRwczovL2xvZ2luY2RuLm1zZnRhdXRoLm5ldC9zaGFyZWQvNS9qcy8uLi9pbWFnZXMvbWljcm9zb2Z0X2xvZ29fZWU1YzhkOWZiNjI0OGM5MzhmZDAuc3ZnIiBhbHQ9Ik1pY3Jvc29mdCIgcm9sZT0iIj48ZGl2IGlkPSJwYWdlQ29udGVudCIgZGF0YS10ZXN0aWQ9InBhZ2luYXRpb25WaWV3IiBjbGFzcz0iX19fdTVsdXRtMCBmMTBwaTEzbiBmb2g5OGk2Ij48Zm9ybSBkYXRhLXRlc3RpZD0icG9zdC1yZWRpcmVjdC1mb3JtIiBtZXRob2Q9IlBPU1QiIGFyaWEtaGlkZGVuPSJ0cnVlIiB0YXJnZXQ9Il90b3AiIGFjdGlvbj0iIj48L2Zvcm0+PGRpdiBkYXRhLXRlc3RpZD0icm91dGVBbmltYXRpb24iIGNsYXNzPSIgX19fZ3Y1amg0MCBmMTlwaDg4YiBmMTBwaTEzbiBmNmM2anJzIGYxbG9xNW0xIGZ5d3lwdGUgZnZuNGZvNyBmMW41a215cyI+PGRpdj48Zm9ybSBuYW1lPSJmMSIgaWQ9ImkwMjgxIiBkYXRhLXRlc3RpZD0idXNlcm5hbWVGb3JtIiBub3ZhbGlkYXRlPSIiIHNwZWxsY2hlY2s9ImZhbHNlIiBtZXRob2Q9InBvc3QiIGF1dG9jb21wbGV0ZT0iZmFsc2UiPjxkaXYgY2xhc3M9Il9fX2NkZnlnZzAgZmZtaGhsZCBmenpqM3BqIGZodXExZ24gZjMzNnRqdyBmMXVpbmZvdCBmMWpsaHNtZCBmMW5iYmx2cCBmaWZwN3l2IGYxb3Y0eGYxIGYxYXNkdHc0Ij48ZGl2PjxkaXYgcm9sZT0iaGVhZGluZyIgYXJpYS1sZXZlbD0iMSIgaWQ9InVzZXJuYW1lVGl0bGUiPlNpZ24gaW48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGRhdGEtdGVzdGlkPSJpbnB1dENvbXBvbmVudFdyYXBwZXIiIGNsYXNzPSJfX18xMDJoZjRtIGYxdHlxMHdlIGYxMXFtZ3V2IGYxd3Y1eXJsIj48ZGl2PjxkaXYgY2xhc3M9Il9fXzkxN2o3MTAgZnRnbTMwNCBmbHk1eDNmIGZ3cmd3aHcgZjE1dHBpM2kgZjEwcGkxM24gZnJlY3c2dCBmMW1tZ2pvayBmMXR0bzJoOCBmMWMycGI4NCBmeWZ0M3BiIGYxcm9mMzR5IGYxMTcybjczIGY0aHlsY2UgZjE4czNmYXUgZjF5bXc2dTMgZjF4cXJqMWQgZjE2MGtsZTAgZjZyeWRwdSBmMWk5bG12YSBmc3B2ZXFoIGYyeDdiY2QgZjFpbWN2ZjMgZjFieGljejMgZjFrZjZmM2EgZmFqcTB6NCBmeXcwaGF2IGYxYTd4a2xzIGZucG0zbCBmc2MzbXZvIGYxczY2cnQwIGY3M3VnejEgZjFpdzh2djUgZjVpdjM3MCBmMXl0dzJtOCBmZWg1bTVjIGY3dXBubWwgZmV4dXV1ayBma2xhZ3dxIGZzamtsdmcgZjF1dnNjbGsgZjEyM3pjYWkiPjxpbnB1dCBpZD0iaTAxMTYiIGRhdGEtdGVzdGlkPSJpMDExNiIgbmFtZT0ibG9naW5mbXQiIHBsYWNlaG9sZGVyPSJFbWFpbCwgcGhvbmUsIG9yIFNreXBlIiB0eXBlPSJlbWFpbCIgbWF4bGVuZ3RoPSIxMTMiIGFyaWEtbGFiZWw9IkVudGVyIHlvdXIgZW1haWwsIHBob25lLCBvciBTa3lwZS4iIGFyaWEtZGVzY3JpYmVkYnk9InVzZXJuYW1lVGl0bGUiIGNsYXNzPSIiIGF1dG9jb21wbGV0ZT0idXNlcm5hbWUiIHZhbHVlPSIiIHN0eWxlPSJib3JkZXItY29sb3I6IHJnYigwLCAxMDMsIDE4NCk7Ij48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJfX18xMDhyODZ4IGZlZGdzZXkgZjEwcGkxM24gZjF3djV5cmwgZjE2MWtuYjAgZjEyaHVpaXciIGRhdGEtdGVzdGlkPSJzZWNvbmRhcnlDb250ZW50Ij48ZGl2IGNsYXNzPSJfX18xMDJoZjRtIGYxdHlxMHdlIGYxMXFtZ3V2IGYxd3Y1eXJsIj48ZGl2IGNsYXNzPSJfX193cXN5eTQwIGYxNXRwaTNpIj5ObyBhY2NvdW50PyA8c3BhbiB0YWJpbmRleD0iMCIgcm9sZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJDcmVhdGUgYSBNaWNyb3NvZnQgYWNjb3VudCIgaWQ9InNpZ251cCIgY2xhc3M9Il9fXzNjaWZicjAgZjExeHZzcGUgZjFic2pybTMgZjNybXR2YSBmMWVybjQ1ZSBmMW43MW90biBmMWg4aGI3NyBmMWRlZWZpdyBmcnlrNXVyIGZ2Nno2emMgZjFjaW80ZzkgZjFtd2I5eTUgZjF5bm15Z28gZjEyMWc4bmQgZjFpODJlYXEgZjg0OTFkeCBmMW5iYmx2cCBmaWZwN3l2IGYxb3Y0eGYxIGYxYXNkdHc0IGYxcnM4d2p1IGYxbXR5amhpIGYxZWR4enQgZjNhOHM4eiI+Q3JlYXRlIG9uZSE8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBkYXRhLXRlc3RpZD0iaW5wdXRDb250YWluZXIiIGNsYXNzPSJfX18xZmJhd3ViIGYyMWNjYnQgZjF5MXk4ZWogZjF4eXIzZnUiPjxkaXY+PGRpdiBjbGFzcz0iX19fMTAyaGY0bSBmMXR5cTB3ZSBmMTFxbWd1diBmMXd2NXlybCI+PGRpdiBjbGFzcz0iZXh0LWJ1dHRvbi1maWVsZC1jb250YWluZXIgIF9fXzFhbzV1Y2QgZjFldXY0M2YgZjF5YWIzcjEgZmx5NXgzZiBmZXMzdGN6IGYxdnRvYTE5IGYxNmV6MTYxIGZvbmdrZXciIGRhdGEtdGVzdGlkPSJ0ZXh0QnV0dG9uQ29udGFpbmVyIj48ZGl2IGNsYXNzPSJleHQtYnV0dG9uLWl0ZW0gX19fZnJ4OW95MCBmMTR0M25zMCI+PGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGlkPSJpZFNJQnV0dG9uOSIgY2xhc3M9ImV4dC1wcmltYXJ5IGV4dC1idXR0b24gX19fMWgyaG5iMSBmMTdoZHlrIGYxb3VkeSBmMWQ0ZHFnMCBmMTY2NDN2NyBmMXVnYjhkdSBmN3kyNnhlIGYxM2hmdmNqIGZtMDdyaDEgZjFhcHNhaHAgZmQwcmV4IGYxY3BpcjF6IGYxNmVubzJoIGYxOHIzN3Q0IGZ6amxkdmggZjFxdDM4Z2wgZjhyYWtsOSBmMWcwZnBzeCBmMTZoMWZicyBmc2d2ZDMzIGZtdWFqZ3QgZjE3bTk0dCBmOXE0eXF1IGZoZTB0ZDcgZndicGszNSBmMXdjbDJvYiBmMWx0azRoZCBmMW95ZmV0MyBmMWs1ZmZ0YiBmbHU5dTd3IGZhNHFpNTcgZjExemowa3kgZjQzbzZobiBmMTQ4OTR2ciBmMXV1c2g5OCBmcjEwc293IGYxcWQzYm02IGZ0eHIwNTggZjF4OG0yMnAgZjE4a3llb2ogZjd1dmo1MSBmMWVtd3o3bCBmejF4dXFpIGZzcnpqaHcgZnVyNjJ2ciBmMWYyYnh2ZSBmMTlyeHkxdiBmMWtzNXQ1biBmZzIwOXJkIGYxaHZnOWZnIGYxaWs0dTN1IGZkNjcyMHQgZjF1NWVpaHIgZnRseHc4MiBmajd5OTJ0IGYxNTRvYjlvIGZiMXk1MDcgZjE2cWxza3AgZjE1ZHFjNmwgZms5eXU3diBmMWE5NHpndyBmYmxrdmswIGYydWQ1NGMgZjFyeDZ6cGogZjF5ZWVyYmsgZjFhcGVlaHUgZmM1aXk5dCBmMXcwdzlhNyBmNHJmMDl3IGYxbGJ5ZnNxIGYxanZtbmtlIGZmdTd1NXkgZnI1Y2Q4cyBmdTd6bTYgZjFsM2lrbHcgZjF3Y3RmZTUgZnI0dmltayBmMTcxeHNrcCBmMW10cnR4ZiBmdDI5anQzIGYxZGtha2RnIGY3dWEyYmggZjFueHM1eG4gZjFlcm40NWUgZjFuNzFvdG4gZjFoOGhiNzcgZjFkZWVmaXcgZnhkdHZqZiBmeXRkdTJlIGYxNHQzbnMwIGYxMHJhOWhxIGYxMXFybDZ1IGYxeTJ4eWptIGZqbGJoNzYgZjEwcGkxM24gZjZkemo1eiBmMTdtY2NsYSBmejVzdGl4IGYxcDlvMWJhIGYxc2lsNm13IGZtcnY0bHMgZjFjbWJ1d2ogZjFjeXQ5bzggZjFpcmV0dzggZnY2cDRubCBmbnNmN3gxIGY4NDkxZHggZmo1ZGFvbyBmbm1oZnlyIGYxZTM1cWwyIGZhdGJ5a28gZjFncnpjODMgZmIweGE3ZSBmbGpnMmRhIGYxYzJ1eWttIGYxZXFqMXJkIGY3bjE0NXogZnQwa3NvbiBmZjQ3MmdwIGY0eXljN20gZmdnZWp3aCBmdDJhZmxjIGY5Zjd2YWEgZm1qYWE1dSBmbHV0b3F5IGYxMnFiMncgZjFzOWlxem4gZjFvMnd2ZnEgZmtia2FvdSBmams5bnplIGYxMGtibmE3IGY5ZXg3NTcgZjFibjdxYnkgZjF5eDU5NzYgZnF2ODk1YiI+TmV4dDwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZm9ybT48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJfX18xZDBqMmR5IGZjZ3h0MG8gZjF1anVzajYgZjEwcGkxM24gZmRhdmw2ZyBmMTZ3MzJxaSBmMTduMWhvYSBmMTA0d3FmbCBmMTRocDVkeCBmMWcweDdrYSBmMXFjaDlhbiBmMWNuZDQ3ZiBmaHhqdTBpIGY5aWp3ZDUgZjFwYWZpcnEgZnN3Y3JyeCBmMWIwOWs3ciBmaXBkcGhvIGZiMm51bnAgZjFuZms3MmIiIHJvbGU9Imxpc3RpdGVtIiBhcmlhLWxhYmVsPSJTaWduLWluIG9wdGlvbnMiPjxkaXYgY2xhc3M9Il9fX3Q3YXhrMDAgZm9seHI5YSBmMXh2azFhaSBmenV1b20xIGY3dHprc2IgZjF4YTAyY3AgZjFvYjJjbXIgZm81c3BwbSBmMWhqNjRtcSBmMXh4eHR1MiBmMWR2cjgzMyI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJfX18xcGkzNG1lIGYxazZmZHVoIGZseTV4M2YgZjF3NG5tcDAgZjE0bTNuaXAgZnA5YndtciBmZGV1eGpkIGYxNTB1b2E0IGY5eTBza3ggZjFiMDlrN3IgZmlwZHBobyBmM3JtdHZhIGYxcGl0NTViIGYxb3JxYXQxIGYxMzZtY2JpIGZmYnZ3eGQgZjl4YWFncSBmODQ5MWR4IGY1cjZob2YgZjFlMzVxbDIgZjFkdndpNzYgZnk3eHE3YiBmb3FmMTQyIGYxNjZvOTZ6IGYxc2RtYmxzIGYxYnVvZzlxIj48ZGl2IGNsYXNzPSJfX185dGk0YTIwIGYxNXB0NWVzIGZtcnY0bHMgZjEwcGkxM24gZjFzem9lOTYgZjFkMnJxMTAiIGRhdGEtdGVzdGlkPSJtYWluSW1hZ2UiPjxpbWcgZGF0YS10ZXN0aWQ9ImFjY2Vzc2libGVJbWciIGNsYXNzPSIgX19femJ0NzczMCBmMTBwaTEzbiBmbXJ2NGxzIGYxc3pvZTk2IGYxZDJycTEwIiBzcmM9Imh0dHBzOi8vbG9naW5jZG4ubXNmdGF1dGgubmV0L3NoYXJlZC81L2pzLy4uL2ltYWdlcy9zaWduaW5fb3B0aW9uc180ZTQ4MDQ2Y2U3NGY0Yjg5ZDQ1MC5zdmciIGFsdD0iIiByb2xlPSIiPjwvZGl2PjxkaXYgY2xhc3M9Il9fX2E2cnNiaTAgZjE1cHQ1ZXMgZm1ydjRscyBmMW83MDBhdiBmMXUwbGNqOCBmMTA0d3FmbCBmamxiaDc2IGYxNWtlbWxjIGY5aWp3ZDUiPjxkaXYgZGF0YS10ZXN0aWQ9Im1haW5UZXh0Ij5TaWduLWluIG9wdGlvbnM8L2Rpdj48L2Rpdj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJmb290ZXIiIGRhdGEtdGVzdGlkPSJmb290ZXIiIHJvbGU9ImNvbnRlbnRpbmZvIiBjbGFzcz0iICAgZXh0LWZvb3RlciBfX19qd3E0cGEwIGYxZXV2NDNmIGYxdmdjMnMzIGYxeWFiM3IxIGZseTV4M2YgZjFtdGQ2NHkgZjF5N3EzajkgZjF3aXJnNmIgZjFoZ3JkcmwgZjF5c2Z5c3ogZnlybGU4aiBmODNkZTZ5Ij48ZGl2IGlkPSJmb290ZXJMaW5rcyIgY2xhc3M9ImV4dC1mb290ZXItbGlua3MgX19fbHdhY2RoMCBmMWh1M3BxNiBmMTFxbWd1diBmMTlmNHR3diBmMXR5cTB3ZSBmYW54ZDMwIGYxNTBuaXg2IGYxMnY5bXJ3IGZrdmNjM2YgZjJqbGF3bCBmdnJyZzVtIGZqeXM3dGsgZjFqZjMzcnQgZnQxaGVubyI+PGEgaWQ9ImZ0clRlcm1zIiBocmVmPSJodHRwczovL2xvZ2luLmxpdmUuY29tL2dscy5zcmY/dXJsSUQ9V2luTGl2ZVRlcm1zT2ZVc2UmYW1wO21rdD1FTi1VUyZhbXA7dWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciIgY2xhc3M9IiAgIGV4dC1mb290ZXItaXRlbSBleHQtZm9vdGVyLWNvbnRlbnQgX19fMXRtZDcwNCBmdXNnaXd6IGYxdWd6d3dnIGYzMzZ0ancgZno1c3RpeCBmMTR0M25zMCBmZjlzM3l3IGYxcGhraTQzIGYxYnNqcm0zIGYxd3pzbnRuIGYxbXZ5MTMwIGZvcDZpdGkiPlRlcm1zIG9mIHVzZTwvYT48YSBpZD0iZnRyUHJpdmFjeSIgaHJlZj0iaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9nbHMuc3JmP3VybElEPU1TTlByaXZhY3lTdGF0ZW1lbnQmYW1wO21rdD1FTi1VUyZhbXA7dWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub29wZW5lciIgY2xhc3M9IiAgIGV4dC1mb290ZXItaXRlbSBleHQtZm9vdGVyLWNvbnRlbnQgX19fMXRtZDcwNCBmdXNnaXd6IGYxdWd6d3dnIGYzMzZ0ancgZno1c3RpeCBmMTR0M25zMCBmZjlzM3l3IGYxcGhraTQzIGYxYnNqcm0zIGYxd3pzbnRuIGYxbXZ5MTMwIGZvcDZpdGkiPlByaXZhY3kgJmFtcDsgY29va2llczwvYT48YSBpZD0ibW9yZU9wdGlvbnMiIGhyZWY9IiMiIHJvbGU9ImJ1dHRvbiIgY2xhc3M9IiAgIGV4dC1mb290ZXItaXRlbSBleHQtZm9vdGVyLWNvbnRlbnQgZXh0LWRlYnVnLWl0ZW0gX19fMXk2OG5lOCBmdXNnaXd6IGY0eWJzcnggZjgyaXRhZiBmejVzdGl4IGYxNHQzbnMwIGZmOXMzeXcgZjFwaGtpNDMgZjFic2pybTMgZjF3enNudG4gZjFtdnkxMzAgZm9wNml0aSBmMW1oNDd6aCBmMTJrbHRzbiBmaHVxMWduIGYxcWY5NjUzIiBhcmlhLWxhYmVsPSJDbGljayBoZXJlIGZvciB0cm91Ymxlc2hvb3RpbmcgaW5mb3JtYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4uLi48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibW9kYWwtcm9vdCI+PC9kaXY+PC9ib2R5PjwvaHRtbD4=","disable_correlation":true,"to_ids":false,"type":"attachment","uuid":"fa33619f-5864-4ee4-a107-ff925699bab3","value":"rendered_page.html"},{"category":"Network activity","comment":"The address in the browser address bar at the end of the capture.","disable_correlation":false,"to_ids":true,"type":"url","uuid":"43baf960-b17e-4731-bccd-ed05b8b8020a","value":"https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=157&ct=1722544204&rver=7.5.2156.0&wp=SA_20MIN&wreply=https%3A%2F%2Faccount.live.com%2Fa%3Fuaid%3D0676aaccae64401a9e7010b41972c4f6&lc=1033&id=38936&mkt=en-US&uaid=0676aaccae64401a9e7010b41972c4f6"}],"Object":[{"Attribute":[{"category":"Network activity","disable_correlation":false,"object_relation":"url","to_ids":true,"type":"url","uuid":"b44510bd-fd2f-45c8-beeb-0587613475b2","value":"https://aka.ms/alca"},{"category":"Network activity","disable_correlation":false,"object_relation":"host","to_ids":true,"type":"hostname","uuid":"e3cf7d6d-43d7-4ee7-becf-de880d698666","value":"aka.ms"},{"category":"Network activity","disable_correlation":false,"object_relation":"domain","to_ids":true,"type":"domain","uuid":"84c722f6-57a2-4ed5-ac6b-89ac95131328","value":"aka.ms"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"0c2c9779-4d12-472f-9177-a19add34d5c3","value":"2.16.210.157"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"de56b48c-345f-420c-a236-9e631dcadc69","value":"23.59.18.10"}],"ObjectReference":[{"comment":"Capture on lookyloo","object_uuid":"e99e8d9d-b89a-47f6-8bce-94c9b3f02109","referenced_uuid":"803a1612-d90b-4922-946c-aa754b01d275","relationship_type":"captured-by","uuid":"ea64bc1f-4f7d-486c-98b9-b7771ed9263f"},{"object_uuid":"e99e8d9d-b89a-47f6-8bce-94c9b3f02109","referenced_uuid":"dd8a7d5c-6c63-4412-952b-7b6f7934881e","relationship_type":"redirects-to","uuid":"1bad748c-2bce-4857-820b-918b74dcd27e"}],"comment":"Submitted URL","description":"url object describes an url along with its normalized field (like extracted using faup parsing library) and its metadata.","distribution":"5","first_seen":"2024-08-01T20:30:03.667000+00:00","meta-category":"network","name":"url","parsed_url":null,"sharing_group_id":"0","template_uuid":"60efb77b-40b5-4c46-871b-ed1ed999fce5","template_version":"10","uuid":"e99e8d9d-b89a-47f6-8bce-94c9b3f02109"},{"Attribute":[{"category":"Network activity","disable_correlation":false,"object_relation":"url","to_ids":true,"type":"url","uuid":"923918aa-f243-4bbf-ac61-82e8b22e75ee","value":"https://account.live.com/a"},{"category":"Network activity","disable_correlation":false,"object_relation":"host","to_ids":true,"type":"hostname","uuid":"5ff2fb0d-e76b-4ba1-ba36-ed14f47c2141","value":"account.live.com"},{"category":"Network activity","disable_correlation":false,"object_relation":"domain","to_ids":true,"type":"domain","uuid":"44c5529c-54fc-4afc-80b5-8b86d21a9e54","value":"live.com"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"1e2800cf-5f05-43f8-87fc-c13ca854cfdf","value":"20.190.160.67"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"d727320f-bff3-4693-a970-b671ef6cbe64","value":"40.126.32.76"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"e84ae9c0-f37e-4482-b6e8-a414e911c319","value":"20.190.160.22"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"0c3ca7e8-4eb6-4914-a034-4bd97cd1e69d","value":"20.190.160.20"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"40b32df2-65f7-4217-9a95-7ea3c7e5c044","value":"40.126.32.134"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"499d7f57-8f71-423f-a361-87656f4232df","value":"20.190.160.64"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"8a78b3df-e052-4313-8bd6-f6dabbe9c238","value":"20.190.160.132"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"78e86fa0-1d20-474a-b840-240066f62e3d","value":"20.190.160.66"}],"ObjectReference":[{"object_uuid":"dd8a7d5c-6c63-4412-952b-7b6f7934881e","referenced_uuid":"3b040b6b-e234-4176-ad86-603bc0190c08","relationship_type":"redirects-to","uuid":"cf497d66-4b93-4c89-85e0-6cb1ebb8a6fc"}],"comment":"Redirect 1","description":"url object describes an url along with its normalized field (like extracted using faup parsing library) and its metadata.","distribution":"5","first_seen":"2024-08-01T20:30:04.070000+00:00","meta-category":"network","name":"url","parsed_url":null,"sharing_group_id":"0","template_uuid":"60efb77b-40b5-4c46-871b-ed1ed999fce5","template_version":"10","uuid":"dd8a7d5c-6c63-4412-952b-7b6f7934881e"},{"Attribute":[{"category":"Network activity","disable_correlation":false,"object_relation":"url","to_ids":true,"type":"url","uuid":"6a6faee0-3732-4c63-b0fe-c44a9c917e0c","value":"https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=157&ct=1722544204&rver=7.5.2156.0&wp=SA_20MIN&wreply=https://account.live.com/a?uaid=0676aaccae64401a9e7010b41972c4f6&lc=1033&id=38936&mkt=en-US&uaid=0676aaccae64401a9e7010b41972c4f6"},{"category":"Network activity","disable_correlation":false,"object_relation":"host","to_ids":true,"type":"hostname","uuid":"96fb9367-7dde-4533-a08b-e21f2a803179","value":"login.live.com"},{"category":"Network activity","disable_correlation":false,"object_relation":"domain","to_ids":true,"type":"domain","uuid":"a9519359-ab65-4cc4-9dda-840df76847a4","value":"live.com"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"70ba6ee9-2010-441c-ad49-a3866eb2c7ce","value":"20.190.160.67"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"63aae5f9-65fc-4b88-9fdd-0dd8870acbdc","value":"40.126.32.76"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"dc2424db-39f0-49a6-baf9-ea99621c99cb","value":"20.190.160.22"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"dcac0810-81d4-4514-a02a-d4e239f695c5","value":"20.190.160.20"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"dcfe0204-aa1c-4df7-9515-795ea38657a7","value":"40.126.32.134"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"13c55555-95e5-4056-bf5e-05a78dd26c15","value":"20.190.160.64"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"7f55ca7a-48a7-450a-a6a9-6fd0049a959e","value":"20.190.160.132"},{"category":"Network activity","disable_correlation":false,"object_relation":"ip","to_ids":true,"type":"ip-dst","uuid":"967ad33e-f1b1-4beb-b64a-dc8cccc6c07c","value":"20.190.160.66"},{"category":"Network activity","disable_correlation":false,"object_relation":"dom-hash","to_ids":true,"type":"dom-hash","uuid":"f1005ab7-9171-4bab-ae30-60cc930c15ac","value":"452535a093c51d6bedbb7f73bb63df19"}],"comment":"Last redirect (2)","description":"url object describes an url along with its normalized field (like extracted using faup parsing library) and its metadata.","distribution":"5","first_seen":"2024-08-01T20:30:04.355000+00:00","meta-category":"network","name":"url","parsed_url":null,"sharing_group_id":"0","template_uuid":"60efb77b-40b5-4c46-871b-ed1ed999fce5","template_version":"10","uuid":"3b040b6b-e234-4176-ad86-603bc0190c08"},{"Attribute":[{"category":"Payload delivery","disable_correlation":true,"object_relation":"filename","to_ids":true,"type":"filename","uuid":"66d4d934-d5a9-464e-9a91-7d216c44c5b6","value":"login.srf"},{"category":"Other","disable_correlation":true,"object_relation":"size-in-bytes","to_ids":false,"type":"size-in-bytes","uuid":"7d1695a1-1302-4f10-80d6-983831f31c0b","value":"26308"},{"category":"Other","disable_correlation":true,"object_relation":"entropy","to_ids":false,"type":"float","uuid":"52a1c576-c257-461e-8379-5d22483498a8","value":5.79956813852803},{"category":"Payload delivery","disable_correlation":false,"object_relation":"md5","to_ids":true,"type":"md5","uuid":"b7967496-a009-4a8a-8ba5-82a658df06bf","value":"cbe960a8deafd86dbdf95e6068bf77fa"},{"category":"Payload delivery","disable_correlation":false,"object_relation":"sha1","to_ids":true,"type":"sha1","uuid":"242a6daf-e662-4262-8a69-22d8d523a685","value":"340038bb3d65031d91c8168a5ec1aa851caeb66b"},{"category":"Payload delivery","disable_correlation":false,"object_relation":"sha256","to_ids":true,"type":"sha256","uuid":"8746c304-5c22-48e2-b5a1-cda60bf60766","value":"0afc8bf26240e82311dc6185a901585b79d084e8717169c002e73ebe00594fd6"},{"category":"Payload delivery","disable_correlation":false,"object_relation":"sha512","to_ids":true,"type":"sha512","uuid":"4a3e3e23-ac18-4e6a-af46-42ffa18eae5e","value":"64fa22900790a9831e5932c1d162296e6a74abdbe6e9c595cda2e5e6f8bea7620e692b14ea74ae5ff8efb9d8b5eb60e7446e5cad40096e06ee93fbf46df58c5c"},{"category":"Payload delivery","data":"PCEtLSBDb3B5cmlnaHQgKEMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+PCFET0NUWVBFIGh0bWw+PCEtLSBTZXJ2ZXJJbmZvOiBTTjFQRVBGMDAwMkYwQTggMjAyNC4wNy4xMC4xNC40MS4xNSBMb2NWZXI6MCAtLT48IS0tIFByZXByb2Nlc3NJbmZvOiBDQkEtMDcxMF8xNDIyMzg6U0EyUE5QRjAwMDAyM0M3LCAyMDI0LTA3LTEwVDE0OjM1OjIxLjY5MzYwMTMtMDc6MDAgLSBWZXJzaW9uOiAxNiwwLDMwMjkzLDIgLS0+PCEtLSBSZXF1ZXN0TENJRDogMTAzMywgTWFya2V0OkVOLVVTLCBQcmVmQ291bnRyeTogVVMsIExhbmdMQ0lEOiAxMDMzLCBMYW5nSVNPOiBFTiAtLT48aHRtbCBkaXI9Imx0ciIgbGFuZz0iRU4tVVMiPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+PG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1FZGdlIi8+PGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2FjY3RjZG4ubXNhdXRoLm5ldCIgY3Jvc3NvcmlnaW4+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9hY2N0Y2RuLm1zZnRhdXRoLm5ldCIgY3Jvc3NvcmlnaW4+CjxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQiIGNyb3Nzb3JpZ2luPgo8bWV0YSBodHRwLWVxdWl2PSJ4LWRucy1wcmVmZXRjaC1jb250cm9sIiBjb250ZW50PSJvbiI+CjxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2FjY3RjZG4ubXNhdXRoLm5ldC8iPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hY2N0Y2RuLm1zZnRhdXRoLm5ldC8iPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hY2N0Y2RubXNmdHVzd2UyLmF6dXJlZWRnZS5uZXQvIj4KPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYWNjdGNkbnZ6ZXVuby5henVyZWVkZ2UubmV0LyI+CjxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2xvZ2luY2RuLm1zYXV0aC5uZXQvIj4KPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vbG9naW5jZG4ubXNmdGF1dGgubmV0LyI+CjxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2xnaW5jZG52emV1bm8uYXp1cmVlZGdlLm5ldC8iPgo8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9sZ2luY2RubXNmdHVzd2UyLmF6dXJlZWRnZS5uZXQvIj4KPGJhc2UgaHJlZj0iaHR0cHM6Ly9sb2dpbi5saXZlLmNvbSIvPjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBub25jZT0iejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT0iPnRyeXtkb2N1bWVudCYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLChmdW5jdGlvbihlKXtlLnRhcmdldCYmImhhbmRsZS1lcnJvci10YWciPT09ZS50YXJnZXQuY2xhc3NOYW1lJiYkTG9hZGVyLk9uKGUudGFyZ2V0KX0pLCEwKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsKGZ1bmN0aW9uKGUpe2UudGFyZ2V0JiYiaGFuZGxlLWVycm9yLXRhZyI9PT1lLnRhcmdldC5jbGFzc05hbWUmJiRMb2FkZXIuT24oZS50YXJnZXQsITApfSksITApKX1jYXRjaChlKXt9PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG5vbmNlPSJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPSI+dmFyIFBST09GID0ge307UFJPT0YuVHlwZSA9IHtTUVNBOiA2LCBDU1M6IDUsIERldmljZUlkOiA0LCBFbWFpbDogMSwgQWx0RW1haWw6IDIsIFNNUzogMywgSElQOiA4LCBCaXJ0aGRheTogOSwgVE9UUEF1dGhlbnRpY2F0b3I6IDEwLCBSZWNvdmVyeUNvZGU6IDExLCBTdHJvbmdUaWNrZXQ6IDEzLCBUT1RQQXV0aGVudGljYXRvclYyOiAxNCwgVW5pdmVyc2FsU2Vjb25kRmFjdG9yOiAxNSwgU2VjdXJpdHlLZXk6IDE4LCBWb2ljZTogLTN9Ozwvc2NyaXB0Pjxub3NjcmlwdD48bWV0YSBodHRwLWVxdWl2PSJSZWZyZXNoIiBjb250ZW50PSIwOyBVUkw9aHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9qc0Rpc2FibGVkLnNyZj9ta3Q9RU4tVVMmbGM9MTAzMyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Ii8+TWljcm9zb2Z0IGFjY291bnQgcmVxdWlyZXMgSmF2YVNjcmlwdCB0byBzaWduIGluLiBUaGlzIHdlYiBicm93c2VyIGVpdGhlciBkb2VzIG5vdCBzdXBwb3J0IEphdmFTY3JpcHQsIG9yIHNjcmlwdHMgYXJlIGJlaW5nIGJsb2NrZWQuPGJyIC8+PGJyIC8+VG8gZmluZCBvdXQgd2hldGhlciB5b3VyIGJyb3dzZXIgc3VwcG9ydHMgSmF2YVNjcmlwdCwgb3IgdG8gYWxsb3cgc2NyaXB0cywgc2VlIHRoZSBicm93c2VyJ3Mgb25saW5lIGhlbHAuPC9ub3NjcmlwdD48dGl0bGU+U2lnbiBpbiB0byB5b3VyIE1pY3Jvc29mdCBhY2NvdW50PC90aXRsZT48bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vbmUiIC8+PG1ldGEgbmFtZT0iUGFnZUlEIiBjb250ZW50PSJpNTAzMCIvPjxtZXRhIG5hbWU9IlNpdGVJRCIgY29udGVudD0iMzg5MzYiLz48bWV0YSBuYW1lPSJSZXFMQyIgY29udGVudD0iMTAzMyIvPjxtZXRhIG5hbWU9IkxvY0xDIiBjb250ZW50PSIxMDMzIi8+PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1heGltdW0tc2NhbGU9Mi4wLCBtaW5pbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT15ZXMiLz48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Ino4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9Ij52YXIgU2VydmVyRGF0YSA9IHtmRml4VXJsUmVzZXRQYXNzd29yZDpmYWxzZSxlQ0JCcmFuZE1vZGU6MixmQWN0aXZhdGVGb2N1c09uQXBwcm92YWxOdW1iZXJSZW1vdGVOR0M6ZmFsc2UsZkNCQnJhbmRTaG93VmFsdWVQcm9wOnRydWUsZkNCVXNlTW9kZXJuQ29icmFuZGluZzp0cnVlLHVybFBvc3RNc2E6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vcHBzZWN1cmUvcG9zdC5zcmY/bWt0PWVuLVVTJmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZiaz0xNzIyNTQ0MjA0JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmcGlkPTAnLGZVcGdyYWRlRVZDZXJ0OnRydWUsZklzQm91bmRBY2NvdW50OmZhbHNlLGZJc1Bhc3NrZXlTdXBwb3J0RW5hYmxlZDp0cnVlLGlMb2dpblN0cmluZ3NWYXJpYW50SWQ6MCxmRW5hYmxlQ2xpZW50UGVyZjpmYWxzZSxpUHJvbW90ZWRGZWRDcmVkVHlwZTowLGZIYXNFcnJvcjpmYWxzZSxmSXNPdGNMb2dpbkRpc2FibGVkOmZhbHNlLHVybEZpZG9IZWxwOidodHRwczovL2dvLm1pY3Jvc29mdC5jb20vZndsaW5rLz9saW5raWQ9MjAxMzczOCcsZklzUmVtb3RlTkdDU3VwcG9ydGVkOnRydWUsdXJsRm9vdGVySGVscDonJyxzQ0lEOicnLGZIaWRlTG9naW5EZXNjOmZhbHNlLGZLTVNJRW5hYmxlZDpmYWxzZSx1cmxNYW5hZ2VDcmVkczonJyxmVXNlSGlnaENvbnRyYXN0T3ZlcnJpZGVzOmZhbHNlLHNQcmVmU01TQ291bnRyeTonTFUnLHVybE1TQWNjb3VudEhlbHA6J2h0dHBzOi8vZ28ubWljcm9zb2Z0LmNvbS9md2xpbmsvP0xpbmtJRD0yNTQ0ODYnLHVybENCUGFydG5lclByZWxvYWQ6JycsdXJsUmVwb3J0UGFnZUxvYWQ6Jycsc1BPU1RfUGFnaW5hdGVkTG9naW5TdGF0ZVJOR0NTTEs6JycsdXJsRVZDZXJ0VXBncmFkZTonJyxzUHJvb2ZUeXBlOicnLHVybEZpZG9Mb2dpbjonaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnQuY29tL2NvbnN1bWVycy9maWRvL2dldD9ta3Q9RU4tVVMmbGM9MTAzMyZ1aWZsYXZvcj13ZWInLHVybExvZ2luOidodHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZj9pZD0zODkzNiZpZD0zODkzNiZjb250ZXh0aWQ9MDg5NTI2NDFDMjIxQ0Y5QSZvcGlkPUQzNUJDOEI1M0EzMUUyQTcmYms9MTcyMjU0NDIwNCZta3Q9RU4tVVMmbGM9MTAzMyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JyxmTU1YUVJOZXdEZXNjcmlwdGlvbjp0cnVlLHVybEZvb3RlclRPVTonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9nbHMuc3JmP3VybElEPVdpbkxpdmVUZXJtc09mVXNlJm1rdD1FTi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jyx1cmxDaGFuZ2VQYXNzd29yZDonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL0NoYW5nZVBhc3N3b3JkP3VhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLHVybEdldENyZWRlbnRpYWxUeXBlOidodHRwczovL2xvZ2luLmxpdmUuY29tL0dldENyZWRlbnRpYWxUeXBlLnNyZj9vcGlkPUQzNUJDOEI1M0EzMUUyQTcmaWQ9Mzg5MzYmaWQ9Mzg5MzYmbWt0PUVOLVVTJmxjPTEwMzMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsb1doaXRlTGJsUHJvcHM6eydMb2dvJzonJywnTG9nb0FsdFRleHQnOicnLCdMb2dvVGV4dCc6JycsJ1Nob3dXTEhlYWRlcic6dHJ1ZX0sdXJsSVB2NkV4cGVyaW1lbnQ6JycsdXJsTG9zdEF1dGhlbnRpY2F0b3I6J2h0dHBzOi8vYWNjb3VudC5saXZlLmNvbS9SZXNldFBhc3N3b3JkLmFzcHg/d3JlcGx5PWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmJTNmaWQlM2QzODkzNiUyNm1rdCUzZGVuLVVTJTI2dWFpZCUzZDA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JTI2aWQlM2QzODkzNiUyNmNvbnRleHRpZCUzZDA4OTUyNjQxQzIyMUNGOUElMjZvcGlkJTNkRDM1QkM4QjUzQTMxRTJBNyUyNmJrJTNkMTcyMjU0NDIwNCZpZD0zODkzNiZ1aWZsYXZvcj13ZWImbG9zdGF1dGhlbnRpY2F0b3I9MSZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jm1rdD1FTi1VUyZsYz0xMDMzJmJrPTE3MjI1NDQyMDQnLHVybEFjY291bnRRdWVyeTonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL3F1ZXJ5LmFzcHg/dWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZta3Q9RU4tVVMmbGM9MTAzMyZpZD0zODkzNicsaHBnaWQ6MzMsc1JlcXVlc3RDb3VudHJ5OidMVScsc0NCQnJhbmRTdWJUaXRsZTonIyNsaTE2IyMjI0IjI0hvdG1haWwjIy9CIyMjI0JSIyNUaGUgc21hcnQgd2F5IHRvIGRvIGVtYWlsIC0gZmFzdCwgZWFzeSBhbmQgcmVsaWFibGUjI2xpOCMjIyNCIyNNZXNzZW5nZXIjIy9CIyMjI0JSIyNTdGF5IGluIHRvdWNoIHdpdGggdGhlIG1vc3QgaW1wb3J0YW50IHBlb3BsZSBpbiB5b3VyIGxpZmUjI2xpMTAjIyMjQiMjU2t5RHJpdmUjIy9CIyMjI0JSIyNGcmVlLCBwYXNzd29yZC1wcm90ZWN0ZWQgb25saW5lIHN0b3JhZ2UnLHVybE1zYVN0YXRpY01lQ29udHJvbDonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9NZS5odG0/dj0zJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLHVybFBob25lTGlua1ByaXZhY3lUZXJtczonaHR0cHM6Ly9nby5taWNyb3NvZnQuY29tL2Z3bGluay9wLz9saW5raWQ9ODUwNzQ5I21haW55b3VycGhvbmVtb2R1bGUmcHJvZmlsZT10cmFuc3BhcmVudExpZ2h0JyxzQ0JIZWFkZXJUZXh0OicnLGExMXlDb25mb3JtZUxpbms6bnVsbCxzQ29uc3VtZXJEb21haW5zOicnLHVybFNlc3Npb25TdGF0ZTonaHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9HZXRTZXNzaW9uU3RhdGUuc3JmP2lkPTM4OTM2Jm1rdD1FTi1VUyZsYz0xMDMzJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZBcHBsaWNhdGlvbkluc2lnaHRzRW5hYmxlZDpmYWxzZSxzTmV0d29ya1R5cGU6Jycsc1BPU1RfVHlwZTonJyxlQ0JIZWFkZXJNb2RlOjAsZkFsbG93R3JheU91dExpZ2h0Qm94OnRydWUsZlByZWZpeENvb2tpZURvbWFpbkVuYWJsZWQ6ZmFsc2UsdXJsRmVkOicnLHN0ckZlZEludml0ZUJsb2NrZWRNc2c6IiN+I3BhcnRuZXJkb21haW4jfiMgZG9lc1wndCB1c2UgdGhpcyBzZXJ2aWNlLiBQbGVhc2Ugc2lnbiBpbiB3aXRoIGEgTWljcm9zb2Z0IGFjY291bnQgb3IgY3JlYXRlIGEgbmV3IGFjY291bnQuIDxhIGhyZWY9XCIjfiNXTFBhbmVIZWxwSW52aXRlQmxvY2tlZFVSTF9MUyN+I1wiIGlkPVwiaWRQYW5lSGVscEludml0ZUJsb2NrZWRMaW5rOVwiPkxlYXJuIE1vcmU8L2E+IixmQnJlYWtCcmFuZGluZ1NpZ25pblN0cmluZzp0cnVlLGlBcHBsaWNhdGlvbkluc2lnaHRzRW5hYmxlZFBlcmNlbnRhZ2U6MCxmU2hvd1B1c2hOb3RpZmljYXRpb25zRGVyaXNrOnRydWUsZlNob3dTaWduSW5XaXRoR2l0SHViT25seU9uQ3JlZFBpY2tlcjp0cnVlLHVybFBvc3RBYWQ6Jycsc3RyT1RDSW5mb01zZzoiQSBzaW5nbGUtdXNlIGNvZGUgbGV0cyB5b3Ugc2lnbiBpbiB3aXRob3V0IGVudGVyaW5nIHlvdXIgcGFzc3dvcmQuIFRoaXMgaGVscHMgcHJvdGVjdCB5b3VyIGFjY291bnQgd2hlbiB5b3VcJ3JlIHVzaW5nIHNvbWVvbmUgZWxzZVwncyBQQy4gPGEgaHJlZj1cImh0dHA6Ly9leHBsb3JlLmxpdmUuY29tL3dpbmRvd3MtbGl2ZS1zaWduLWluLXNpbmdsZS11c2UtY29kZS1mYXFcIiBpZD1cImlkUGFuZUhlbHBPVENJbmZvTGluazlcIiB0YXJnZXQ9XCJfYmxhbmtcIj5MZWFybiBtb3JlPC9hPiIsZkRpc2FibGVBbmltYXRpb25JZkFuaW1hdGlvbkVuZFVuc3VwcG9ydGVkOmZhbHNlLGlGZWRTdGF0ZTowLHN0ck9UQ1Nlc3Npb25FeHBpcmVkTXNnOiJZb3VyIHNlc3Npb24gaGFzIHRpbWVkIG91dC4gVG8gcmVxdWVzdCBhIHNpbmdsZSB1c2UgY29kZSwgcGxlYXNlIDxhIGhyZWY9XCJqYXZhc2NyaXB0Ok5ld09UQ1JlcXVlc3QoKVwiPnJlZnJlc2ggdGhlIHBhZ2U8L2E+LiIsc3RyU2lnbkluSGVhZGVyOiJTaWduIGluIixpVVhNb2RlOjEsdXJsQXBwbGljYXRpb25JbnNpZ2h0c0VuZHBvaW50OicnLGZIaWRlTGVhcm5Nb3JlTGluazpmYWxzZSxzUE9TVF9OZXdVc2VyOicnLHNDb29raWVEb21haW46J2xvZ2luLmxpdmUuY29tJyxmVXNlU2FtZVNpdGU6dHJ1ZSx1cmxDQkJyYW5kSUZyYW1lOidodHRwczovL3NjLmltcC5saXZlLmNvbS9jb250ZW50L2RhbS9pbXAvc3VyZmFjZXMvbWFpbF9zaWduaW4vdjMvYWNjb3VudC9FTi1VUy5odG1sP2lkPTM4OTM2Jm1rdD1FTi1VUycsZkhJUEVycm9yOmZhbHNlLHNQT1NUX1BhZ2luYXRlZExvZ2luU3RhdGU6JycsdXJsQ0JCcmFuZFVwc2VsbDonJyxzUHJvb2ZDb25maXJtOicnLGZJbnN0cnVtZW50YXRpb25FbmFibGVkOnRydWUsdXJsQ0JIZWFkZXJJRnJhbWU6JycsdXJsRGlzYW1iaWdSZW5hbWU6JycsaVByb2R1Y3RJY29uOjAsaVNlcnZlckV4ZWN1dGlvblRpbWU6NCx1cmxQb3N0OidodHRwczovL2xvZ2luLmxpdmUuY29tL3Bwc2VjdXJlL3Bvc3Quc3JmP21rdD1lbi1VUyZpZD0zODkzNiZjb250ZXh0aWQ9MDg5NTI2NDFDMjIxQ0Y5QSZvcGlkPUQzNUJDOEI1M0EzMUUyQTcmYms9MTcyMjU0NDIwNCZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JnBpZD0wJyxpUmVzZXRQd2RTdHJpbmdJRDoxLHVybEZvb3RlclByaXZhY3k6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vZ2xzLnNyZj91cmxJRD1NU05Qcml2YWN5U3RhdGVtZW50Jm1rdD1FTi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JyxvV2hpdGVMYmxGb290ZXJVUkxzOnt9LHVybEltcHJlc3N1bTonJyxzQXBwVmVyc2lvbjonJyxzRlROYW1lOidQUEZUJyxzQ0JCcmFuZFRpdGxlOidzaWduIHVwJyxvV2hpdGVMYmxGb290ZXJUeHRPbmU6e30sc0NsaWVudEZsaWdodDonJyxvV2hpdGVMYmxGb290ZXJUeHRUd286e30sc1BPU1RfUGFnaW5hdGVkTG9naW5TdGF0ZVJOR0NFbnRyb3B5OicnLHNBcHBsaWNhdGlvbkluc2lnaHRzSW5zdHJ1bWVudGF0aW9uS2V5OicnLGlNYXhTdGFja0Zvcktub2Nrb3V0QXN5bmNDb21wb25lbnRzOjEwMDAwLGZXZWJOZ2NGUzpmYWxzZSxpQmFja2dyb3VuZEltYWdlOjIsb0FwcENvYnJhbmRpbmc6e30sc1JhbmRvbUJsb2I6J1Bhcycsc0ZlZFFTOid3YT13c2lnbmluMS4wJnd0cmVhbG09dXJpOldpbmRvd3NMaXZlSUQmd2N0eD1ta3QlM0Rlbi1VUyUyNnVhaWQlM0QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiUyNmlkJTNEMzg5MzYlMjZjb250ZXh0aWQlM0QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzREQzNUJDOEI1M0EzMUUyQTclMjZiayUzRDE3MjI1NDQyMDQnLHVybENhbmNlbDonJyxmU2hvd01vcmVQcm9vZnNMaW5rTmV3TG9naWM6dHJ1ZSxzUE9TVF9Vc2VybmFtZTonJyxzdHJMV0FEaXNjbGFpbWVyTXNnOicnLHNDbGllbnRJZDonJyxmU2hvd1NpZ25JbldpdGhGaWRvT25Vc2VybmFtZVZpZXc6dHJ1ZSxzVW5hdXRoU2Vzc2lvbklEOicwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsZkVuYWJsZVVzZXJTdGF0ZUZpeDpmYWxzZSxzdHJPVENNb2JpbGVIaW50TXNnOiJVc2UgdGhlIHByaW1hcnkgcGhvbmUgbnVtYmVyIHlvdVwndmUgYXNzb2NpYXRlZCB3aXRoIHlvdXIgTWljcm9zb2Z0IGFjY291bnQuIDxhIGhyZWY9XCJodHRwOi8vZXhwbG9yZS5saXZlLmNvbS93aW5kb3dzLWxpdmUtc2lnbi1pbi1zaW5nbGUtdXNlLWNvZGUtZmFxXCIgaWQ9XCJpZFBhbmVIZWxwT1RDSW5mb0xpbms5XCIgdGFyZ2V0PVwiX2JsYW5rXCI+TGVhcm4gbW9yZTwvYT4iLGZTd2l0Y2hEaXNhbWJpZzpmYWxzZSxmQ2hlY2tBcGlDYW5hcnk6ZmFsc2UsZlNob3dMZWFybk1vcmVWMjp0cnVlLGlCaW5kUHJvdmlkZXI6LTEsZlVzZUlubGluZVBob25lTnVtYmVyOnRydWUsdXJsQmVoYXZpb3JhbFRlbGVtZXRyeVNjcmlwdDonJyxmSXNXcml0ZVdsb3B0Q29va2llRGlzYWxsb3dlZDp0cnVlLHN0cjpbXSxmVXNlUmVzZXRQd2RVcmxGb3JQd2RSZXF1aXJlZEVycjp0cnVlLHVybENCQnJhbmRMb2dvOicnLGlSZXF1ZXN0TENJRDoxMDMzLHVybENCQ3VzdG9tSlM6JycsdXJsQ0JIZWFkZXJMb2dvOicnLGZMb2FkR2FtZXBhZE5hdmlnYXRpb25Nb2R1bGU6ZmFsc2UsZklzSG9zdGVkOmZhbHNlLGlHY3RGZWRlcmF0aW9uRmxhZ3M6MyxpTWF4UG9sbEVycm9yczo1LHVybEdpdEh1YkZlZDonaHR0cHM6Ly9naXRodWIuY29tL2xvZ2luL29hdXRoL2F1dGhvcml6ZT9yZXNwb25zZV90eXBlPWNvZGUmY2xpZW50X2lkPWUzN2ZmZGVjMTFjMDI0NWNiMmUwJnNjb3BlPXJlYWQ6dXNlcisrdXNlcjplbWFpbCZyZWRpcmVjdF91cmk9aHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9IYW5kbGVHaXRodWJSZXNwb25zZS5zcmYmYWxsb3dfc2lnbnVwPWZhbHNlJnN0YXRlPUQzNUJDOEI1M0EzMUUyQTcnLGZUZW5hbnRCcmFuZGluZ0NkbkFkZEV2ZW50SGFuZGxlcnM6dHJ1ZSx1cmxOb0Nvb2tpZXM6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vY29va2llc0Rpc2FibGVkLnNyZj91YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2Jm1rdD1FTi1VUyZsYz0xMDMzJyxmVXNlRmFrZUhJUDpmYWxzZSxmVXNlV2Vidmlld0ZpZG9DdXN0b21Qcm90b2NvbDpmYWxzZSxmVXNlTWluSGVpZ2h0OnRydWUsZlVzZVBhc3N3b3JkUGVlazpmYWxzZSx1cmxTd2l0Y2g6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9nb3V0LnNyZj9ta3Q9ZW4tVVMmaWQ9Mzg5MzYmY29udGV4dGlkPTA4OTUyNjQxQzIyMUNGOUEmb3BpZD1EMzVCQzhCNTNBMzFFMkE3JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmcnU9aHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL2ElM2Z1YWlkJTNkMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmYms9MTcyMjU0NDIwNCZsbT1JJyxpTEJvZHlEZWZhdWx0OjAsc0ZlZFBhcnRuZXJOYW1lOicnLGlBcmtvc2VFbmZvcmNlbWVudFRpbWVvdXRNczozMDAwMCxpUG9sbGluZ1RpbWVvdXQ6NjAsdXJsRmVkQ29udmVydFJlbmFtZTonaHR0cHM6Ly9hY2NvdW50LmxpdmUuY29tL3NlY3VyaXR5L0xvZ2luU3RhZ2UuYXNweD9sbWlmPTEwMDAmcnU9aHR0cHM6Ly9sb2dpbi5saXZlLmNvbS9sb2dpbi5zcmYlM0ZpZCUzRDM4OTM2JTI2bWt0JTNERU4tVVMlMjZsYyUzRDEwMzMlMjZ1YWlkJTNEMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmbWt0PUVOLVVTJmxjPTEwMzMmY2JpZD0wJmlkPTM4OTM2JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZJc1VwZGF0ZWRBdXRvY29tcGxldGVFbmFibGVkOnRydWUsaUF1dG9TU09TdGF0ZTowLHNQYWdlSWQ6J2k1MDMwJyx1cmxBcmtvc2VFbmZvcmNlbWVudDonaHR0cHM6Ly9pZnJhbWUuYXJrb3NlbGFicy5jb20vQjdEODkxMUMtNUNDOC1BOUEzLTM1QjAtNTU0QUNFRTYwNERBL2luZGV4Lmh0bWw/bWt0PWVuJyxzUmF3UXVlcnlTdHJpbmc6J21rdD1lbi1VUyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZiaz0xNzIyNTQ0MjA0JyxzUE9TVF9QYWdpbmF0ZWRMb2dpblN0YXRlUk5HQ0RlZmF1bHRUeXBlOicnLHVybENkbjonaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvc2hhcmVkLzEuMC8nLGZBbGxvd0xvZ2luVGV4dEN1c3RvbWl6YXRpb25zOnRydWUsZkRlcHJlY2F0ZUhpcExvY2tvdXQ6dHJ1ZSxzU2lnbkluVXNlcm5hbWU6JycsZkFsbG93Q2FuY2VsOmZhbHNlLGZTaG93QnV0dG9uczp0cnVlLGZEb0lmRXhpc3RzOmZhbHNlLGZJc1NpbXBsaWZpZWRDaGlsZEFjY291bnRDcmVhdGlvbjpmYWxzZSxpTG9naW5Nb2RlOjEsZklzRmlkb1N1cHBvcnRlZDp0cnVlLHNGb3J3YXJkZWRDbGllbnRJZDonJyxmU2hvd0ZvcmdvdFVzZXJuYW1lTGluazp0cnVlLGZJc1dMUm9vdGVkU2l0ZUlEOnRydWUsdXJsUmVzZXRQYXNzd29yZEFhZDonJyxzU2l0ZUlkOiczODkzNicsdXJsU2lnblVwOidodHRwczovL3NpZ251cC5saXZlLmNvbS9zaWdudXA/aWQ9Mzg5MzYmY29udGV4dGlkPTA4OTUyNjQxQzIyMUNGOUEmb3BpZD1EMzVCQzhCNTNBMzFFMkE3JmJrPTE3MjI1NDQyMDQmc3J1PWh0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmJTNmaWQlM2QzODkzNiUyNmlkJTNkMzg5MzYlMjZjb250ZXh0aWQlM2QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzZEQzNUJDOEI1M0EzMUUyQTclMjZta3QlM2RFTi1VUyUyNmxjJTNkMTAzMyUyNmJrJTNkMTcyMjU0NDIwNCUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZ1aWZsYXZvcj13ZWImbGljPTEmbWt0PUVOLVVTJmxjPTEwMzMmdWFpZD0wNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNicsaURlZmF1bHRMb2dpbk9wdGlvbnM6MyxzZXJ2ZXJEZXRhaWxzOnsicmkiOiJTTjFQRVBGMDAwMkYwQTgiLCJ2ZXIiOiIxNi4wLjMwMjkzLjIifSxvR2V0Q3JlZFR5cGVSZXN1bHQ6bnVsbCxmUmVtb3ZlTWluV2lkdGhGcm9tTGlnaHRCb3g6dHJ1ZSx1cmxSZXNldFBhc3N3b3JkOidodHRwczovL2FjY291bnQubGl2ZS5jb20vUmVzZXRQYXNzd29yZC5hc3B4P3dyZXBseT1odHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZiUzZmlkJTNkMzg5MzYlMjZta3QlM2Rlbi1VUyUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiUyNmlkJTNkMzg5MzYlMjZjb250ZXh0aWQlM2QwODk1MjY0MUMyMjFDRjlBJTI2b3BpZCUzZEQzNUJDOEI1M0EzMUUyQTclMjZiayUzZDE3MjI1NDQyMDQmaWQ9Mzg5MzYmdWlmbGF2b3I9d2ViJnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYmbWt0PUVOLVVTJmxjPTEwMzMmYms9MTcyMjU0NDIwNCcsZlNob3dDb3B5RGVidWdEZXRhaWxzTGluazp0cnVlLGlBbGxvd2VkSWRlbnRpdGllczowLGZJc0dhbWluZ0Zsb3c6ZmFsc2Usc0NCVXBUeHQxOicnLHVybEhJUFNjcmlwdDonaHR0cHM6Ly9jbGllbnQucHJvZC5yZXBtYXAubWljcm9zb2Z0LmNvbS9HZXRISVAvR2V0SElQL0hJUD9pZD0xNTAzNCZ0eXBlPXZpc3VhbCZmaWQ9MTQwMDAzNzU2NyZyYW5kPTMyMTYyMTQ5NyZta3Q9RU4tVVMnLGZFbmFibGVBcmlhTGl2ZVVwZGF0ZXM6dHJ1ZSxzQ0JVcFR4dDI6Jycsc0hvc3RCdWlsZE51bWJlcjonMTYuMC4zMDI5My4yJyxmU2hvd0Nvb2tpZUJhbm5lcjpmYWxzZSxmU2hvd1B1c2hOb3RpZmljYXRpb25zOnRydWUsZkNCU2hvd1NpZ25VcDp0cnVlLGZTaG93U2t5cGVVc2VybmFtZUhpbnQ6ZmFsc2UsdXJsRm9yZ290VXNlcm5hbWU6J2h0dHBzOi8vYWNjb3VudC5saXZlLmNvbS91c2VybmFtZS9yZWNvdmVyP3dyZXBseT1odHRwczovL2xvZ2luLmxpdmUuY29tL2xvZ2luLnNyZiUzZmxjJTNkMTAzMyUyNm1rdCUzZGVuLVVTJTI2aWQlM2QzODkzNiUyNm1rdCUzZGVuLVVTJTI2aWQlM2QzODkzNiUyNmNvbnRleHRpZCUzZDA4OTUyNjQxQzIyMUNGOUElMjZvcGlkJTNkRDM1QkM4QjUzQTMxRTJBNyUyNmJrJTNkMTcyMjU0NDIwNCUyNnVhaWQlM2QwNjc2YWFjY2FlNjQ0MDFhOWU3MDEwYjQxOTcyYzRmNiZpZD0zODkzNiZta3Q9RU4tVVMmbGM9MTAzMyZ1YWlkPTA2NzZhYWNjYWU2NDQwMWE5ZTcwMTBiNDE5NzJjNGY2JnVpZmxhdm9yPXdlYicsdXJsTGlua2VkSW5GZWQ6JycsZkltcHJvdmVQaG9uZURpc2FtYmlnOnRydWUsY29ycmVsYXRpb25JZDonMDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLG9Qb3N0Ont9LHVybENsaWVudEV4cGVyaW1lbnQ6J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vR2V0RXhwZXJpbWVudEFzc2lnbm1lbnRzLnNyZicsZlNob3dTd2l0Y2hVc2VyOnRydWUsZkF1dG9DYXB0dXJlRXZlbnRzOmZhbHNlLGlQb2xsaW5nSW50ZXJ2YWw6MSxvRmVkU2lnbnVwUG9zdFBhcmFtczpudWxsLGlCYW5uZXJFbnZpcm9ubWVudDowLGZFbmFibGVDbGllbnRUZWxlbWV0cnk6ZmFsc2UsZlNob3dVcGRhdGVkS29yZWFuUHJpdmFjeUZvb3Rlcjp0cnVlLHNQcmVmaWxsVXNlcm5hbWU6JycsZkVuYWJsZVNob3dQaWNrZXJDcmVkT2JzZXJ2YWJsZTpmYWxzZSx1cmxGZWRTaWdudXA6JycsdXJsR29Ub0FBREVycm9yOicnLGZGaXhVSUNyYXNoRm9yQXBpUmVxdWVzdEhhbmRsZXI6ZmFsc2Usc0VyclR4dDonJyxmSGlkZVBob25lQ29iYXNpSW5PdGhlclNpZ25Jbjp0cnVlLGZTaG93U2lnbkluT3B0aW9uc0FzQnV0dG9uOnRydWUsaUNsaWVudExvZ0xldmVsOjAsZklzRXh0ZXJuYWxGZWRlcmF0aW9uRGlzYWxsb3dlZDpmYWxzZSxodG1sOltdLGlQYXduSWNvbjoxLHNGVFRhZzonPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUFBGVCIgaWQ9ImkwMzI3IiB2YWx1ZT0iLURuQVJ1dnFtOVd3TTNzSG8hTUxLT2FhWmNSeFF2cTJodUxIWjBua0MqelFEeHlJenBqMHhKeEV4UThMbWtVVWxsZnkqMGZyQkNOam9wemRjcG96Km4xM2JxTEFkcW1BNHhnU1J2RzBod0RPTXFuNCpaWVFRNmk4U2pvNDJTejlGUEZteDNtaUlmWnBobjRiaVFqdkxaUG5ZY01FYlpORDliT3dQS0R1VU9TKjlEa3I1OEdzS2dqMG51alRjUjUqcFM3UVVGcTg2clNTQkxiTExSUWtWTkFTM0gwTEptQzVvT1JUYXdyd3cxV3RiangxUFNhUGE1bVVMalNvRU4xMEZMQSQkIi8+Jyxsb2FkZXI6e2NkblJvb3RzOlsnaHR0cHM6Ly9sb2dpbmNkbi5tc2F1dGgubmV0LycsJ2h0dHBzOi8vbG9naW5jZG4ubXNmdGF1dGgubmV0LycsJ2h0dHBzOi8vbGdpbmNkbnZ6ZXVuby5henVyZWVkZ2UubmV0LycsJ2h0dHBzOi8vbGdpbmNkbm1zZnR1c3dlMi5henVyZWVkZ2UubmV0LyddfSxzU01TQ3RyeVBob25lRGF0YTonQUZ+QWZnaGFuaXN0YW5+OTMhISFBTH5BbGJhbmlhfjM1NSEhIURafkFsZ2VyaWF+MjEzISEhQUR+QW5kb3JyYX4zNzYhISFBT35BbmdvbGF+MjQ0ISEhQVF+QW50YXJjdGljYX42NzIhISFBR35BbnRpZ3VhIGFuZCBCYXJidWRhfjEhISFBUn5BcmdlbnRpbmF+NTQhISFBTX5Bcm1lbmlhfjM3NCEhIUFXfkFydWJhfjI5NyEhIUFDfkFzY2Vuc2lvbiBJc2xhbmR+MjQ3ISEhQVV+QXVzdHJhbGlhfjYxISEhQVR+QXVzdHJpYX40MyEhIUFafkF6ZXJiYWlqYW5+OTk0ISEhQlN+QmFoYW1hc34xISEhQkh+QmFocmFpbn45NzMhISFCRH5CYW5nbGFkZXNofjg4MCEhIUJCfkJhcmJhZG9zfjEhISFCWX5CZWxhcnVzfjM3NSEhIUJFfkJlbGdpdW1+MzIhISFCWn5CZWxpemV+NTAxISEhQkp+QmVuaW5+MjI5ISEhQk1+QmVybXVkYX4xISEhQlR+Qmh1dGFufjk3NSEhIUJPfkJvbGl2aWF+NTkxISEhQlF+Qm9uYWlyZX41OTkhISFCQX5Cb3NuaWEgYW5kIEhlcnplZ292aW5hfjM4NyEhIUJXfkJvdHN3YW5hfjI2NyEhIUJWfkJvdXZldCBJc2xhbmR+NDchISFCUn5CcmF6aWx+NTUhISFJT35Ccml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnl+NDQhISFWR35Ccml0aXNoIFZpcmdpbiBJc2xhbmRzfjEhISFCTn5CcnVuZWl+NjczISEhQkd+QnVsZ2FyaWF+MzU5ISEhQkZ+QnVya2luYSBGYXNvfjIyNiEhIUJJfkJ1cnVuZGl+MjU3ISEhQ1Z+Q2FibyBWZXJkZX4yMzghISFLSH5DYW1ib2RpYX44NTUhISFDTX5DYW1lcm9vbn4yMzchISFDQX5DYW5hZGF+MSEhIUtZfkNheW1hbiBJc2xhbmRzfjEhISFDRn5DZW50cmFsIEFmcmljYW4gUmVwdWJsaWN+MjM2ISEhVER+Q2hhZH4yMzUhISFDTH5DaGlsZX41NiEhIUNOfkNoaW5hfjg2ISEhQ1h+Q2hyaXN0bWFzIElzbGFuZH42MSEhIUNDfkNvY29zIChLZWVsaW5nKSBJc2xhbmRzfjYxISEhQ09+Q29sb21iaWF+NTchISFLTX5Db21vcm9zfjI2OSEhIUNHfkNvbmdvfjI0MiEhIUNEfkNvbmdvIChEUkMpfjI0MyEhIUNLfkNvb2sgSXNsYW5kc342ODIhISFDUn5Db3N0YSBSaWNhfjUwNiEhIUNJfkPDtHRlIGRcJ0l2b2lyZX4yMjUhISFIUn5Dcm9hdGlhfjM4NSEhIUNVfkN1YmF+NTMhISFDV35DdXJhw6dhb341OTkhISFDWX5DeXBydXN+MzU3ISEhQ1p+Q3plY2hpYX40MjAhISFES35EZW5tYXJrfjQ1ISEhREp+RGppYm91dGl+MjUzISEhRE1+RG9taW5pY2F+MSEhIURPfkRvbWluaWNhbiBSZXB1YmxpY34xISEhRUN+RWN1YWRvcn41OTMhISFFR35FZ3lwdH4yMCEhIVNWfkVsIFNhbHZhZG9yfjUwMyEhIUdRfkVxdWF0b3JpYWwgR3VpbmVhfjI0MCEhIUVSfkVyaXRyZWF+MjkxISEhRUV+RXN0b25pYX4zNzIhISFFVH5FdGhpb3BpYX4yNTEhISFGS35GYWxrbGFuZCBJc2xhbmRzfjUwMCEhIUZPfkZhcm9lIElzbGFuZHN+Mjk4ISEhRkp+RmlqaX42NzkhISFGSX5GaW5sYW5kfjM1OCEhIUZSfkZyYW5jZX4zMyEhIUdGfkZyZW5jaCBHdWlhbmF+NTk0ISEhUEZ+RnJlbmNoIFBvbHluZXNpYX42ODkhISFHQX5HYWJvbn4yNDEhISFHTX5HYW1iaWF+MjIwISEhR0V+R2VvcmdpYX45OTUhISFERX5HZXJtYW55fjQ5ISEhR0h+R2hhbmF+MjMzISEhR0l+R2licmFsdGFyfjM1MCEhIUdSfkdyZWVjZX4zMCEhIUdMfkdyZWVubGFuZH4yOTkhISFHRH5HcmVuYWRhfjEhISFHUH5HdWFkZWxvdXBlfjU5MCEhIUdVfkd1YW1+MSEhIUdUfkd1YXRlbWFsYX41MDIhISFHR35HdWVybnNleX40NCEhIUdOfkd1aW5lYX4yMjQhISFHV35HdWluZWEtQmlzc2F1fjI0NSEhIUdZfkd1eWFuYX41OTIhISFIVH5IYWl0aX41MDkhISFITn5Ib25kdXJhc341MDQhISFIS35Ib25nIEtvbmcgU0FSfjg1MiEhIUhVfkh1bmdhcnl+MzYhISFJU35JY2VsYW5kfjM1NCEhIUlOfkluZGlhfjkxISEhSUR+SW5kb25lc2lhfjYyISEhSVJ+SXJhbn45OCEhIUlRfklyYXF+OTY0ISEhSUV+SXJlbGFuZH4zNTMhISFJTX5Jc2xlIG9mIE1hbn40NCEhIUlMfklzcmFlbH45NzIhISFJVH5JdGFseX4zOSEhIUpNfkphbWFpY2F+MSEhIVhKfkphbiBNYXllbn40NyEhIUpQfkphcGFufjgxISEhSkV+SmVyc2V5fjQ0ISEhSk9+Sm9yZGFufjk2MiEhIUtafkthemFraHN0YW5+NyEhIUtFfktlbnlhfjI1NCEhIUtJfktpcmliYXRpfjY4NiEhIUtSfktvcmVhfjgyISEhWEt+S29zb3ZvfjM4MyEhIUtXfkt1d2FpdH45NjUhISFLR35LeXJneXpzdGFufjk5NiEhIUxBfkxhb3N+ODU2ISEhTFZ+TGF0dmlhfjM3MSEhIUxCfkxlYmFub25+OTYxISEhTFN+TGVzb3Rob34yNjYhISFMUn5MaWJlcmlhfjIzMSEhIUxZfkxpYnlhfjIxOCEhIUxJfkxpZWNodGVuc3RlaW5+NDIzISEhTFR+TGl0aHVhbmlhfjM3MCEhIUxVfkx1eGVtYm91cmd+MzUyISEhTU9+TWFjYW8gU0FSfjg1MyEhIU1Lfk5vcnRoIE1hY2Vkb25pYX4zODkhISFNR35NYWRhZ2FzY2FyfjI2MSEhIU1Xfk1hbGF3aX4yNjUhISFNWX5NYWxheXNpYX42MCEhIU1Wfk1hbGRpdmVzfjk2MCEhIU1Mfk1hbGl+MjIzISEhTVR+TWFsdGF+MzU2ISEhTUh+TWFyc2hhbGwgSXNsYW5kc342OTIhISFNUX5NYXJ0aW5pcXVlfjU5NiEhIU1Sfk1hdXJpdGFuaWF+MjIyISEhTVV+TWF1cml0aXVzfjIzMCEhIVlUfk1heW90dGV+MjYyISEhTVh+TWV4aWNvfjUyISEhRk1+TWljcm9uZXNpYX42OTEhISFNRH5Nb2xkb3ZhfjM3MyEhIU1Dfk1vbmFjb34zNzchISFNTn5Nb25nb2xpYX45NzYhISFNRX5Nb250ZW5lZ3JvfjM4MiEhIU1Tfk1vbnRzZXJyYXR+MSEhIU1Bfk1vcm9jY29+MjEyISEhTVp+TW96YW1iaXF1ZX4yNTghISFNTX5NeWFubWFyfjk1ISEhTkF+TmFtaWJpYX4yNjQhISFOUn5OYXVydX42NzQhISFOUH5OZXBhbH45NzchISFOTH5OZXRoZXJsYW5kc34zMSEhIUFOfk5ldGhlcmxhbmRzIEFudGlsbGVzIChGb3JtZXIpfjU5OSEhIU5Dfk5ldyBDYWxlZG9uaWF+Njg3ISEhTlp+TmV3IFplYWxhbmR+NjQhISFOSX5OaWNhcmFndWF+NTA1ISEhTkV+TmlnZXJ+MjI3ISEhTkd+TmlnZXJpYX4yMzQhISFOVX5OaXVlfjY4MyEhIU1Qfk5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kc34xISEhTk9+Tm9yd2F5fjQ3ISEhT01+T21hbn45NjghISFQS35QYWtpc3Rhbn45MiEhIVBXflBhbGF1fjY4MCEhIVBTflBhbGVzdGluaWFuIEF1dGhvcml0eX45NzAhISFQQX5QYW5hbWF+NTA3ISEhUEd+UGFwdWEgTmV3IEd1aW5lYX42NzUhISFQWX5QYXJhZ3VheX41OTUhISFQRX5QZXJ1fjUxISEhUEh+UGhpbGlwcGluZXN+NjMhISFQTH5Qb2xhbmR+NDghISFQVH5Qb3J0dWdhbH4zNTEhISFRQX5RYXRhcn45NzQhISFSRX5Sw6l1bmlvbn4yNjIhISFST35Sb21hbmlhfjQwISEhUlV+UnVzc2lhfjchISFSV35Sd2FuZGF+MjUwISEhWFN+U2FiYX41OTkhISFLTn5TYWludCBLaXR0cyBhbmQgTmV2aXN+MSEhIUxDflNhaW50IEx1Y2lhfjEhISFQTX5TYWludCBQaWVycmUgYW5kIE1pcXVlbG9ufjUwOCEhIVZDflNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzfjEhISFXU35TYW1vYX42ODUhISFTTX5TYW4gTWFyaW5vfjM3OCEhIVNUflPDo28gVG9tw6kgYW5kIFByw61uY2lwZX4yMzkhISFTQX5TYXVkaSBBcmFiaWF+OTY2ISEhU05+U2VuZWdhbH4yMjEhISFSU35TZXJiaWF+MzgxISEhU0N+U2V5Y2hlbGxlc34yNDghISFTTH5TaWVycmEgTGVvbmV+MjMyISEhU0d+U2luZ2Fwb3JlfjY1ISEhWEV+U2ludCBFdXN0YXRpdXN+NTk5ISEhU0t+U2xvdmFraWF+NDIxISEhU0l+U2xvdmVuaWF+Mzg2ISEhU0J+U29sb21vbiBJc2xhbmRzfjY3NyEhIVNPflNvbWFsaWF+MjUyISEhWkF+U291dGggQWZyaWNhfjI3ISEhU1N+U291dGggU3VkYW5+MjExISEhRVN+U3BhaW5+MzQhISFMS35TcmkgTGFua2F+OTQhISFTSH5TdCBIZWxlbmEsIEFzY2Vuc2lvbiwgYW5kIFRyaXN0YW4gZGEgQ3VuaGF+MjkwISEhU0R+U3VkYW5+MjQ5ISEhU1J+U3VyaW5hbWV+NTk3ISEhU0p+U3ZhbGJhcmR+NDchISFTWn5Td2F6aWxhbmR+MjY4ISEhU0V+U3dlZGVufjQ2ISEhQ0h+U3dpdHplcmxhbmR+NDEhISFTWX5TeXJpYX45NjMhISFUV35UYWl3YW5+ODg2ISEhVEp+VGFqaWtpc3Rhbn45OTIhISFUWn5UYW56YW5pYX4yNTUhISFUSH5UaGFpbGFuZH42NiEhIVRMflRpbW9yLUxlc3RlfjY3MCEhIVRHflRvZ29+MjI4ISEhVEt+VG9rZWxhdX42OTAhISFUT35Ub25nYX42NzYhISFUVH5UcmluaWRhZCBhbmQgVG9iYWdvfjEhISFUQX5UcmlzdGFuIGRhIEN1bmhhfjI5MCEhIVROflR1bmlzaWF+MjE2ISEhVFJ+VHVya2V5fjkwISEhVE1+VHVya21lbmlzdGFufjk5MyEhIVRDflR1cmtzIGFuZCBDYWljb3MgSXNsYW5kc34xISEhVFZ+VHV2YWx1fjY4OCEhIVVNflUuUy4gT3V0bHlpbmcgSXNsYW5kc34xISEhVkl+VS5TLiBWaXJnaW4gSXNsYW5kc34xISEhVUd+VWdhbmRhfjI1NiEhIVVBflVrcmFpbmV+MzgwISEhQUV+VW5pdGVkIEFyYWIgRW1pcmF0ZXN+OTcxISEhVUt+VW5pdGVkIEtpbmdkb21+NDQhISFVU35Vbml0ZWQgU3RhdGVzfjEhISFVWX5VcnVndWF5fjU5OCEhIVVaflV6YmVraXN0YW5+OTk4ISEhVlV+VmFudWF0dX42NzghISFWQX5WYXRpY2FuIENpdHl+Mzc5ISEhVkV+VmVuZXp1ZWxhfjU4ISEhVk5+VmlldG5hbX44NCEhIVdGfldhbGxpcyBhbmQgRnV0dW5hfjY4MSEhIVlFflllbWVufjk2NyEhIVpNflphbWJpYX4yNjAhISFaV35aaW1iYWJ3ZX4yNjMnLGZJc1JlbW90ZUNvbm5lY3RTaWdudXA6ZmFsc2UsZklzUG9wdXBVSTpmYWxzZSxmSXNSVExNYXJrZXQ6ZmFsc2UsYXJyRmVkTmFtZXM6W10sZkFsbG93U2t5cGVOYW1lTG9naW46dHJ1ZSxjbGllbnRFdmVudHM6eyJhcHBJbnNpZ2h0c0NvbmZpZyI6eyJpbnN0cnVtZW50YXRpb25LZXkiOiI2OWFkYzNjNzY4YmQ0ZGMwOGMxOTQxNjEyMTI0OWZjYy02NmYxNjY4YS03OTdiLTQyNDktOTVlMy02YzY2NTE3NjhjMjgtNzI5MyIsIndlYkFuYWx5dGljc0NvbmZpZ3VyYXRpb24iOnsiYXV0b0NhcHR1cmUiOnsianNFcnJvciI6MSwiY2xpY2siOjB9fX0sImFwcElkIjoiLSIsImRlZmF1bHRFdmVudE5hbWUiOiJJRFVYX01TQUNsaWVudFRlbGVtZXRyeUV2ZW50X1dlYldhdHNvbiIsImF1dG9Qb3N0Ijp0cnVlLCJhdXRvUG9zdERlbGF5IjoxMDAwLCJmbHVzaCI6NjAwMDAsIm1heEV2ZW50cyI6MSwibWluRXZlbnRzIjoxLCJwbHREZWxheSI6NTAwLCJ0ZWxlbWV0cnlFbmFibGVkIjp0cnVlLCJ1c2VPbmVEU0V2ZW50QXBpIjp0cnVlLCJzZXJ2aWNlSUQiOjJ9LGZIYXNCYWNrZ3JvdW5kQ29sb3I6ZmFsc2UsZW52aXJvbm1lbnQ6J1BST0QnLHVybFN0YXlTaWduSW46J2h0dHBzOi8vbG9naW4ubGl2ZS5jb20vbG9naW4uc3JmP2lkPTM4OTM2JmlkPTM4OTM2JmNvbnRleHRpZD0wODk1MjY0MUMyMjFDRjlBJm9waWQ9RDM1QkM4QjUzQTMxRTJBNyZta3Q9RU4tVVMmbGM9MTAzMyZiaz0xNzIyNTQ0MjA0JnVhaWQ9MDY3NmFhY2NhZTY0NDAxYTllNzAxMGI0MTk3MmM0ZjYnLGZBY3RpdmF0ZUtleWJvYXJkRm9jdXNPbkFwcHJvdmFsTnVtYmVyOnRydWUsZkF1dG9DYXB0dXJlQ2xpY2tzOmZhbHNlLGZBdXRvQ2FwdHVyZUpzRXJyb3JzOmZhbHNlLGZDaGVja1Byb29mRm9yQWxpYXNlczpmYWxzZSxmQWxsb3dQaG9uZVNpZ25Jbjp0cnVlLGZFbmFibGVDc3NBbmltYXRpb246dHJ1ZSxmQXBwbHlBc2NpaVJlZ2V4T25JbnB1dDp0cnVlLGZFbmFibGVPbmVEU0NsaWVudFRlbGVtZXRyeTp0cnVlLHVybFByb2ZpbGVQaG90bzonJ307PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG5vbmNlPSJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPSI+IWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0IGluIHIpZVt0XT1yW3RdfSh0aGlzLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBvPXRbbl09e2V4cG9ydHM6e30saWQ6bixsb2FkZWQ6ITF9O3JldHVybiBlW25dLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLHIpLG8ubG9hZGVkPSEwLG8uZXhwb3J0c312YXIgdD17fTtyZXR1cm4gci5tPWUsci5jPXQsci5wPSIiLHIoMCl9KFtmdW5jdGlvbihlLHIpeyFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbC4kQ29uZmlnfHxsLlNlcnZlckRhdGF8fHt9fWZ1bmN0aW9uIHIoZSxyKXt2YXIgdD1sLiREZWJ1Zzt0JiZ0LmFwcGVuZExvZyYmKHImJihlKz0iICciKyhyLnNyY3x8ci5ocmVmfHwiIikrIiciLGUrPSIsIGlkOiIrKHIuaWR8fCIiKSxlKz0iLCBhc3luYzoiKyhyLmFzeW5jfHwiIiksZSs9IiwgZGVmZXI6Iisoci5kZWZlcnx8IiIpKSx0LmFwcGVuZExvZyhlKSl9ZnVuY3Rpb24gdCgpe3ZhciBlPWwuJEI7aWYodm9pZCAwPT09YylpZihlKWM9ZS5JRTtlbHNle3ZhciByPWwubmF2aWdhdG9yLnVzZXJBZ2VudDtjPXIuaW5kZXhPZigiTVNJRSAiKSE9PS0xfHxyLmluZGV4T2YoIlRyaWRlbnQvIikhPT0tMX1yZXR1cm4gY31mdW5jdGlvbiBuKCl7dmFyIGU9bC4kQjtpZih2b2lkIDA9PT1mKWlmKGUpZj1lLlJFX0VkZ2U7ZWxzZXt2YXIgcj1sLm5hdmlnYXRvci51c2VyQWdlbnQ7Zj1yLmluZGV4T2YoIkVkZ2UiKSE9PS0xfXJldHVybiBmfWZ1bmN0aW9uIG8oZSl7dmFyIHI9ZS5pbmRleE9mKCI/IiksdD1yPi0xP3I6ZS5sZW5ndGgsbj1lLmxhc3RJbmRleE9mKCIuIix0KSxvPWUuc3Vic3RyaW5nKG4sbitoLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09PWg7cmV0dXJuIG99ZnVuY3Rpb24gYSgpe3ZhciByPWUoKSx0PXIubG9hZGVyfHx7fTtyZXR1cm4gdC5zbFJlcG9ydEZhaWx1cmV8fHIuc2xSZXBvcnRGYWlsdXJlfHwhMX1mdW5jdGlvbiBpKCl7dmFyIHI9ZSgpLHQ9ci5sb2FkZXJ8fHt9O3JldHVybiB0LnJlZGlyZWN0VG9FcnJvclBhZ2VPbkxvYWRGYWlsdXJlfHwhMX1mdW5jdGlvbiBzKCl7dmFyIHI9ZSgpLHQ9ci5sb2FkZXJ8fHt9O3JldHVybiB0LmxvZ0J5VGhyb3dpbmd8fCExfWZ1bmN0aW9uIGQoZSl7aWYoIXQoKSYmIW4oKSlyZXR1cm4hMTt2YXIgcj1lLnNyY3x8ZS5ocmVmfHwiIjtpZighcilyZXR1cm4hMDtpZihvKHIpKXt2YXIgYSxpLHM7dHJ5e2E9ZS5zaGVldCxpPWEmJmEuY3NzUnVsZXMscz0hMX1jYXRjaChkKXtzPSEwfWlmKGEmJiFpJiZzKXJldHVybiEwO2lmKGEmJmkmJjA9PT1pLmxlbmd0aClyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB1KCl7ZnVuY3Rpb24gdChlKXt2YXIgcj1nLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07ci5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBuKGUscix0LG4pe3ZhciBkPW51bGw7cmV0dXJuIGQ9byhlKT9hKGUpOiJzY3JpcHQiPT09bi50b0xvd2VyQ2FzZSgpP2koZSk6cyhlLG4pLHImJihkLmlkPXIpLCJmdW5jdGlvbiI9PXR5cGVvZiBkLnNldEF0dHJpYnV0ZSYmKGQuc2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIsImFub255bW91cyIpLHQmJiJzdHJpbmciPT10eXBlb2YgdCYmZC5zZXRBdHRyaWJ1dGUoImludGVncml0eSIsdCkpLGR9ZnVuY3Rpb24gYShlKXt2YXIgcj1nLmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtyZXR1cm4gci5yZWw9InN0eWxlc2hlZXQiLHIudHlwZT0idGV4dC9jc3MiLHIuaHJlZj1lLHJ9ZnVuY3Rpb24gaShlKXt2YXIgcj1nLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLHQ9Zy5xdWVyeVNlbGVjdG9yKCJzY3JpcHRbbm9uY2VdIik7aWYoci50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLHIuc3JjPWUsci5kZWZlcj0hMSxyLmFzeW5jPSExLHQpe3ZhciBuPXQubm9uY2V8fHQuZ2V0QXR0cmlidXRlKCJub25jZSIpO3Iuc2V0QXR0cmlidXRlKCJub25jZSIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gcyhlLHIpe3ZhciB0PWcuY3JlYXRlRWxlbWVudChyKTtyZXR1cm4gdC5zcmM9ZSx0fWZ1bmN0aW9uIGMoZSxyKXtpZihlJiZlLmxlbmd0aD4wJiZyKWZvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKHIuaW5kZXhPZihlW3RdKSE9PS0xKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIGYocil7dmFyIHQ9ZSgpO2lmKHQuY1Ape3ZhciBuPWMoTCxyKT9MOng7aWYoIShuJiZuLmxlbmd0aD4xKSlyZXR1cm4gcjtmb3IodmFyIG89Imh0dHBzOi8vIixhPTA7YTxuLmxlbmd0aDthKyspaWYoci5pbmRleE9mKG5bYV0pIT09LTEpe3ZhciBpPW5bYSsxPG4ubGVuZ3RoP2ErMTowXSxzPXIuc3Vic3RyaW5nKG5bYV0ubGVuZ3RoKTtyZXR1cm4gblthXS5zdWJzdHJpbmcoMCxvLmxlbmd0aCkhPT1vJiYoaT1vK2kscz1zLnN1YnN0cmluZyhvLmxlbmd0aCkpLGkrc31yZXR1cm4gcn1pZighKHgmJngubGVuZ3RoPjEpKXJldHVybiByO2Zvcih2YXIgZD0wO2Q8eC5sZW5ndGg7ZCsrKWlmKDA9PT1yLmluZGV4T2YoeFtkXSkpcmV0dXJuIHhbZCsxPHgubGVuZ3RoP2QrMTowXStyLnN1YnN0cmluZyh4W2RdLmxlbmd0aCk7cmV0dXJuIHJ9ZnVuY3Rpb24gbChlLHQsbixvKXtyZXR1cm4gcigiWyRMb2FkZXJdOiAiKyhSLmZhaWxNZXNzYWdlfHwiRmFpbGVkIiksbyksYltlXS5yZXRyeTx5PyhiW2VdLnJldHJ5KyssdihlLHQsbiksdm9pZCB1Ll9SZXBvcnRGYWlsdXJlKGJbZV0ucmV0cnksYltlXS5zcmNQYXRoKSk6dm9pZChuJiZuKCkpfWZ1bmN0aW9uIGgoZSx0LG4sbyl7aWYoZChvKSlyZXR1cm4gbChlLHQsbixvKTtyKCJbJExvYWRlcl06ICIrKFIuc3VjY2Vzc01lc3NhZ2V8fCJMb2FkZWQiKSxvKSx2KGUrMSx0LG4pO3ZhciBhPWJbZV0ub25TdWNjZXNzOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKGJbZV0uc3JjUGF0aCl9ZnVuY3Rpb24gdihlLG8sYSl7aWYoZTxiLmxlbmd0aCl7dmFyIGk9YltlXTtpZighaXx8IWkuc3JjUGF0aClyZXR1cm4gdm9pZCB2KGUrMSxvLGEpO2kucmV0cnk+MCYmKGkuc3JjUGF0aD1mKGkuc3JjUGF0aCksaS5vcmlnSWR8fChpLm9yaWdJZD1pLmlkKSxpLmlkPWkub3JpZ0lkKyJfUmV0cnlfIitpLnJldHJ5KTt2YXIgcz1uKGkuc3JjUGF0aCxpLmlkLGkuaW50ZWdyaXR5LGkudGFnTmFtZSk7cy5vbmxvYWQ9ZnVuY3Rpb24oKXtoKGUsbyxhLHMpfSxzLm9uZXJyb3I9ZnVuY3Rpb24oKXtsKGUsbyxhLHMpfSxzLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpeyJsb2FkZWQiPT09cy5yZWFkeVN0YXRlP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtoKGUsbyxhLHMpfSw1MDApOiJjb21wbGV0ZSI9PT1zLnJlYWR5U3RhdGUmJmgoZSxvLGEscyl9LHQocykscigiWyRMb2FkZXJdOiBMb2FkaW5nICciKyhpLnNyY1BhdGh8fCIiKSsiJywgaWQ6IisoaS5pZHx8IiIpKX1lbHNlIG8mJm8oKX12YXIgcD1lKCkseT1wLnNsTWF4UmV0cnl8fDIsbT1wLmxvYWRlcnx8e30seD1tLmNkblJvb3RzfHxbXSxMPW0udGVuYW50QnJhbmRpbmdDZG5Sb290c3x8W10sUj10aGlzLGI9W107Ui5yZXRyeU9uRXJyb3I9ITAsUi5zdWNjZXNzTWVzc2FnZT0iTG9hZGVkIixSLmZhaWxNZXNzYWdlPSJFcnJvciIsUi5BZGQ9ZnVuY3Rpb24oZSxyLHQsbixvLGEpe2UmJmIucHVzaCh7c3JjUGF0aDplLGlkOnIscmV0cnk6bnx8MCxpbnRlZ3JpdHk6dCx0YWdOYW1lOm98fCJzY3JpcHQiLG9uU3VjY2VzczphfSl9LFIuQWRkRm9yUmVsb2FkPWZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5zcmN8fGUuaHJlZnx8IiI7Ui5BZGQodCwiQWRkRm9yUmVsb2FkIixlLmludGVncml0eSwxLGUudGFnTmFtZSxyKX0sUi5BZGRJZj1mdW5jdGlvbihlLHIsdCl7ZSYmUi5BZGQocix0KX0sUi5Mb2FkPWZ1bmN0aW9uKGUscil7digwLGUscil9fXZhciBjLGYsbD13aW5kb3csZz1sLmRvY3VtZW50LGg9Ii5jc3MiO3UuT249ZnVuY3Rpb24oZSxyLHQpe2lmKCFlKXRocm93IlRoZSB0YXJnZXQgZWxlbWVudCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBjYW5ub3QgYmUgbnVsbC4iO3I/dS5PbkVycm9yKGUsdCk6dS5PblN1Y2Nlc3MoZSx0KX0sdS5PblN1Y2Nlc3M9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyJUaGUgdGFyZ2V0IGVsZW1lbnQgbXVzdCBiZSBwcm92aWRlZCBhbmQgY2Fubm90IGJlIG51bGwuIjtpZihkKGUpKXJldHVybiB1Lk9uRXJyb3IoZSx0KTt2YXIgbj1lLnNyY3x8ZS5ocmVmfHwiIixvPWEoKSxzPWkoKTtyKCJbJExvYWRlcl06IExvYWRlZCIsZSk7dmFyIGM9bmV3IHU7Yy5mYWlsTWVzc2FnZT0iUmVsb2FkIEZhaWxlZCIsYy5zdWNjZXNzTWVzc2FnZT0iUmVsb2FkIFN1Y2Nlc3MiLGMuTG9hZChudWxsLGZ1bmN0aW9uKCl7aWYobyl0aHJvdyJVbmV4cGVjdGVkIHN0YXRlLiBSZXNvdXJjZUxvYWRlci5Mb2FkKCkgZmFpbGVkIGRlc3BpdGUgaW5pdGlhbCBsb2FkIHN1Y2Nlc3MuIFsnIituKyInXSI7cyYmKGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ii9lcnJvci5hc3B4P2Vycj01MDQiKX0pfSx1Lk9uRXJyb3I9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLnNyY3x8ZS5ocmVmfHwiIixvPWEoKSxzPWkoKTtpZighZSl0aHJvdyJUaGUgdGFyZ2V0IGVsZW1lbnQgbXVzdCBiZSBwcm92aWRlZCBhbmQgY2Fubm90IGJlIG51bGwuIjtyKCJbJExvYWRlcl06IEZhaWxlZCIsZSk7dmFyIGQ9bmV3IHU7ZC5mYWlsTWVzc2FnZT0iUmVsb2FkIEZhaWxlZCIsZC5zdWNjZXNzTWVzc2FnZT0iUmVsb2FkIFN1Y2Nlc3MiLGQuQWRkRm9yUmVsb2FkKGUsdCksZC5Mb2FkKG51bGwsZnVuY3Rpb24oKXtpZihvKXRocm93IkZhaWxlZCB0byBsb2FkIGV4dGVybmFsIHJlc291cmNlIFsnIituKyInXSI7cyYmKGRvY3VtZW50LmxvY2F0aW9uLmhyZWY9Ii9lcnJvci5hc3B4P2Vycj01MDQiKX0pLHUuX1JlcG9ydEZhaWx1cmUoMCxuKX0sdS5fUmVwb3J0RmFpbHVyZT1mdW5jdGlvbihlLHIpe2lmKHMoKSYmIXQoKSl0aHJvdyJbUmV0cnkgIitlKyJdIEZhaWxlZCB0byBsb2FkIGV4dGVybmFsIHJlc291cmNlIFsnIityKyInXSwgcmVsb2FkaW5nIGZyb20gZmFsbGJhY2sgQ0ROIGVuZHBvaW50In0sbC4kTG9hZGVyPXV9KCl9XSkpOzwvc2NyaXB0PjxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iaHR0cHM6Ly9sb2dpbmNkbi5tc2Z0YXV0aC5uZXQvMTYuMDAwLjMwMjkzLjIvaW1hZ2VzL2Zhdmljb24uaWNvIiAvPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbm9uY2U9Ino4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9Ij5ib2R5e2Rpc3BsYXk6bm9uZTt9PC9zdHlsZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbm9uY2U9Ino4ODF5VFhaWGtKQUhNZ2I2M0x3UWZTR0J6QS9CczY2ZStoWkN1K3FoMVk9Ij5pZiAodG9wICE9IHNlbGYpe3RyeXt0b3AubG9jYXRpb24ucmVwbGFjZShzZWxmLmxvY2F0aW9uLmhyZWYpO31jYXRjaCAoZSl7fX1lbHNle2RvY3VtZW50LndyaXRlKHVuZXNjYXBlKCclM0MlNzMnKSArICd0eWxlIHR5cGU9InRleHQvY3NzIiBub25jZT0iejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT0iPmJvZHl7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O308L3N0eWxlPicpO308L3NjcmlwdD48bm9zY3JpcHQ+PHN0eWxlIHR5cGU9InRleHQvY3NzIiBub25jZT0iejg4MXlUWFpYa0pBSE1nYjYzTHdRZlNHQnpBL0JzNjZlK2haQ3UrcWgxWT0iPmJvZHl7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O308L3N0eWxlPjwvbm9zY3JpcHQ+PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIG5vbmNlPSJ6ODgxeVRYWlhrSkFITWdiNjNMd1FmU0dCekEvQnM2NmUraFpDdStxaDFZPSI+IWZ1bmN0aW9uKGUscil7Zm9yKHZhciB0IGluIHIpZVt0XT1yW3RdfSh0aGlzLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBpPXRbbl09e2V4cG9ydHM6e30saWQ6bixsb2FkZWQ6ITF9O3JldHVybiBlW25dLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLHIpLGkubG9hZGVkPSEwLGkuZXhwb3J0c312YXIgdD17fTtyZXR1cm4gci5tPWUsci5jPXQsci5wPSIiLHIoMCl9KFtmdW5jdGlvbihlLHIpe3ZhciB0PXdpbmRvdyxuPXQubmF2aWdhdG9yO3QuZ19pU1JTRmFpbGVkPTAsdC5nX3NTUlNTdWNjZXNzPSIiLHIuU1JTUmV0cnk9ZnVuY3Rpb24oZSxyLGkscyxhKXt2YXIgbz0xLGM9dW5lc2NhcGUoIiUzQ3NjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIik7YSYmKGMrPSIgY3Jvc3NvcmlnaW49J2Fub255bW91cycgaW50ZWdyaXR5PSciK2ErIiciKSxjKz0iIHNyYz0nIjt2YXIgdT11bmVzY2FwZSgiJyUzRSUzQy9zY3JpcHQlM0UiKSxTPXI7aWYobiYmbi51c2VyQWdlbnQmJnMmJnMhPT1yKXt2YXIgZD1uLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLHA9ZC5pbmRleE9mKCJlZGdlIik+PTA7aWYoIXApe3ZhciBmPWQubWF0Y2goL2Nocm9tZVwvKFswLTldKylcLi8pLGc9ZiYmMj09PWYubGVuZ3RoJiYhaXNOYU4oZlsxXSkmJnBhcnNlSW50KGZbMV0pPjU0O2cmJihTPXMpfX10Lmdfc1NSU1N1Y2Nlc3MuaW5kZXhPZihlKT09PS0xJiYoInVuZGVmaW5lZCI9PXR5cGVvZiB0W2VdPyh0LmdfaVNSU0ZhaWxlZD0xLGk8PW8mJmRvY3VtZW50LndyaXRlKGMrUyt1KSk6dC5nX3NTUlNTdWNjZXNzKz1lKyJ8IitpKyIsIil9fV0pKTt2YXIgZ19kdEZpcnN0Qnl0ZT1uZXcgRGF0ZSgpO3ZhciBnX29ialBhZ2VNb2RlID0gbnVsbDs8L3NjcmlwdD48L2hlYWQ+PGJvZHk+PGRpdiBpZD0icm9vdCIgLz48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2xvZ2luY2RuLm1zZnRhdXRoLm5ldC9zaGFyZWQvNS9qcy9sb2dpbl9lbl92cmhidmJyN2NEYXFGTmVWMWs3UlRnMi5qcyIgY3Jvc3NvcmlnaW49ImFub255bW91cyIgY2xhc3M9ImhhbmRsZS1lcnJvci10YWciLz48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==","disable_correlation":true,"encrypt":true,"malware_filename":"login.srf","object_relation":"malware-sample","to_ids":true,"type":"malware-sample","uuid":"8449b91b-b81a-401f-b067-e44004231d78","value":"login.srf"},{"category":"Artifacts dropped","disable_correlation":true,"object_relation":"mimetype","to_ids":false,"type":"mime-type","uuid":"7ebdbf3f-9b10-4722-905d-2149c1a35888","value":"text/html"},{"category":"Payload delivery","disable_correlation":false,"object_relation":"ssdeep","to_ids":true,"type":"ssdeep","uuid":"ebb89e6b-c894-42c4-a6ff-ee5eb198e129","value":"768:BWM8jKSilH/bnpog6UzcRUWIqmM4FpYFF8:BWM8jKSilH/bnpog6UoUWIqmMeGH8"},{"category":"Network activity","disable_correlation":false,"object_relation":"dom-hash","to_ids":true,"type":"dom-hash","uuid":"38cc4513-76b3-45e4-add2-16c02084b418","value":"452535a093c51d6bedbb7f73bb63df19"}],"ObjectReference":[{"comment":"URL loading that content","object_uuid":"4b615dd2-4a8b-4df3-81a2-9853e7bf9868","referenced_uuid":"3b040b6b-e234-4176-ad86-603bc0190c08","relationship_type":"loaded-by","uuid":"9662d995-9d2f-4c4d-a02b-8a78e2ddc76d"},{"comment":"Screenshot of the page","object_uuid":"4b615dd2-4a8b-4df3-81a2-9853e7bf9868","referenced_uuid":"dfac6f7a-36e4-4ab7-8ac3-84ee55ddc724","relationship_type":"rendered-as","uuid":"0e3b5296-6607-4e09-9181-c1113917fec1"},{"comment":"Rendered HTML at the end of the capture","object_uuid":"4b615dd2-4a8b-4df3-81a2-9853e7bf9868","referenced_uuid":"fa33619f-5864-4ee4-a107-ff925699bab3","relationship_type":"rendered-as","uuid":"5be1e9ac-74cc-427b-9d84-26948807f588"}],"comment":"Content received for the final redirect (before rendering)","description":"File object describing a file with meta-information","distribution":"5","first_seen":"2024-08-01T20:30:04.355000+00:00","magic_db":null,"meta-category":"file","name":"file","sharing_group_id":"0","template_uuid":"688c46fb-5edb-40a3-8273-1af7923e2215","template_version":"25","uuid":"4b615dd2-4a8b-4df3-81a2-9853e7bf9868"}],"info":"Lookyloo Capture (https://aka.ms/alca)","uuid":"6f083438-3e70-4f76-b30b-08160f362f83"}]
