{"status":"done","blocked":false,"item":"kit-c","batch":"r4-ib-kit","search_performed":false,"port_zb64":"eNqtPWtz20iO3/kruJmqsyhRMh96JpHrlFiZ+NaxvZYyvlmXSkVLdMSJXiNKTpyt/e8HoB/opiTPXO1M1dBNAI1GA2g0+iHm1atXt4PIfZyvkm2z7q5Xm23N/ZCm+ekmzdPNExTWm2yS5u4uT91Nmszd3TLb5r67XG3dTfLNHX68v+udj2rOwM1yxei+HozeUJXEfQROM/dHulm5yWaTPLuPq42bJpOZO03X89XzIl1ua84d1k7cPJ0/VqdpPtlkD9nyixbsKZ1sodrjZrUAIefZ5Ln0Lc2+zLa5+z+D6yuv5l6t3Mck3y6S7azmXCy36Zd0o4RDNqsN8N+k0Og8e0g3yTadP1Mn0sVuDm/TN9A4oLPHx3QDImXQVZB8N9/mNefVq1dOtkDtuNiAKi93i/Wzm+Tucu2QaAB4SFyF/S3bOo7zk/suAUVMVst8myxB4PUmnaTT1EXFQ0ObLM1B/GSRTtUrCZo+JfMdCkZqr6LagRezWW2mIOjUfXh2t7M027j5areZpO5qMtltoAeTtOZevp1ny/RsfPUWqLNlMj9TTQCrbPkEL6vNs9v/pX/7Kwqfgq3debYF/czdUraczHdTNEM+X6HN18nkK74myymY6/fN1gMmwAnad2dJPgNpsFPb9PvWB4w7T79nE+BEor5BMlAEN2v2FlwJGKmmF8kX6O4OHEE4WjKdZttsBR1wt7tl8jBPQZYNqAzIQXmD7WY32e6wZracorsCLxJS+EE1mX9ZbbLtbKFakI2m2wT0MyWXTKCrW+nXaUJ6Je8D8/8kzcNtuvksQeUnk80qzw2dC8bbLJ366BjCMkuolaNbzJ9rjjP8OL7qfeoP3K5bOgH3PPHdk0+9/x1/6PepeHGliu9uBvinf9m7GfTPx+97N/h62R5fBVgYXPx81bscDz/e9gcfry+J0WVHIs8vbsfn/fe9XwkaBhLcez80waFm9c++CY8kfHj9vyY45pY/9UxEXSIue5/enVuYhtnCu8v+1bmJbRrt7CFbhsx7SKWEm4+94bh3CX8EvLMHH9/2h72LS0JHwT56AMYQSKWNWxwQw/FnAY0MjV58ukFpPn2+HAqk0sjPvWF/LNTCSKUVNCkSCKjSyPC2d94fU8+vrweyilLIYNi77I97QyCC9j7AU+BbWsSh9oeobWhRAztWM7e94cW1RsaBbS8N1/4w7N+M319/vuJWYqWHd71BX3noZWy7xPvr/gcBL3gEI1T3P1xe343JKxhnugNDWwb0H5975waqbbgIQ80xoKH1wIBaDdRDS+l2rcjqn11P9R3da/z3K6mSet0EDy6vb/rjm9vrYf+9sHG9sY+XhhZ4pYV/9m+vBUR1iEohlq6v+hoQUamhbYolIvrQu7x813v/d2j+4n1f4yS96vXF1cXwAuII9VCjQl2KTCJhTo2Ldalus/pnX2MaohQVmrtVAwIxoS5FuhTrEvEGFb7vDwbjX3q3GsGsm7rUEqWW1kZLs29p9m2NbWtsW2O1uhsdjdV6bmo9N5WeL5uxhmm/byozX7bqZolqQCc4nGuGbc2wHWqYrtzWDNtNXdKidnSNjsZ2Wtp5IXy+749/1o12tAY6SgOKiINsR3MPg8AqhrKoGh3eXUtIVGgSPLt/9Rmjz5WkaDCnjlWUTPXkA8UmF1tWUdJGLFYUWNBIFpkDx87rz0OOYGHMUsQshQ4KUIysimqmDfX4F8WQSa76dwyPuBjLIrdY5xYb3CIPwLDBjTTqXGxYRaK9+Tz4qO0bspuG2k8psmkCZtyMdXPstWErsoqSoNUy4zdNy3JCZvI2k7e5FfbfkB04bLesoqrWZqjyT2oQowb3gZ2eigZZH7yOfa4TmUIX8ylCh1yUBuvUzUrvr29vIYIDy/Gn6/P+ITgE8ItfpFPx+Ar1APt0MRhcXP3ME0ioB5hGqdmbx1vE4y0K6gxtWsWQi5HMD3B2EepS7UVBa2/yVZ0BZJs5KpElG3uaJnQki9qVo5BF5lEX6TxETK4DbPiuf/HzR5VAxRb+Q28w3MPLztW5AT30pICUQbH2eChFPJSiJkvVZJU1WwxVDqjyLs2wxU232BwtbqbFzbRihsYWNOJiLItsUD03iKKibTBBgwkaTMCdanGn9KjCiQaMfX0r4WxjPa4gVdRDN9JD4QYVWhwpUYf71uG+dbgXHe6Fnn0g3Yy4qB0mZoeJw9C259X1xUAmmHrRAcUGFxXz63ecEsR6OjjvXw0uhr+OB+/BqUzAzfVdXxGzUJHq9fX5+YArAUI33rv9uc95TRzVLQTV04k/YUMuRrLYMOfG4V6lBldqcCVtsVhn7Z96kAexVWOdtouiZMLDhYoKyvrnjDHWKSMuJmUXeRDFPIhinRFCBooDlaExFylh+8f4PfRSabvB2uaEL9YZ3z9gzuwZpDEX61xsCNJPF+cMa3KxxcW2LLLz8OxJRTFXXH9WbbJrceoYc+4Yc1IYN0OrKAl4Po15Po05H4xbRrFhFSVtixvmuTLuBFZR0vJAjHn0xTz6qBhxUeqzY/DlhjvsblhUtE2mbTJtk2mbTMuid1hnnRbTtpiWPVpPjaIYcVHRstY7HabtMG1H0dZ5yqzzlEnFSBZDJoi4GHOxzsUGF5tcpG56uIXzS+/yM+3hLNc12tcs3Ye1wHeDWogPKgVBAC9tfGkrCCR07XqTn77bbEjyVsN3W7VGWglb+NqIfbdRi4+8doBzpxaq12YHGNU6GttBrH5tR20UIWorQNAIkRtWbxJ9u4EV2rrxCJ5RraXpgaqpiMPId8NapHHyUdePVi2iB1C0CQmix6p2DC1BvKEqoLGGeGrSqN1oQcatn0gsmohQYqsUQsfEU1RvUuviSdqvS4GoCgscUA8igam36/CGT1kNhVXioXQgK72Bttt1QHbwj2oC+SoVgErDQL40UaHwUDh4aygcKVO9dJAjmxWrtdkHlG5D/aCWG4wIzD9N3fMO2hMl5/+EZYgAvUE00bY6EuxVCGVTqElR4yBVU/yJhZ6CqJFWA6DtQMmiqxekx0eku8XYpha2LVliH5lFGGse1iOQRtgTcB/08iM89jCVF1nuJt+lG0mXP2DF6NB7aFTF11B1iLxRw2PjCb6DGjbMT7EnNCFFCQ0zhfVit6OGOYijYo/29QO9rENW3mx1OmEnrsNiDw1ZABlKEM7UNl1GRA6D5pB7xfYDw5uIbzLAmeP+oDn4EXbAteKg3Q5g+oL1fp0CSKdpwUDmSHSv8B9GowJQyn4EzDIe7HvcbMZt1GEnhBwNIh4yKsBahq+ZrtNuxxGI22iHsGjttOsHYLEIi0dM8pKl1IwEg1BBDzk0xdImdkh0q+iitruCMwNtLKj2noWAIOz4p8OCqA1Rp20N9sLYNzw3MCdmwa0YrA4Bj3SuAy03kfpokIlqFBRBvMjm2NZd5BLqCiNucDBsyRnqAErNd2FQiFcFRUV7M1Z4NE6GR8YjzyfxgQeYAl2Pp6xWVCjSo97gzKHBITHQFg8LNjuUbhQ8J9zr5p4PBAcD+4EJIGozQJT3oox01IifARfNgRFw0UoJTcPX7e7tDfo/8xj57nT7vE67kJnK83MPj6EvFovdls5O5SHpGz7QdPGwOaXzykWezp/wHHP+LXnO3clqkYpz9+HHmnPXO4eUN3DkeSWUQ0ceWEI5cowNA3ivO8UjSgA2HX00CW9tR59IIrPA4ZNIfI8cfQKJr8RQnTwioOmYJ44IaTvFk0YULHAKJ4wIjJzCySIC6w4fDeJ709k7SURw2ymcIAIwDhx1cohvkVM4MURg3SmcFCKw6agTQnxrO4WTQdQkKGbvRBDhkSNPAvGl7sgTQHxpOoWTPwS2HT7xg/cGsjVP+hAWOeqED9+UynH3D9+1xhWg7dgneWhioW71JoyoT+4QVHfUiR2+CZdQb23HPKEDSEt13qBqRY59Iocw6L86icPXprN/AofwtrN/8oauGDh44oalyLm+QhbthmOfoSGs41gnZgDqRI59PoawhmOehiGk7ZhnX+TuoWMcaxGk6cizIXL/pmMd3SAsbjnWSQ2NC1D43TWVGs6BkxfCtBx98EFDJ3D0eQa9Nxx9eEHv4OLyRAFfWx1HHh/QKIsc3v8nQMex9ucR1lEwtRlPI1HWtCNFFNSdQ9vshGo7h3faCdlxzG11BEHQMLbTCVJ3ivvhNP5Dx94HJ2DsFDe9Cdx09jawEQ6jfG/jmuC6Sb01TWCId7y3TPGm4eg9Woo3sVPceiVw2zG3RhEEfiw3PykgQbgxNz0JVnesfU+CNRze5CQAxgS1uYmATuAUNjUJGjnFbUsCQ+zSu5EUA0OH9hCp3HHkLiG+hbGjtgTptemITT+KlYFD23pUBle4/kzgOHSc/6Z7VNP00R2vV99Kw4+++5jgbTDfTb+vvdeOC/+Jm1pQZfjxHpocEfDbLIPJDojcM4Tj4B4Jcvwve8TrQSXk4f6XGzLC4FfuyrY0UrweQGAzXbodVqPbZsjYPcV2YWSOPCnldrdZSuZWz2BWXk6pb4nvPvjuN9kvEPLBPeu6CYsnmSRuxS09VBOv/M2xwFW3lFQfEGw1kEj+i53vPvnufOW7s0y28pM7WM2zabZ9Vjfl8HJX6cktQx4XNz13u3KTpbpN5WOWQL2YJHNIFB6egSps14hVPkUt7KAmqULwEb1PAmEfsoOAhHuQqAjBq1m/4WWyTbL8kpZanmXB39y3bmybjsywq5ZQ8+iIo+pvXhnEAmqQ68zdQ6TzPJV+g646YpMC4hDvSum3qmaCLDTNNyG9cvORELELnixaKRESnZ5RkUs9hFLdJILBwDShpmmY4o48Tzc9zfBe4CQFCear6hqrrkE585Vkuq7OMgE8A8NrLqRo5vIDqitOp0Jp8OThY9fT1ebZ13SezVarKQ/B05IsVOAvDuhR+Uf5h2foCgYRV9RwcJNK1/3G7yG9l9fcVWgkecihS4udd7rYMWkkSKdlwW6BhOFpEjhmtYVZLU8nqyVhIkUnR9LCl8gqsCNFCNIzF9+VHnTsHhUiVQ5ZdQZhwBhzq4cceK5XWx/vgI5F6SGjm4JfIaplmxwAOQStJSJ2z/jyI+VQAP7b7R4IZQgnxorwCSxvCce0T8JChtxkwBWAlVBlZbkqCCcMBh7DeG3ZKsjtqTZJfGtwip4I70FyupKpmByMyWLUJes8pTCSLUtKG0BbnBYNtxUdq1DPjIRqVC5JblU1YKwqZBdo6Fh0dF7iLTxsTHdI5xQXCPLEkCdLNX/ce8XMN5m8KBvwxvuqBdU/phgFwHY0feyehbOCrUzjIBEJoZPCgh2Wq80imUvHYpeAeh47gFXfs9qzq9mEpxa74sybTXfUMA5WIUVxoAv5sjwVzmxmRqOK4lBWBavaVzTMaempQvWLbdPIN2Zj1LkQwXe/eqB/7hG+7gVCFTuEqSx0KnsEUcDszna1TeZj9MInDJQyoxNVMBqn5fRU0ogoli5znKi7nA7tBdwfp1CyssGRENbKBuVgWE2nOUZ9wbeMPHR+ODrlWVwKoR0PQ5PwIE4fDRcituUu43XaOHKOxIeDlYtJ58hIM4oZxrdsup3htepZVp2vtIrtqRGCpQilxuQI+YKYHSlDODw9/qCRiNz1BIlmlLP/IslRiyTBaYn+VGTuBwmCZ9iG2JTFH61Mqk4xm7NpMzII7jaarXfaJQoCrDerByBFODeKb6Ktr+Nk80BDwHSqhYQWPJ8mLKohKi9SyAJtKh2yiIVPzQvih3T7LU2XatJFdFWRa9M8JZtMmgZrls3xRe1W9DtxLqvIWCHyAlI2qf7q2VA1cqZmPpw9jCmRhTDwVi4AHfc1neilNd9PVhDYs2W2LQ1woPnu98B3nwOdX/dyTGFVlg2aXc6fXaTPkjmMo6n4hQX9dgAMmX1Z4u9RIL2e428N6LczA5FfD+6DkZBTbdKMJDw8Ao9HhWXR4L6BoOfg9HuA6oHngQTP3vdQNZuSmbUDopCtAlLshShse6/qP1n2RgGJ63Tdgfilmgq5NzUDro447K5pS1NFvq2wPYsmj5DFKZPe+W6WjyktSxar3XI7/q5LANtmixTiwmLtu/K3U4hXxWfpCpAAPI1xau6SKRkG0zPBQpmQJfl2vM0JFI1kGNukE/wVDAFjuWCabOm1LlnNkq3ZZ3ClRUKApuK7oNeWwv9I6b09krPR93Eqa3QEaIIdFKJJefF3VgIgW93BoNjgT2loXiKjSO4U4Lusm6rqF/idBoL7KfD+8mKZfhtDLr02uXAFnQVJqtdOIY0c42/UDgjgHE43jVrkG4fTzcVuXph/9ZY2uJTk4ZnZFtvurLs/3RWtq8J2SQN1/lqGtl9YoD6k8xX2VwdGzcGueaTFqqiPaRwV3urU/fC6D72vbGtCb+cf0gS5W6ECb/gfqqEcslBJnwoc0bdwWiOs4dRtusSx1Ue2JN9GXyAep0WP4P3zwmJCjCx4lplKiFhBplYqbKGZjT2OUAYD4puTE9dRw9PeNKEFR1chC1hagHQ5NJ3qeIWq45firIDBRQ04EWgOLUZlCNLLUbEa0XEPt90oikqeMvYR6ZdkQbHHWByopcpLnggksuYhefBndxkNcC2SPW5sgrJgVRCTlr2E4cA2gaUc7oAVpldrvXc8xf1iLXDV+PZ1yqu2/EdecXeJVGOPIOM4AFh8MQacmCuikbUuP6woRa/NTO6FwSQ3Ey1hR6/C6WVVGdHzTmXOW/QGI2VEiO9OcI/TiAsH9Vk1OmecZox4y1Nml9KEVeTtnVKbykdf3LtK5kAj8wd9nDdiE6oae0eAI3vzSC/CyejmqNNukScL7NmHBFiKzH29XsGKywbqbSY2yw6nPuWjZwXzTEMx4doGBujfjlpYyFHCmlpCD8u7tUVoyIfdw3qWE8G7zfmgMulsdHRkj4gEZ3PToLM7qi2gnepLQiItku8lSm4w2haOVMUoUkeqcgAJ6WAasXyNWR7EUDjcum+7RLMX4/APDw1qwavIHpTpVXHRykT/oB0LcU48OjgRHRs0oK9QdE7XP7b9JsYGBhgoySrDQjxRyaHWo3G4jtso9pxlIvd3n6hjB/aUCC5C6qGe2ptMRPfS5lIxJB/dX+JQXTSXJry+PB9VRPsMvOrfycVC8g2mfMiOMMLIHF/Pk8/mPPn8cojBZNl3rXkc1rVjuUwvbBQfIJbupDaOKZj7ejr19QS6t3+s1iq6J561ZDIasZZLKILUgOg9+ZDiIZIv+14Be4OocibmJPvih+ndu3ym+UKFssyfjZsSwsnV8fPISu1Ev44nz8hXv1ewMZ2h27z2s2eTDafeJK+dw4s+HM+Ju/gsy2zYuGACo4p6bLptkaSQLXfpT1klyn/AbI9mj5vIOX6ketvQUws/OZein/2/J1JRHXlDSWforG9eV8pSWZJY/QGc1ZsigTxFFSvYsKlWwGp52tLzDMHeus1WvfbaMAwAK103rDGbzaJSkhJVNwvvFGnUcKC9js1CvdLuhsZjpXlGu2GJCNObha86R1cnw6jZaQZhvR20mo2gHTZZE78fqxbWok4jqgetRtyOmnEYNBuymkrz9cKkYmWM1iUetbG7yb7gNz/GemVigw33UnrDfR99rePw3LQR8y/t2fCJAywWx7xRENcZhVtnY73NEMdWoiKYHUtVZFMHt4XUvilzP8bFFODgJtLRLYTCepA7eWqcSlm3XkZ75wn4JRmKJ2bCbt+KARMWTrqKF2TMc15DMfinrNsorDI13K5qWWovdolv6hgJuJ6q9lJindgK79xgbIRlsuYgCqaCVccKV3xG0nSH7/gUjZnlOX6BRlokpcBoXgBSuZ++/1MwyVFJOe2QbXiHvLvS3ePAh+BpslkK4cwgVjC2Vy5UM/3T3FlXYN+VM6/i75n5M22coiMYwFhM5FpqE0Vzv+ZtpotJNh+bjsXnavrS1KhIb4QQ08L6QtXIHJbCdXTbRgP6ppVxo4BilqEPAPimmH4hWO1NdEZdqUaW+XBl0pisjfs4WkOPD4k6atSbxRWdEpPgZUqiK8YGEUGBTcXSigDrlgT7Be0HUysVNXUSnZxlFFBfoRSY38WzIpMIgYDEg5lW5BGaeVFSiqp4G7vC5oRh7g5bM4basc7z3SY18yRjZ1MeVD5ZaZSxyNPVzWDCW5Wi7a+p3O9Qtz5HZWBZkQDuDQDLcgLVm1OSP8cOseOOOqkgY84JaNcd4VVqEMMcKu5MtL+f6NhJI1e32XJzf5JtvoUl59hepuzdNxxVMDlnlHHl0OTCuZhO5zR771QXD2Rp+Sx7lNHfvnALPqNYi5xru92IPJeqsEjm9WQ+56ULD13upG2XiuRS0Co8q6odTOkAeKYb/jOG2eMrrAJPk+8DmeU432ROp3EY1OXqk/b1ZJcoT8bLWSVcCRcJ3gq8zkoFK6P3q1Uu9V248j0qU9C38hNrqS2qnhm3H/Q908KUaTSyR/lH6yppHmLxwrpJapvJoN44n6/WMmjuX8M+HAb2r2VLG+Rfj7BTZH/ETjWrL1Vm8labvjA+KgYLC1kpodtYIK+se6kNTD56hKvw6gJXdPICV91Zh2XBwYw7XrTil3tbtNEh3sSPMdRGF7WjatDOwB/UOHh5S/QFmyd3U/o6dltI64wJDIfhcQZckZ/W1DF+WlsFfsc5GfeqD2ndRDtaqiO9PMxL93GPF3C6w4P5M1j4GZtbMxXNYTkoYndQi42V1Dfx8/F0sd4+l8KOZ6LEOT9N1RaYjvnVBK2A0chcyCko5Xrm1KgQdbGU3VpAyiTtOVihaCUsZpLlzDtdzixsS6ag2aq4RVe1gxgS0y0AtaqwMB3EhLXCSiOo2b0PDu1daSwpx1hMtWveabvAIRpZ2wcaTv1X+2o2qqlRhUt0ZHS8w1uzvfcn9+IdLB3Xuy2kQY90z2O1zPGLmgDKu68u3r3yXpMD/Cp3F/F7mVU656aU3S+wm6XzqbtZ7bbppqq2yH9Jltl8ntBU8wZ7BLrF0+3e5mGYu7v1lD4eSrqs2Wta84RKr/BgNgtqDbsfcpHRluuJZFvCK/P6MB0vzjcbjbjhFfnbk5Xa/w1qB9mT5c0N4LBWpZ85Htnz1ejCNq+2Fzm+2rXdR5P72ysjjWspD+IbA6QAP2zWvH1y0kyJ+lBF4SC/wokfxBb9wj7vOfL+BMpS653Wv0jsOCqI/SRPf/9KfQstPB0KEC/421/hbrMHn86cZmkyLd35eEhPTXmFoG1MoJXZQzlMq3XcpPPoN/NeYbYw5s7KLDlILK9hqUghb1+p6DAQAVkLri4yRSPzFFpezbJD7sAOzvKulj7zkzeweFqQt67UhCCvWempYCDCqjkJDGQQZU+SF6PUTXT8regdaTTdvHZT+tzu1F/6M3+Z4leA6dcfj2myxVwrm+b3S9zB2s23GcalDb0Di9XjYw70hKUq9M1nYPHavQvvgRnAH6AAf+6i+8jHwgMURjXjGtaeXYXDSGHE9kYXneQOLOD5ohTpUiwznO9dPc3K/TD8WUnGPytZGj8r+X6fjbroA/Waj25Qhb/o5oJlvZKNvFEZC0soVrAQlbEoN+mm2aI7A0BcnlUiseParcPbEq/zLMROo5K8G9GY4GgpQoW8c4++3b27X1WgXjUa+aoY8i9j8KvQ3IuZ0YsfVBMFQRpjq/Z4x8WVY0jksSbWom6VUR8GW0MzQc3/4ZmDUVXGZmei4fIPxicmPirbFNILqdfWTTy5Ua7uYM53Kd7Ffs23OwGCsxcS7P1MCoGVEtFUseyVv+ofgxDLKuEU2KhVpbsqU1jE0bVXFcTx2z+0CaS+4aw+56wR+stA+itBtclq/VzynJuhgBpkZk9zWINu9S3Su8IlUnU53bpqejPUVPuc9O3Fv+TmotW+Zo0C/IfsMd7gR9zxC/D4JXHcfJ2nalsWD+PpE+Ti6+byu9v00XOgpw+t4xBSV2tr4kPs62Q7m2cP6lPsN8ZH23/LIdRiiMMQnqdzCL6iXTNTWz2K9C13wxg/lQL/4zc82m7poncCwA6u+S/eUdGrORdXN5+H40F/OOj+6wQoXof+CWBfR/92yB7imBmCMiTR6YR9V2waZEtxn5yQ/jSbiC0FfKt9SbelkyeIqiDWiYfXOkLzLAZ/AvELOnB/s1ltSifqo/j5ZIbHbbIiRGeILQ+pG57IFd807yL7+xMZx8cAORm9cZddGGslePHeuDNJMsum03Q5pu/+Ew1EdYnC4snI7E34trt8223WsQOF3s0wKFPPLODDajX3FDlUn2H1l/q4SX/fwZwJa4UatCPNhD4gBBX/QMEJ77osn0sFSbJDkmS2JMHbbvYW7KzjJSrlJbGMGVG6FXkVsJiuJjv8Vw7Aby96p7AykKSGkKh1VKYnlLZ0S6EfFbwAr6AIFyidiDFyYlXtdkMRpU5oLrlYDmA5cfKizKtliubEf6khl+Pujbv9tiIb07/fYLByS2KOwgrgU+JlvUFVyo6gq/8ugq0PA3Wd+vNskW0NERKciJNcfDBNEO5/q8LchagRn7916Y+yDfKYz0vwJ8tpzKalxBOWAwzaG/485AA8KwpwWA/ZEmSBRFEIDW0sBVs5uQDjySp9fMwmGd7me4DINj3xilMNNLpBTCnxm15tCwEp35akhcW6j20pACc+BgvtBNKVpQdwTHnJgrKOGuAXPRmYPONn0V0MKSUZC7qhb4z5LgmJru2bw7w789Hb5Cgnxxv5xu/LRH0j5+v+XrLjiYGDqqWl7/lh2vH2mcg0cY+BhHPlpkf5Z/d+xBkcuiKoCuHmzI+dVsGplqzXmD6QDu5CaAfg9yd3IXKGLBJYB0Hg+Q8a9SBRCmP5zl2kOURIBnmr5qBRDxIlMV7Bwn/r0hyh5JS+MOqKwqFfiuPAkv/siTGB5N3CvPJGhO+8ENa9NxDKi3Fc/vwGv/rSvReLLfa4+/yAm0JWjXm3bEFo1xtViq2ZAMsLTIS2btGUmvNrK2P9mj5TVES7+WghH/Xvo6a916IXtfT7Fg1tBBg0BtQcebVN8pTOSzwqrd/jF0NSfiAmkQngZVrC1MJOiaRlMLGoIUlewnxDENbw3xIZ47+IUkI/cM77H3qfL0HLN/33hvmMuqLyePyYzdPx2KutE/znaE7V1F5D0pMiX0gqL3pdKYjZBqGGXcLLNPQNpqBDyH66kM7qHNUicT72e+fjwbB3O6S1C9rc5Fp0MP1vmnS3u/U8LYGzoXhy7Qh2Wo61K1lu6EtrV0if94+a77+yf58U1yp/JIXHbNjx/lNOwlP/Uy7CeEe5aCt4VdY8DDjn/wCAv2hR","port_sha256":"d5329ec002ba93b70ca0caf991f1bd3ed13d37b4cf60d990388084737693d7bc","harness_zb64":"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","harness_sha256":"b3897a3c16287fb129077aac4136d4d36680f759ad334b37e19bef3468513ba8","tests_zb64":"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","tests_sha256":"7c38e27d9bb49bfe8921402bd32a4146e8c950477a892047f6869659f4e9ec0f","IBD.sol_zb64":"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","IBD.sol_sha256":"dd801398ab0210c978bb3431b714fa005da4dd169adb4e9a88175f60d4578f3d","weights_IB_zb64":"eNqVV8tuWzcQ3fsrDK0dYR6cIdlld/2CLIogSBE5FZA4QWx3E+Tfe64ky5eHrpVqYfKO+ZjHmTPDH1fX15t/dt/v91/vNr9d683yfbv78PD4ffd+//Eesj8hur6Wm8Ogx8GOgx+HchziOORxqMehHYd+2v50zOkcPR2kp5P0dJSeztLTYXo6TRuGdwcl/95//Li7e/94t39YtDzcs/n04WGHj839/u7T591msObL4+eH/bfPexh7tkpFZHvSyZ4m8Sx7eaqv/9umyXKNvL4fk3ianSbuvvXD7+Vv2arF6qCza54s/np7e797eLb2zfni/z+TafKL619cdrbx4iFno+7Wlvw4/IX0rZ5ly+95tmzOKKWekHb86TY1tdtaBmVqS4lYC32rHZt9WGjbpr154d0lau+DULcqLhLj3d57yKDPm9hqM7NGRwqubn3c3YpYDVroRTNvBqutlZI27g0x6bTMxbKS1iZFKy30bL3EKFODx+heN5OMs+jdzX9EpfRQaaN+4tZt0Nm2UcJKHYMi8JW38V6s66Yck25Sk4RwlQYL3SQah1SqNWGUSNewymfW7sHb2xL9Qv4uKVbI38V7Ew6CSGarBB2tJclw72nGgKiiVZ2ildDnUmBwR61e2xgEYEk9GDmhrqRLFVcCLNDQK9lRLUcswd5smkJpiivq6GuYpgAO+797jSBXq1tSjvuijdmUuq0V6xxSL70RuAsoPEmf9GritBlYahPwmjcLNlu1aWmXwrIsTNXKAG9pGZRFyPvoE0FUV9YnUjojTEuvzvhEasQUQuBkorsGfE46ahby7pJucA/Tqpr1YgyLUrNMsVkIirBnCQvpmgrYZiECdY1OqQFMpBFuuyCEepnIDPF3I0zUyKhjDiWIe45LiAf7QRYOZYRDWNgU95Y9ON00W584S3oyeReUQIaESKMkXPRJYJQRrihEwQULzNrFmSdSJ0QZepaxYoHpZeJa5Lq36ea0onYpMIZkBRZ1uri7Ny6pC/A4szo0ZMwjsSK4piKGXFQbqJEgoYJS2aYMrJnOhRYsP9kMQI1k63Csa3GKfthU2kKaKtMOskUKMRlISyonVe3kBDNVrmqoiOr+CyRmILvameQL/EVOABAnHPYok8ELR0/eklpVpgrfgG3icwGpOslqh3TKPtQwp0AdzuOiWAMNIxcncCo5DKQW3GEpokS1HYUFweOmqxjX3Yr2caYWlPuLjRjcatKacILmpCAYrNbR/UsnljGxgHc15rRoSZ3BAQ1WRipGkCtZvJTIGs7tUSwN5LgVzUej+gHrqndjt5belWRoH2WiZ8A/CtGUo1tjjkOfiGsIW5noH5nQ0K1JfQ7KFQVn89f4klnICa3NSgWY3uHM9RMAbY2iK12z/mGV+rrBXoAI4KyJfImzo/atRXAjCs2adJeNUUvpk7Jv7ZVnF4oYtaAHWHlO0WhLiZ8930fmWd5dMCC51Z26nSXmQUhFtjZ0/X65nCO8NblqgJGlM4U6XFc4r0Enwi+2RBbPTyw8pxp3kmncxCKXmr0KGCPAoMFtfWUAkACXa16tT/h5flDv7749Hp7Umz9+31z9vPoXUQTUPg==","weights_IB_sha256":"8110b95ebe83aa02b77528b6dd2b610781a6e7ce14c2885f165212e803085dc9","speed_bench_zb64":"eNqNVl1v2zYUfdevuMgeRGKa5qTt0CXwgBQt0KB9KNZse/AMgpJom41ECiQdJxv233dISf5YmqEGbJO6n7zn3EudnZ197pVqyK4obBStlVFOtnSnA/XWBWI3b2in9HoTPKd7Tzdvck92Z5K0IC87Ra/OL6iT7k4FX2TpyUY6o7wvK2XqTRRR72ywtW2vSLbeUr1R9Z1PIcPOJmee5NopNXqi6nFclWdnZ5nuUjZfvDUI+ugLCrpTBVmsum0bNPzXiKjNmqSnrs9WznbUy7BpdUWj+SdsJ1dm2/WPUdf02QeaJxmD51K69f3ifMlLp7xt7xXjVzj125tfnyhdHCtl8XGMV2rjlQtshkSDYx84n0KOVSmm2uku872q4Tc+KI11nWz1X4rFY5atlY1n7AP9SPmIgLh5U0ZZHuPKRgT1EBhHgO+Q4R6Vy+i5xOGcqra6DairRE6BdCUGTG/fU5C6ReBVKwG0dLLze5jLzLuY1BB68HUaEeu+lbVi+VDl6HQ8I44sg9BGh2Jcy1VQrqDb9+LmOv3d5kVG+AzGU1LfYP/79cff3n2OmCVnf5roDImmXc4zNsA0JC10NeS9czqoIXGc61mcku0BqzGthBJcZT3iHMOyDzUU72uwZKm4cxCsrK2pZVAGX7bA3sl71bJ+kf9xni85CLHIK6wKOpFd7GVYLXkWNsgEDsfcyn1J4L9/jDxNGotJ/v7d9dvZ5cmOvqdWGRYz48sR/0z6WIgkSA44zQ9BnphlWaNWtBPrqM4vwbKwdQadWK5V6HXDeCpaKXYW7eugMxro6v/0I15HJskmjQ/W2aagQYK236BIRRwnNRoJPPT8MrEJWqXbGjEMDRb1gOzFrCyofI3vbDb7+VVB5zxp221EZrFMm5V1JEgbctKsFTtyGj9fbOWjbnKJmOfwNOPJyB+Mfpql5wWNC1TM8CUQgWkcVWWv3ErUdmvAZsb33nc6bDCuYi0gNYk6OXzfgUyfrAUR4kl5JH2P7SGt+HFpdNi27GTPpgrFfAsM2K258xgm8/NDMJ+GzVfSoR8o7LVQm1L2vTINa3SNrlFIrPFz/BfTnBewF4NgbtAGWPIhzgTvNiQ2S+fkI1s8YKKmkj2kkoHMmV6REAa3hRCRb7kAdNoIkQ9nNMgUF8vVADU2r68S3JH/JhyG8MslJ7iK9JyecfqFXpJqvaIXyRdYDbbCcrqXetvq+pHF6TuPP1Pq0fvf/+xJEbMr6D/8iwdgLB9vytQkmMtinJ55InMx9EcxRgbDWQ4dTOikn0+ML1JbFEPf8iPSgcmR3nYXM/q2NjjYKr+Imcf+TgCaOVSN8AFq85GmyXI+2SPaPIU8oVelfBBfAbyTD8wt8qeSfMDYJYzhjp/620nXgXNdr1sl1EPdbhvVzG/dVhWJxshQurDtMf6PZE8Pht7KRaxNHo8YF0lFFhSnI7SAb/8sQoMlLw6KR8iMwokOi1w1ayXSi0mnTMj3NUUNhKy8SPJGr1bKASU1X+F+QMX7MhYp8r/yTC4uMYyWaLJqWOHKPlSmU9IMbsaERx+jVRnluE2KI0UkHJMdFatTxSH50zeVF8uTezBdZA1egDyGHfDXpsHhMCl4bLfYXs9rZP8CMrhH0A==","speed_bench_sha256":"521a285d7278619735d957845953d764617027b31a8c74c41762f8065a675f09","unchanged_from_KB":{"kb_url":"https://api.imd.fun/artifacts/48cd6a10f39fc22a79c5f12398474bd65282803d59314819acd586f187015808","files":{"sim":{"filename":"sim.py","sha256":"aa97e7eba379b1d2b77cdbd2778dee053c603ba1c59852f680026c23301600d3","from_kb_field":"sim_zb64"},"diff_test":{"filename":"diff_test.py","sha256":"b2ec75b04999f0a8431a049f669f4cd5b2005efda4a6d1b265025e36e3749279","from_kb_field":"diff_test_zb64"},"IAD.sol":{"filename":"IAD.sol","sha256":"7f6998c8df1b738dbd9715053edae7c9c8fdad71bf7228d67b6f1b7573c7126b","from_kb_field":"IAD.sol_zb64"},"weights":{"filename":"weights.json","sha256":"058c2af38034b617b3d4e5c4a9f7869a739368c1b42ba2182db7445771584ed0","from_kb_field":"weights_zb64"},"IA_patch":{"filename":"IA.patch.json","sha256":"2b1cd0b4278962d3e68fab51fee530b3d379adfbf3efaffd9b332ab5d6cb8d82","from_kb_field":"IA_patch_zb64"}}},"decode_instructions":"Clone the pinned amm-challenge commit inside the workspace, save the goal SETUP script as scratch/setup.sh and run it once from the checkout root. For each api.files entry k -> filename here: b=zlib.decompress(base64.b64decode(result[k+\"_zb64\"])); assert hashlib.sha256(b).hexdigest()==result[k+\"_sha256\"]; write scratch/kit/filename. For each unchanged_from_KB.files entry k: decode KB's result[k+\"_zb64\"] the same way, check it against both KB's k+\"_sha256\" and the sha256 listed here, write scratch/kit/filename. All files are siblings. IB.sol is not repeated: it is code_zb64 of https://api.imd.fun/artifacts/afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557 (sha256 301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686); write it as scratch/IB.sol. IA.sol: . scratch/env.sh && python scratch/kit/harness.py restore-ia --out scratch/kit/IA.sol. speed_bench.py also needs IB's port_zb64 decoded to scratch/ib_port.py (sha256 f63227c5e0f63633efd132d6fb402ede665e5c9cb24481911471e8dc20a3362d) and IB's params written as scratch/params.json.","api":{"files":{"port":"port.py","harness":"harness.py","tests":"test_kit.py","IBD.sol":"IBD.sol","weights_IB":"weights_IB.json","speed_bench":"speed_bench.py"},"inputs":"weights JSON v1 gains optional \"inputs\": \"IA\" (default, omitted on output; KB behaviour unchanged) or \"IB\". It is carried as W[0] (1=IA, 2=IB; 0 still disables the head). Feature ids 0..12, 15, 16 mean the same in both sets.","IB_raw_features":{"13":"trade amountY in real Y units (IB scaling: multiplier .05, offset -1)","14":"stepTradeCount after this print, cap 64 (multiplier .5, offset -.5)","15/16":"prev bid/ask fee (multiplier 333.333333, offset -1; in Solidity multiplier 333333333 emits IB's exact fee/3000000000)","17":"min(timestamp-lastArbTs,16); lastArbTs set when firstInStep and arbProbability>=0.5, BEFORE the feature is read (multiplier .125, offset -1)","18":"(routerSpot-spot)/spot, routerSpot = router-implied Vanilla spot stored on each later-in-step print with gamma>0 and held; 0 before the first (multiplier 500, offset 0)"},"diet_storage_IB":"IAD layout (8 live words) unchanged; lastArbTs in slots[15] bits 240..255 (IA uses the same bits for its own lastArb), routerSpot in slots[13] bits >=146 above firstDir. No new storage word.","port":"unchanged API: policy(spec)/load(path) -> W; strat_init(S,W,x0,y0); strat_after(S,W,...). IB state S[18]=lastArbTs, S[19]=routerSpot.","harness":"emit_solidity(spec) writes diet Solidity for any IA- or IB-input weights (any n,h,ids,scaling,1 or 2 nets); all KB commands unchanged and take --weights scratch/kit/weights_IB.json for IB.","speed_bench":"python -I scratch/kit/speed_bench.py scratch/kit scratch OUT.json 3: general port with IB weights vs IB's own port on the same 512 markets."},"commands":{"prefix":". scratch/env.sh && timeout 470 ","tests":"python scratch/kit/test_kit.py","emit_IBD":"python -c \"import sys,json;sys.path.insert(0,'scratch/kit');import harness,port;s=port.normalize(json.load(open('scratch/kit/weights_IB.json')));print(harness.emit_solidity(s).replace('\\\"censored_10\\\"','\\\"inputs_b_diet\\\"'),end='')\" > scratch/IBD_emitted.sol  (byte-equal to IBD.sol, checked by a test)","gate_A_IB":"python scratch/kit/diff_test.py --source scratch/IB.sol --weights scratch/kit/weights_IB.json --threshold .01 --sequences 50 --out scratch/A_IB.json","gate_C_IBD":"python scratch/kit/diff_test.py --source scratch/kit/IBD.sol --weights scratch/kit/weights_IB.json --reference scratch/IB.sol --threshold .1 --sequences 50 --out scratch/C_IBD.json","gate_A_IA_still":"python scratch/kit/diff_test.py --source scratch/kit/IA.sol --threshold .01 --sequences 50 --out scratch/A_IA.json","regression":"python scratch/kit/harness.py real --regression --start START --n 50 --arm IB=scratch/IB.sol --arm IBD=scratch/kit/IBD.sol --ledger scratch/regression_seeds.jsonl --out scratch/reg_START.json (START 0, 50)","real":"python scratch/kit/harness.py real --start START --n 64 --arm IB=scratch/IB.sol --arm IBD=scratch/kit/IBD.sol --ledger scratch/evaluation_seeds.jsonl --out scratch/real_START.json (START 7696000, 7696064, 7696128, 7696192)"},"gates":{"A_IB":{"sequences":50,"swap_callbacks":100000,"max_abs_fee_difference_bps":6.638269694353438e-05,"threshold_bps":0.01,"passed":true,"exact_reference_callback_mismatches":null,"seed_start":310000,"seed_end":310049,"code_sha256":"301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686","policy_sha256":"c4362153a98b419832ae61cbd3329510f0a123e979a8788e247bf063128f74f4","port_sha256":"d5329ec002ba93b70ca0caf991f1bd3ed13d37b4cf60d990388084737693d7bc","what":"kit port with weights_IB.json vs IB.sol EVM fees"},"C_IBD":{"sequences":50,"swap_callbacks":100000,"max_abs_fee_difference_bps":6.638269694353438e-05,"threshold_bps":0.1,"passed":true,"exact_reference_callback_mismatches":0,"seed_start":310000,"seed_end":310049,"code_sha256":"dd801398ab0210c978bb3431b714fa005da4dd169adb4e9a88175f60d4578f3d","policy_sha256":"c4362153a98b419832ae61cbd3329510f0a123e979a8788e247bf063128f74f4","port_sha256":"d5329ec002ba93b70ca0caf991f1bd3ed13d37b4cf60d990388084737693d7bc","what":"IBD.sol vs kit port; exact_reference_callback_mismatches counts callbacks where IBD and IB.sol EVM fees differ at all"},"A_IA_with_new_port":{"sequences":50,"swap_callbacks":100000,"max_abs_fee_difference_bps":6.501554232485329e-05,"threshold_bps":0.01,"passed":true,"exact_reference_callback_mismatches":null,"seed_start":310000,"seed_end":310049,"code_sha256":"956566e95f46dc1ed5980fae5e550de7b9da10f9b3ad8eed62f265682cfcecf2","policy_sha256":"74d370d4b5210ae2bc782a374f8d0d762f57f875ba74bd670abf3aaaea616bee","port_sha256":"d5329ec002ba93b70ca0caf991f1bd3ed13d37b4cf60d990388084737693d7bc","what":"KB gate A for IA re-run with the extended port"},"IA_emit_unchanged":{"passed":true,"emitted_IA_sha256":"c20b170819e86adc7f59fd0d2a56b1a3463883ad29e471957538037d62da99a4","note":"emit_solidity() of KB weights is byte-identical before and after the change; equals KB gates.C.emitted.code_sha256"},"B":"not run: no search and no new replica claim in this item"},"regression":{"n":100,"seeds":[0,99],"identical":100,"max_abs_difference":0.0,"paired_IBD_minus_IB":{"n":100,"mean_diff":0.0,"se":0.0,"worst5":[[0,0.0],[1,0.0],[2,0.0],[3,0.0],[4,0.0]]},"retail_delta":0.0,"arb_delta":0.0,"means":{"IB":{"edge":542.8528476636853,"retail":573.0727500210379,"arb":-30.219902357352584},"IBD":{"edge":542.8528476636853,"retail":573.0727500210379,"arb":-30.219902357352584}},"valid":true,"engine":"amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8), each arm alone; configs via harness.real (sim.market_config + build_config)","note":"seeds 0..99: regression only, not confirmation"},"real":{"n":256,"seeds":[7696000,7696255],"identical":256,"max_abs_difference":0.0,"paired_IBD_minus_IB":{"n":256,"mean_diff":0.0,"se":0.0,"worst5":[[7696000,0.0],[7696001,0.0],[7696002,0.0],[7696003,0.0],[7696004,0.0]]},"retail_delta":0.0,"arb_delta":0.0,"means":{"IB":{"edge":532.0336250161047,"retail":563.1074558736788,"arb":-31.073830857573988},"IBD":{"edge":532.0336250161047,"retail":563.1074558736788,"arb":-31.073830857573988}},"valid":true,"engine":"amm_sim_rs.run_batch(X, VanillaStrategy, configs, 8), each arm alone; configs via harness.real (sim.market_config + build_config)","note":"fresh seeds 7696000..7696255, used once (4 chunks of 64)"},"gas":{"regression":{"IB":{"afterSwap_peak":237009,"afterInitialize_peak":243227,"afterSwap_calls":1089194,"OOG":0,"other_failures":0},"IBD":{"afterSwap_peak":131206,"afterInitialize_peak":176930,"afterSwap_calls":1089194,"OOG":0,"other_failures":0}},"real":{"IB":{"afterSwap_peak":237033,"afterInitialize_peak":243227,"afterSwap_calls":2765933,"OOG":0,"other_failures":0},"IBD":{"afterSwap_peak":131465,"afterInitialize_peak":176930,"afterSwap_calls":2765933,"OOG":0,"other_failures":0}},"limit_afterSwap":245000},"speed":{"general_port_IB_weights":{"n":512,"n_steps":10000,"procs":8,"runs":[{"seconds":1.4831485329195857,"markets_per_second":345.2115473506388},{"seconds":1.1389799502212554,"markets_per_second":449.52503325501044},{"seconds":1.2110808459110558,"markets_per_second":422.7628582589294}],"best_markets_per_second":449.52503325501044,"warm_compile_excluded":true,"pool_startup_included":true},"IB_own_port":{"n":512,"n_steps":10000,"procs":8,"runs":[{"seconds":1.3725908061023802,"markets_per_second":373.01721512610106},{"seconds":1.5577279150020331,"markets_per_second":328.6838446362},{"seconds":1.9330490599386394,"markets_per_second":264.8665316421159}],"best_markets_per_second":373.01721512610106,"warm_compile_excluded":true,"pool_startup_included":true},"edge_agreement":{"max_abs_edge_difference":0.061228731764003896,"mean_edge_general":527.5387796104765,"mean_edge_IB_port":527.5386248245479},"KB_reference":{"original_kit":{"n":512,"n_steps":10000,"requested_processes":8,"created_processes":8,"active_processes":8,"seconds":0.6688634080346674,"markets_per_second":765.4776653194682,"warm_compile_excluded":true,"pool_startup_included":true},"supplied_IA_port":{"seconds":0.8057476538233459,"markets_per_second":635.4346768129121,"procs":8,"n_steps":10000,"warm_compile_excluded":true},"generalized_port":{"n":512,"n_steps":10000,"requested_processes":8,"created_processes":8,"active_processes":8,"seconds":1.561448693042621,"markets_per_second":327.9006234923561,"warm_compile_excluded":true,"pool_startup_included":true},"search_budget":0,"search_sizing":"No search requested or performed; benchmark precedes implementation/evaluation."},"machine_cpus":12,"reading":"Same 512 markets (seeds 6010000..6010511, 10000 steps, 8 processes, warm njit, pool start included), 3 repeats each. On this machine the general port with IB weights was not slower than IB's own port (best 449.5 vs 373.0 markets/s; runs vary 265..450). KB's 328 vs 635 gap did not reproduce here, so there was no measured slowdown to remove and the port's hot path was left as in KB. Remaining per-callback overheads of the general port, by inspection: np.empty(19) raw array and np.empty(n) input array allocated every callback, and head loops sized at run time from W. edge_agreement: per-market edges of the two ports differ by at most 0.061 (mean 527.5388 vs 527.5386) from float-order/1e-6 multiplier rounding."},"valid":true,"tests":{"command":"python scratch/kit/test_kit.py","ran":19,"passed":19,"new":["test_ib_inputs_roundtrip_and_flag","test_ib_weights_emit_ibd_and_ia_unchanged","test_ib_inputs_differ_from_ia","test_ib_random_weights_diet_contract_differential"],"kb_tests_before_change":"15 ran, 15 passed"},"hashes":{"inputs_checked":{"HA":"2801efc8190e86318dd922d4a7179f63684d77a226047fc2f3c78232963eb690 (code 99e3a2ec... ok)","T":"6ac5e013b7b1fb4c5e7bdcdfec0aba28b16824e18ccf39500f258533879faffe (code ebd9de9b... ok)","RS2":"d845a4b94eab87f23956fd1939c0135d955df212d1f3037f2a761c178cef7a0e (port_source 9eac3553... ok)","IB":"afd5183e9ff3235334e041c00b0cd19079599a2c6464db95f8c1586712105557 (code 30194182... ok, port f63227c5... ok)","KB":"48cd6a10f39fc22a79c5f12398474bd65282803d59314819acd586f187015808 (all 9 decoded files ok)","IA":"df0ddfdf122c88641513dd179980fce475f42a912a184f812d213f27db7c14df"},"all_downloads_sha256_equal_url_id":true,"repository_commit":"6b6921f8d463314aa7c96234e1be25a25245f704","wheel_sha256":"aedb68280aca34c110968f00148387c95885207913fb2cf19a1ab4c5cfd6887a","setup_exit":0,"IB_sol_sha256":"301941829a44bb60977bb28181a5e4bfa6544f3696763f987054789b2611d686","IBD_sol_sha256":"dd801398ab0210c978bb3431b714fa005da4dd169adb4e9a88175f60d4578f3d"},"notes":["IBD.sol is harness.emit_solidity(weights_IB.json) with getName \"inputs_b_diet\"; IB fees on IAD's 8-word layout and arithmetic, no hand edits.","IB stores lastArbTs as 64 bits; IBD keeps 16 bits (as KB/IA did). Identical while timestamps < 65536 (engine runs 10000 steps). routerSpot gets 110 bits in IBD (IB: 112), identical while the stored spot < 2^110 wei-scaled.","Gate C reports 0 callbacks where IBD and IB EVM fees differ on 100,000 callbacks; real engine per-seed edges equal on all 100 regression and 256 fresh seeds.","IBD afterSwap peak 131,465 (fresh) vs IB 237,033; afterInitialize 176,930 vs 243,227; 0 OOG, 0 other failures in either.","No search, training, replica gain (gate B) or leaderboard claim was made in this item."]}