This version is using ML stochastic gradient descent with momentum to implement my code.

[1] 1557
[1] 0.02076170555632482830899
[1] 0.02075821629561338393932
[1] 0.02073464148495737097155
[1] 0.02072771554360661183658
[1] 0.02072753731602616777963

                            [,1]                      [,2]
[1,]  0.000000000000000000000000 0.02077540744432483654780
[2,]  0.007979727989493312634295 0.02078840197518659616005
[3,] -0.009714451465470119728707 0.02076170555632482830899
[4,] -0.012490009027033011079766 0.02075821629561338393932
[5,] -0.038510861166685117495945 0.02073464148495737097155
[6,] -0.057939764097625356953358 0.02072771554360661183658
[7,] -0.059674487573602164047770 0.02072753731602616777963
LS0tCnRpdGxlOiAiU3RvY2hhc3RpYyBHcmFkaWVudCBEZXNjZW50IHdpdGggTW9tZW50dW0iCm91dHB1dDogaHRtbF9ub3RlYm9vawpkYXRlOiA0LTEwLTE3Ci0tLQoKVGhpcyB2ZXJzaW9uIGlzIHVzaW5nIE1MIHN0b2NoYXN0aWMgZ3JhZGllbnQgZGVzY2VudCB3aXRoIG1vbWVudHVtIHRvIGltcGxlbWVudCBteSBjb2RlLiAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpkaXIgPC0gIi4uL2RhdGEvIgoKIyBJbXBvcnQgZGF0YSBmcm9tIHRoZSByYXcuUkRhdGEgd2hpY2ggaXMgZ2VubmVyYXRlZCBmcm9tIHRoZSBSZWZEQi5jYXJib24gdHh0IGZpbGUsIHNvIG5vIG5lZWQgdG8gcmVhZCBldmVyeSByZWZEQiBmaWxlcy4KcmVxdWlyZWRQYWNrYWdlcyA9IGMoImRhdGEudGFibGUiLCAic2VxaW5yIiwgInBseXIiKQpmb3IocCBpbiByZXF1aXJlZFBhY2thZ2VzKXsKICAgICAgICBpZighcmVxdWlyZShwLGNoYXJhY3Rlci5vbmx5ID0gVFJVRSkpIGluc3RhbGwucGFja2FnZXMocCkKICAgICAgICBsaWJyYXJ5KHAsY2hhcmFjdGVyLm9ubHkgPSBUUlVFKQp9Cgpsb2FkKCIuLi9kYXRhL1JlZkRCX3ByaW9yLlJEYXRhIikKbG9hZCgiLi4vZGF0YS9yYXcuUkRhdGEiKQpjYXJib25EYXQgPC0gbGFwcGx5KGRhdCwgZnVuY3Rpb24oaSl7CiAgICAgICAgdGFibGUgPC0gZGF0YS50YWJsZShJRD1pWywxXSwgQUE9aVssMl0sIFNTPWlbLDNdLCBDQT1hcy5udW1lcmljKGlbLDRdKSwgQ0I9YXMubnVtZXJpYyhpWyw1XSkpCiAgICAgICAgcmV0dXJuKHRhYmxlKQp9KQoKY2FyYm9uRGF0X25hcm0gPC0gbGFwcGx5KGNhcmJvbkRhdCwgZnVuY3Rpb24oaSl7CiAgICAgICAgdGFibGUgPC0gbmEub21pdChpKQogICAgICAgIHJldHVybih0YWJsZSkKfSkKCmNhcmJvbkRhdF9HVSA8LSBsYXBwbHkoY2FyYm9uRGF0LCBmdW5jdGlvbihpKXsKICAgICAgICB0YWJsZSA8LSBpW3doaWNoKGkkQUE9PSJHIiAmIGkkU1MhPSJVIiksXQogICAgICAgIHRhYmxlJENCIDwtIE5VTEwKICAgICAgICB0YWJsZSA8LSBuYS5vbWl0KHRhYmxlKQogICAgICAgIHJldHVybih0YWJsZSkKfSkKCmNhcmJvbkRhdF9ybUdVIDwtIGxhcHBseShjYXJib25EYXRfbmFybSwgZnVuY3Rpb24oaSl7CiAgICAgICAgdGFibGUgPC0gaVt3aGljaChpJEFBIT0iRyIgJiBpJFNTIT0iVSIpLF0KICAgICAgICByZXR1cm4odGFibGUpCn0pCgpBQV9TU19sYWJlbCA8LSBwcmlvcltbOTg3XV1bLDE6Ml0KQUFfU1NfbGFiZWwgPC0gcmJpbmQoQUFfU1NfbGFiZWwsIGRhdGEuZnJhbWUoQUE9IkciLCBTUz0iQiIpLCBkYXRhLmZyYW1lKEFBPSJHIiwgU1M9IkMiKSwgZGF0YS5mcmFtZShBQT0iRyIsIFNTPSJIIikpCkFBX1NTX2xhYmVsX2NvdW50cyA8LSBjYmluZChBQV9TU19sYWJlbCwgY291bnRzID0gcmVwKDAsIDYwKSkKCiMgcHJpb3JfZnJlcSA8LSBsYXBwbHkoY2FyYm9uRGF0LCBmdW5jdGlvbihpKXsKIyAgICAgICAgIGFjdHVhbENvdW50cyA8LSBhcy5kYXRhLmZyYW1lKHRhYmxlKGlbLDI6M10pKQojICAgICAgICAgYWN0dWFsRnJlcXMgPC0gQUFfU1NfbGFiZWxfY291bnRzCiMgICAgICAgICBmb3IoaiBpbiAxOm5yb3coQUFfU1NfbGFiZWxfY291bnRzKSl7CiMgICAgICAgICAgICAgICAgIGFhIDwtIHVubGlzdChBQV9TU19sYWJlbF9jb3VudHNbaixdWyJBQSJdKQojICAgICAgICAgICAgICAgICBzcyA8LSB1bmxpc3QoQUFfU1NfbGFiZWxfY291bnRzW2osXVsiU1MiXSkKIyAgICAgICAgICAgICAgICAgaWYgKGFhICVpbiUgYWN0dWFsQ291bnRzJEFBICYgc3MgJWluJSBhY3R1YWxDb3VudHMkU1MpewojICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbEZyZXFzW2osM10gPC0gYWN0dWFsQ291bnRzWyhhY3R1YWxDb3VudHMkQUEgJWluJSBhYSAmIGFjdHVhbENvdW50cyRTUyVpbiVzcyksIDNdCiMgICAgICAgICAgICAgICAgIH0KIyAgICAgICAgIH0KIyAgICAgICAgIGFjdHVhbEZyZXFzWywzXSA8LSBhY3R1YWxGcmVxc1ssM10vc3VtKGFjdHVhbEZyZXFzWywzXSkKIyAgICAgICAgIHJldHVybihhY3R1YWxGcmVxcykKIyB9KQoKIyBzYXZlKHByaW9yX2ZyZXEsIGZpbGUgPSAiLi9kYXRhL3ByaW9yX2ZyZXEuUkRhdGEiKQpsb2FkKCIuLi9kYXRhL3ByaW9yX2ZyZXEuUkRhdGEiKQpTZWNvbmRhcnlTdHJ1Y3R1cmVzLnYgID0gYygiQiIsICJDIiwgIkgiKQpSZXNvbmFuY2VzLnYgPSBjKCJDQSIsICJDQiIpCm9wdGlvbnMoZGlnaXRzPTIyKQoKbGVuZ3RoKGNhcmJvbkRhdF9HVSkKCgoKQWFDb2Rlc1NpbmdsZS52ID0gYygiQSIsICJCIiwgIkMiLCAiRCIsICJFIiwgIkYiLCAiSCIsICJJIiwgIksiLCAiTCIsICJNIiwgIk4iLCAiUCIsICJRIiwgIlIiLCAiUyIsICJUIiwgIlYiLCAiVyIsICJZIikKQWFDb2Rlc1NpbmdsZTE5LnYgPSBjKCJBIiwgIkMiLCAiRCIsICJFIiwgIkYiLCAiSCIsICJJIiwgIksiLCAiTCIsICJNIiwgIk4iLCAiUCIsICJRIiwgIlIiLCAiUyIsICJUIiwgIlYiLCAiVyIsICJZIikKQWFDb2RlczNMZXR0ZXJBbGxDYXAudiA9IGMoIkFMQSIsICJDWVMiLCAiQVNQIiwgIkdMVSIsICJQSEUiLCAiSElTIiwgIklMRSIsICJMWVMiLCAiTEVVIiwgIk1FVCIsICJBU04iLCAiUFJPIiwgIkdMTiIsICJBUkciLCAiU0VSIiwgIlRIUiIsICJWQUwiLCAiVFJQIiwiVFlSIikKQWFDb2RlczNMZXR0ZXIxc3RDYXAudiA9IGMoIkFsYSIsICJDeXMiLCAiQXNwIiwgIkdsdSIsICJQaGUiLCAiSGlzIiwgIklsZSIsICJMeXMiLCAiTGV1IiwgIk1ldCIsICJBc24iLCAiUHJvIiwgIkdsbiIsICJBcmciLCAiU2VyIiwgIlRociIsICJWYWwiLCAiVHJwIiwiVHlyIikKIyBSZWFkaW5nIGluIGFsbCB0aGUgc3RhdGlzaXRjcwpSZWZEQi5TdGF0Q0EgPC0gcmVhZC5jc3YocGFzdGUoZGlyLCAiUmVmREIuY2FTdGF0LmNzdiIsIHNlcD0iIikpCgoKCiMgRmluZCBhbGwgdGhlIG1lYW4gYW5kIHNkOgojIFJlYWRpbmcgaW4gYWxsIHRoZSBzdGF0aXNpdGNzClJlZkRCLlN0YXRDQSA8LSByZWFkLmNzdihwYXN0ZShkaXIsICJSZWZEQi5jYVN0YXQuY3N2Iiwgc2VwPSIiKSkKUmVmREIuU3RhdENCIDwtIHJlYWQuY3N2KHBhc3RlKGRpciwgIlJlZkRCLmNiU3RhdC5jc3YiLCBzZXA9IiIpKQpSZWZEQi5TdGF0Q0IgPC0gUmVmREIuU3RhdENCW3doaWNoKFJlZkRCLlN0YXRDQiRSZXNpZHVlIT0iR2x5IiksXSAjIFJlbW92ZSB0aGUgZ2x5Y2luZQpDYXJib25Db3YudCA8LSByZWFkLmNzdihwYXN0ZShkaXIsICJDYXJib25Db3ZUYWJsZV9CQy5jc3YiLCBzZXA9IiIpKQoKCiMgUmVhZGluZyBpbiB0aGUgcG9wdWxhdGlvbiBzdGF0aXN0aWNzClBvcFN0YXRzIDwtIHJlYWQudGFibGUocGFzdGUoZGlyLCAiYWFQb3BTdGF0LmNzdiIsIHNlcD0iIikpCgojIEdlbmVyYXRlIGF2ZXJhZ2UgY292YXJpYW5jZQpBdmdDb3YudCA8LSByZWFkLmNzdihwYXN0ZShkaXIsICJhdmdDb3ZfQkMuY3N2Iiwgc2VwPSIiKSkgIyByb3dOYW1lIGlzIGZyb20gdGhlIEFhQ29kZXNTaW5nbGUudgojIEdlbmVyYXRlIGNvdmFyaWFuY2UgYmFzZWQgb24gc2Vjb25kYXJ5IHN0cnVjdHVyZQpDYXJib25Db3YudCA8LSBDYXJib25Db3YudFstZ3JlcCgiLUEiLCBDYXJib25Db3YudCQiQUEuU1MiKSxdCgojIEZpbmQgYWxsIHRoZSBtZWFuIGFuZCBzZDoKQ0FTZFRhYmxlID0gZGF0YS5mcmFtZShSZWZEQi5TdGF0Q0EkUmVzaWR1ZSwgUmVmREIuU3RhdENBJENvaWwuc2QsIFJlZkRCLlN0YXRDQSRIZWxpeC5zZCwgUmVmREIuU3RhdENBJEJldGEuc2QsIFJlZkRCLlN0YXRDQSRBdmcuc2QpCmNvbG5hbWVzKENBU2RUYWJsZSkgPSBjKCJSZXNpZHVlIiwgIkMiLCAiSCIsICJCIiwgIkEiKQoKQ0JTZFRhYmxlID0gZGF0YS5mcmFtZShSZWZEQi5TdGF0Q0IkUmVzaWR1ZSwgUmVmREIuU3RhdENCJENvaWwuc2QsIFJlZkRCLlN0YXRDQiRIZWxpeC5zZCwgUmVmREIuU3RhdENCJEJldGEuc2QsIFJlZkRCLlN0YXRDQiRBdmcuc2QpCmNvbG5hbWVzKENCU2RUYWJsZSkgPSBjKCJSZXNpZHVlIiwgIkMiLCAiSCIsICJCIiwgIkEiKQoKQ0FNdVRhYmxlID0gZGF0YS5mcmFtZShSZWZEQi5TdGF0Q0EkUmVzaWR1ZSwgUmVmREIuU3RhdENBJENvaWwubXUsIFJlZkRCLlN0YXRDQSRIZWxpeC5tdSwgUmVmREIuU3RhdENBJEJldGEubXUsIFJlZkRCLlN0YXRDQSRBdmcubXUpCmNvbG5hbWVzKENBTXVUYWJsZSkgPSBjKCJSZXNpZHVlIiwgIkMiLCAiSCIsICJCIiwgIkEiKQoKQ0JNdVRhYmxlID0gZGF0YS5mcmFtZShSZWZEQi5TdGF0Q0IkUmVzaWR1ZSwgUmVmREIuU3RhdENCJENvaWwubXUsIFJlZkRCLlN0YXRDQiRIZWxpeC5tdSwgUmVmREIuU3RhdENCJEJldGEubXUsIFJlZkRCLlN0YXRDQiRBdmcubXUpCmNvbG5hbWVzKENCTXVUYWJsZSkgPSBjKCJSZXNpZHVlIiwgIkMiLCAiSCIsICJCIiwgIkEiKQoKY292TWF0cml4LkQuZiA8LSBmdW5jdGlvbiggbmFtZSApewogICAgICAgIAogICAgICAgIEFBLm5hbWUgPC0gdW5saXN0KHN0cnNwbGl0KG5hbWUsICItIikpWzFdCiAgICAgICAgU1MubmFtZSA8LSB1bmxpc3Qoc3Ryc3BsaXQobmFtZSwgIi0iKSlbMl0KICAgICAgICAKICAgICAgICBzZC5jYSA8LSBDQVNkVGFibGVbQ0FTZFRhYmxlJFJlc2lkdWU9PUFBLm5hbWUsXVtTUy5uYW1lXQogICAgICAgIHNkLmNiIDwtIENCU2RUYWJsZVtDQlNkVGFibGUkUmVzaWR1ZT09QUEubmFtZSxdW1NTLm5hbWVdCiAgICAgICAgc2QuY2EuZG91YmxlIDwtIGFzLmRvdWJsZShzZC5jYSkKICAgICAgICBzZC5jYi5kb3VibGUgPC0gYXMuZG91YmxlKHNkLmNiKQogICAgICAgIAogICAgICAgIHYgPC0gQ2FyYm9uQ292LnRbQ2FyYm9uQ292LnRbLDFdPT1uYW1lLF1bLDJdCiAgICAgICAgY292TWF0cml4IDwtIG1hdHJpeChjKHNkLmNhLmRvdWJsZV4yLCB2LCB2LCBzZC5jYi5kb3VibGVeMiksIDIgLCAyLCBieXJvdyA9IFQpCiAgICAgICAgcmV0dXJuKGNvdk1hdHJpeCkKfQoKI3Rlc3QuY292LkIgPC0gY292TWF0cml4LkIuZihuYW1lID0gIkItQyIpCiN0ZXN0LmNvdi5CCgppbnZDb3ZNYXRMaXN0LmwuRCA9IGxpc3QoKQpmb3IoYWFzcyBpbiBDYXJib25Db3YudCRBQS5TUyApewogICAgICAgIENvdk1hdHJpeCA9IGNvdk1hdHJpeC5ELmYoYWFzcykKICAgICAgICBpbnZDb3ZNYXRyaXggPSBzb2x2ZShDb3ZNYXRyaXgpCiAgICAgICAgaW52Q292TWF0TGlzdC5sLkRbW2Fhc3NdXSA9IGludkNvdk1hdHJpeAp9CiMgR2x5Y2luZSBQcm9iYWJpbGl0eSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZ2x5UHJvYi5mID0gZnVuY3Rpb24ocGFyYSl7CiAgICAgICAgcHJvYiA9IDIqcG5vcm0oLWFicyhwYXJhKSkKICAgICAgICByZXR1cm4ocHJvYikKfQoKY2FCTXUgPC0gQ0FNdVRhYmxlW0NBTXVUYWJsZSRSZXNpZHVlPT0iRyIsICJCIl0KY2FDTXUgPC0gQ0FNdVRhYmxlW0NBTXVUYWJsZSRSZXNpZHVlPT0iRyIsICJDIl0KY2FITXUgPC0gQ0FNdVRhYmxlW0NBTXVUYWJsZSRSZXNpZHVlPT0iRyIsICJIIl0KCmNhQlNkIDwtIENBU2RUYWJsZVtDQVNkVGFibGUkUmVzaWR1ZT09IkciLCAiQiJdCmNhQ1NkIDwtIENBU2RUYWJsZVtDQVNkVGFibGUkUmVzaWR1ZT09IkciLCAiQyJdCmNhSFNkIDwtIENBU2RUYWJsZVtDQVNkVGFibGUkUmVzaWR1ZT09IkciLCAiSCJdCgojIEFsbCB0aGUgcmVzdCAxOSBBQXMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkNoaVN0ci5mIDwtIGZ1bmN0aW9uKGRhdGFDYUNiLnYsIHNlY29uZGFyeVN0cnVjdHVyZSwgaW52Q292TWF0TGlzdCkgewogICAgICAgIG5hbWVzIDwtIGMoKQogICAgICAgIGNoaVN0ci52IDwtIGMoKQogICAgICAgIHNzIDwtIHNlY29uZGFyeVN0cnVjdHVyZQogICAgICAgIGRhdGFDYUNiLm0gPC0gYXMubWF0cml4KGRhdGFDYUNiLnYpCiAgICAgICAgCiAgICAgICAgZm9yIChhYSBpbiBBYUNvZGVzU2luZ2xlLnYpIHsKICAgICAgICAgICAgICAgIG5hbWUgPC0gcGFzdGUoYWEsIHNlY29uZGFyeVN0cnVjdHVyZSwgc2VwID0gIi0iKQogICAgICAgICAgICAgICAgbmFtZXMgPC0gYyhuYW1lcywgbmFtZSkKICAgICAgICAgICAgICAgIGNhTXUgPC0gQ0FNdVRhYmxlW0NBTXVUYWJsZSRSZXNpZHVlPT1hYSwgc3NdCiAgICAgICAgICAgICAgICBjYk11IDwtIENCTXVUYWJsZVtDQk11VGFibGUkUmVzaWR1ZT09YWEsIHNzXQogICAgICAgICAgICAgICAgbWVhbi5tIDwtIGFzLm1hdHJpeChjKGNhTXUsIGNiTXUpKQogICAgICAgICAgICAgICAgaW52Q292IDwtIGludkNvdk1hdExpc3RbW25hbWVdXQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBkYXRhQ2FDYi5tIDwtIGFzLm1hdHJpeChkYXRhQ2FDYi52KQogICAgICAgICAgICAgICAgY2hpU3RyIDwtIHQoZGF0YUNhQ2IubSAtIG1lYW4ubSkgJSolIGludkNvdiAlKiUgKGRhdGFDYUNiLm0gLSBtZWFuLm0pCiAgICAgICAgICAgICAgICBjaGlTdHIudiA8LSBjKGNoaVN0ci52LCBjaGlTdHIpCiAgICAgICAgfQogICAgICAgIAogICAgICAgIG5hbWVzKGNoaVN0ci52KSA8LSBuYW1lcwogICAgICAgIHJldHVybihjaGlTdHIudikKfQoKQWFQcm9iLmYgPSBmdW5jdGlvbihjaGlTdHIpewogICAgICAgIHByb2IgPSBkY2hpc3EoY2hpU3RyLCBkZj0yKQogICAgICAgIHJldHVybihwcm9iKQp9CmBgYAoKYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmsgPC0gMQp0bXBHbHlEYXQgPC0gYXMuZGF0YS5mcmFtZShjYXJib25EYXRfR1VbW2tdXSkKdG1wRGF0IDwtIGFzLmRhdGEuZnJhbWUoY2FyYm9uRGF0X3JtR1VbW2tdXSkKaWYobnJvdyh0bXBHbHlEYXQpID4gMCAmIG5yb3codG1wRGF0KSA+IDApewogICAgICAgIGNhIDwtIGFzLm1hdHJpeCh0bXBHbHlEYXRbLDRdKQogICAgICAgIHNlcSA8LSB0bXBEYXRbLDJdCiAgICAgICAgc3MgPC0gdG1wRGF0WywzXQogICAgICAgIGNhY2IgPC0gYXMubWF0cml4KHRtcERhdFssNDo1XSkKICAgICAgICAKICAgICAgICB0bXBQcmlvciA8LSBhcHBseShBQV9TU19sYWJlbCwgMSwgZnVuY3Rpb24oeCl7CiAgICAgICAgICAgICAgICBhYSA8LSB4WzFdCiAgICAgICAgICAgICAgICBzcyA8LSB4WzJdCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHBwIDwtIHByaW9yW1trXV0kRnJlcVt3aGljaChwcmlvcltba11dJEFBPT1hYSAmIHByaW9yW1trXV0kU1M9PXNzKV0KICAgICAgICAgICAgICAgIHNzUHJpb3IgPC0gaWZlbHNlKGxlbmd0aChwcCk9PTAsIDAsIHBwKQogICAgICAgICAgICAgICAgcmV0dXJuKHNzUHJpb3IpCiAgICAgICAgICAgICAgICAKICAgICAgICB9KQogICAgICAgIHRtcFByaW9yIDwtIGNiaW5kKEFBX1NTX2xhYmVsLCB0bXBQcmlvcikKICAgICAgICAgICAgICAgICMgdG1wUHJpb3IgPC0gcmVwKDEsIGxlbj02MCkKICAgICAgICAgICAgICAgICMgdG1wUHJpb3IgPC0gY29udHJvbAogICAgICAgICAgICAgICAgCiAgICAgICAgZGF0X2NhID0gY2E7IGVycm9yID0gMDsgZGF0X2NhY2I9Y2FjYjsgaW52Q292TWF0TGlzdCA9IGludkNvdk1hdExpc3QubC5EOyAgc2VxdWVuY2U9c2VxOyBzc19wcmlvcj10bXBQcmlvcgogICAgICAgIHNlcXVlbmNlID0gYzJzKHNlcXVlbmNlKQogICAgICAgIGFhRnJlcSA9IHNzX3ByaW9yCiAgICAgICAgc3NfcHJpb3IkdG1wUHJpb3Jbc3NfcHJpb3IkdG1wUHJpb3IhPTBdIDwtIDEKICAgICAgICBzc19wcmlvciA8LSBzc19wcmlvciR0bXBQcmlvcgp9CmBgYAoKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpTdW1BYnNEaWZmLmYgPC0gZnVuY3Rpb24oc3RlcCwgZGF0X2NhY2IsIGRhdF9jYSwgYWFGcmVxLCBpbnZDb3ZNYXRMaXN0LCBzc19wcmlvcikgewogICAgICAgIHN1bUFhUHJvYi52IDwtIHJlcCgwLCA1NykKICAgICAgICB0ZXN0RGF0YUxlbiA8LSBucm93KGRhdF9jYWNiKQogICAgICAgIAogICAgICAgIAogICAgICAgIGZvciAoaSBpbiAxOnRlc3REYXRhTGVuKSB7CiAgICAgICAgICAgICAgICBhYVByb2IudiA8LSBjKCkKICAgICAgICAgICAgICAgIENhQ2JDUy52IDwtIGMoZGF0X2NhY2JbaSwgMV0gKyBzdGVwLCBkYXRfY2FjYltpLCAyXSArIHN0ZXApCiAgICAgICAgICAgICAgICBDYUNiQ1Mudi5mbGlwIDwtIHJldihDYUNiQ1MudikKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIyBhID0gQ2hpU3RyLmYoQ2FDYkNTLnYsIHNlY29uZGFyeVN0cnVjdHVyZSA9ICJIIiwgaW52Q292TWF0TGlzdCkKICAgICAgICAgICAgICAgICMgYiA9IENoaVN0ci5mKENhQ2JDUy52LmZsaXAsIHNlY29uZGFyeVN0cnVjdHVyZSA9ICJIIiwgaW52Q292TWF0TGlzdCkKICAgICAgICAgICAgICAgICMgCiAgICAgICAgICAgICAgICAjIGMgPSByYmluZChhLCBiKQogICAgICAgICAgICAgICAgIyBkIDwtIGFwcGx5KGMsMixtaW4pCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGNoaVN0ckgudiA8LSBhcHBseShyYmluZChDaGlTdHIuZihDYUNiQ1Mudiwgc2Vjb25kYXJ5U3RydWN0dXJlID0gIkgiLCBpbnZDb3ZNYXRMaXN0KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hpU3RyLmYoQ2FDYkNTLnYuZmxpcCwgc2Vjb25kYXJ5U3RydWN0dXJlID0gIkgiLCBpbnZDb3ZNYXRMaXN0KSksIDIsIG1pbikKICAgICAgICAgICAgICAgIGNoaVN0ckIudiA8LSBhcHBseShyYmluZChDaGlTdHIuZihDYUNiQ1Mudiwgc2Vjb25kYXJ5U3RydWN0dXJlID0gIkIiLCBpbnZDb3ZNYXRMaXN0KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hpU3RyLmYoQ2FDYkNTLnYuZmxpcCwgc2Vjb25kYXJ5U3RydWN0dXJlID0gIkIiLCBpbnZDb3ZNYXRMaXN0KSksIDIsIG1pbikKICAgICAgICAgICAgICAgIGNoaVN0ckMudiA8LSBhcHBseShyYmluZChDaGlTdHIuZihDYUNiQ1Mudiwgc2Vjb25kYXJ5U3RydWN0dXJlID0gIkMiLCBpbnZDb3ZNYXRMaXN0KSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hpU3RyLmYoQ2FDYkNTLnYuZmxpcCwgc2Vjb25kYXJ5U3RydWN0dXJlID0gIkMiLCBpbnZDb3ZNYXRMaXN0KSksIDIsIG1pbikKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY2hpU3RyLnYgPC0gYyhjaGlTdHJCLnYsIGNoaVN0ckMudiwgY2hpU3RySC52KSAgIyAxOSBBQSBTUyBPcmRlcjogQiwgQywgSAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBQcm9iIDwtIEFhUHJvYi5mKGNoaVN0ci52KQogICAgICAgICAgICAgICAgUHJvYlszXSA8LSBQcm9iWzJdICsgUHJvYlszXQogICAgICAgICAgICAgICAgUHJvYlsyM10gPC0gUHJvYlsyMl0gKyBQcm9iWzIzXQogICAgICAgICAgICAgICAgUHJvYls0M10gPC0gUHJvYls0Ml0gKyBQcm9iWzQzXQogICAgICAgICAgICAgICAgUHJvYiA8LSBQcm9iWy1jKDIsMjIsNDIpXQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBQb3N0UHJvYiA8LSBQcm9iKnNzX3ByaW9yWzE6NTddCiAgICAgICAgICAgICAgICBzdW1BYVByb2IudiA8LSBzdW1BYVByb2IudiArIFBvc3RQcm9iCiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRlc3REYXRhTGVuX2NhIDwtIG5yb3coZGF0X2NhKQogICAgICAgIGdseVByb2IgPC0gcmVwKDAsIDMpCiAgICAgICAgY2FDcyA8LSBkYXRfY2EgKyBzdGVwCiAgICAgICAgZm9yIChpIGluIDE6dGVzdERhdGFMZW5fY2EpIHsKICAgICAgICAgICAgICAgIHogPC0gYyggKGNhQ3NbaV0gLSBjYUJNdSkvY2FCU2QsIChjYUNzW2ldIC0gY2FITXUpL2NhSFNkLCAoY2FDc1tpXSAtIGNhQ011KS9jYUNTZCApICMgT3JkZXI6IEIsIEMsIEgKICAgICAgICAgICAgICAgICNwcmludCh6KQogICAgICAgICAgICAgICAgZ2x5UHJvYiA8LSBnbHlQcm9iICsgZ2x5UHJvYi5mKHopCiAgICAgICAgfQogICAgICAgIAogICAgICAgIHN1bUFhUHJvYi52IDwtIGMoc3VtQWFQcm9iLnYsIGdseVByb2Iqc3NfcHJpb3JbNTg6NjBdKQogICAgICAgIHN1bUFhUHJvYi52IDwtIHN1bUFhUHJvYi52L3N1bShzdW1BYVByb2IudikKICAgICAgICAKICAgICAgICAjIyMjIyBDb250cm9sIGFkZGVkIGhlcmUgMywgMTUKICAgICAgICBMMm5vcm0gPC0gc3VtKChzdW1BYVByb2Iudipwcm9iQ29udHJvbCAtIGFhRnJlcSR0bXBQcmlvcipmcmVxQ29udHJvbCleMikKICAgICAgICBncmFkIDwtIDIqKHN1bShzdW1BYVByb2Iudipwcm9iQ29udHJvbCAtIGFhRnJlcSR0bXBQcmlvcipmcmVxQ29udHJvbCkpCiAgICAgICAgCiAgICAgICAgcmV0dXJuKGMoTDJub3JtLCBncmFkKSkKfQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBHcmFkaWVudCBEZXNjZW50IEZ1bmN0aW9uICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmNvbnRyb2wgPC0gcmVwKDEsIGxlbj02MCkKZnJlcUNvbnRyb2wgPC0gcHJvYkNvbnRyb2wgPC0gY29udHJvbApHcmFkRGVjLmYgPSBmdW5jdGlvbihzdGFydF9wb2ludD0wLCBkYXRfY2EsIGRhdF9jYWNiLCBpbnZDb3ZNYXRMaXN0LCBzZXF1ZW5jZSwgc3NfcHJpb3IsIGFhRnJlcSwgZXBpID0gMC4wMDAwMDIpewogICAgICAgIAogICAgICAgICMgZ3JhZGllbnQgZGVzY2VudCBpbXBsZW1lbnRhdGlvbgogICAgICAgIHh0cmFjZSA8LSB4IDwtIHN0YXJ0X3BvaW50ICMgc3RvcmUgeCAtdmFsdWVzIGZvciBncmFwaGluZyBwdXJwb3NlcyAoaW5pdGlhbCkKICAgICAgICBmIDwtIFN1bUFic0RpZmYuZih4LCBkYXRfY2FjYiwgZGF0X2NhLCBhYUZyZXEsIGludkNvdk1hdExpc3QsIHNzX3ByaW9yKQogICAgICAgIGdyYWQgPC0gZ3JhZHRyYWNlPC0gZlsyXQogICAgICAgIHJlc2lkdWFsIDwtIHJlc2lkdWFsZnRyYWNlIDwtIGZbMV0KICAgICAgICBsZWFybi5yYXRlID0gMTAwMDAwMDAwMDAwMDAwCiAgICAgICAgCiAgICAgICAgeCA8LSB4IC0gZ3JhZCpsZWFybi5yYXRlCiAgICAgICAgZiA8LSBTdW1BYnNEaWZmLmYoeCwgZGF0X2NhY2IsIGRhdF9jYSwgYWFGcmVxLCBpbnZDb3ZNYXRMaXN0LCBzc19wcmlvcikKICAgICAgICB4dHJhY2UgPC0gYyh4dHJhY2UsIHgpCiAgICAgICAgZ3JhZCA8LSBmWzJdCiAgICAgICAgcmVzaWR1YWwgPC1mWzFdCiAgICAgICAgZ3JhZHRyYWNlIDwtIGMoZ3JhZHRyYWNlLCBncmFkKQogICAgICAgIHJlc2lkdWFsZnRyYWNlIDwtIGMocmVzaWR1YWxmdHJhY2UsIHJlc2lkdWFsKQogICAgICAgIAogICAgICAgIHdoaWxlIChhYnMocmVzaWR1YWwtcmVzaWR1YWxmdHJhY2VbbGVuZ3RoKHJlc2lkdWFsZnRyYWNlKS0xXSk+ZXBpKSB7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmKCh4dHJhY2VbbGVuZ3RoKHh0cmFjZSktMV08eCAmIHJlc2lkdWFsZnRyYWNlW2xlbmd0aChyZXNpZHVhbGZ0cmFjZSktMV0+cmVzaWR1YWwpIHwgCiAgICAgICAgICAgICAgICAgICAoeHRyYWNlW2xlbmd0aCh4dHJhY2UpLTFdPnggJiByZXNpZHVhbGZ0cmFjZVtsZW5ndGgocmVzaWR1YWxmdHJhY2UpLTFdPHJlc2lkdWFsKSApewogICAgICAgICAgICAgICAgICAgICAgICBzID0gMQogICAgICAgICAgICAgICAgfWVsc2UgaWYoKHh0cmFjZVtsZW5ndGgoeHRyYWNlKS0xXTx4ICYgcmVzaWR1YWxmdHJhY2VbbGVuZ3RoKHJlc2lkdWFsZnRyYWNlKS0xXTxyZXNpZHVhbCkgfCAKICAgICAgICAgICAgICAgICAgICh4dHJhY2VbbGVuZ3RoKHh0cmFjZSktMV0+eCAmIHJlc2lkdWFsZnRyYWNlW2xlbmd0aChyZXNpZHVhbGZ0cmFjZSktMV0+cmVzaWR1YWwpICl7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHggPC0geCArIHMqYWJzKGdyYWQpKmxlYXJuLnJhdGUKICAgICAgICAgICAgICAgIGYgPC0gU3VtQWJzRGlmZi5mKHgsIGRhdF9jYWNiLCBkYXRfY2EsIGFhRnJlcSwgaW52Q292TWF0TGlzdCwgc3NfcHJpb3IpCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHh0cmFjZSA8LSBjKHh0cmFjZSwgeCkKICAgICAgICAgICAgICAgIGdyYWQgPC0gZlsyXQogICAgICAgICAgICAgICAgcmVzaWR1YWwgPC1mWzFdCiAgICAgICAgICAgICAgICBncmFkdHJhY2UgPC0gYyhncmFkdHJhY2UsIGdyYWQpCiAgICAgICAgICAgICAgICByZXNpZHVhbGZ0cmFjZSA8LSBjKHJlc2lkdWFsZnRyYWNlLCByZXNpZHVhbCkKICAgICAgICAgICAgICAgIHByaW50KHJlc2lkdWFsKQogICAgICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIHBsb3QgKCB4dHJhY2UgLCByZXNpZHVhbGZ0cmFjZSAsIHR5cGU9ImIiLGNvbD0iYmx1ZSIpCiAgICAgICAgcG9pbnRzICh4dHJhY2VbbGVuZ3RoKHh0cmFjZSldLHJlc2lkdWFsZnRyYWNlW2xlbmd0aChyZXNpZHVhbGZ0cmFjZSldICxjb2w9InJlZCIpCiAgICAgICAgcmV0dXJuKGxpc3QoeHRyYWNlLCByZXNpZHVhbGZ0cmFjZSkpCn0KCnNnZCA8LSBHcmFkRGVjLmYoc3RhcnRfcG9pbnQ9MCwgZGF0X2NhLCBkYXRfY2FjYiwgaW52Q292TWF0TGlzdCwgc2VxdWVuY2UsIHNzX3ByaW9yLCBhYUZyZXEsIGVwaSA9IDAuMDAwMDAyKQpgYGAKCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpjYmluZChzZ2RbWzFdXSwgc2dkW1syXV0pCmBgYAo=