{"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":8,"column":5}},"2":{"start":{"line":4,"column":8},"end":{"line":6,"column":110}},"3":{"start":{"line":5,"column":69},"end":{"line":5,"column":85}},"4":{"start":{"line":6,"column":30},"end":{"line":6,"column":107}},"5":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"6":{"start":{"line":6,"column":95},"end":{"line":6,"column":107}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":35}},"8":{"start":{"line":9,"column":4},"end":{"line":15,"column":6}},"9":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"10":{"start":{"line":11,"column":12},"end":{"line":11,"column":102}},"11":{"start":{"line":12,"column":8},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":24},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":93}},"14":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"15":{"start":{"line":18,"column":15},"end":{"line":18,"column":40}},"16":{"start":{"line":19,"column":13},"end":{"line":19,"column":36}},"17":{"start":{"line":20,"column":14},"end":{"line":20,"column":32}},"18":{"start":{"line":21,"column":18},"end":{"line":21,"column":46}},"19":{"start":{"line":22,"column":12},"end":{"line":22,"column":34}},"20":{"start":{"line":23,"column":16},"end":{"line":23,"column":36}},"21":{"start":{"line":24,"column":16},"end":{"line":211,"column":16}},"22":{"start":{"line":25,"column":4},"end":{"line":25,"column":32}},"23":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"24":{"start":{"line":27,"column":31},"end":{"line":27,"column":40}},"25":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"26":{"start":{"line":29,"column":8},"end":{"line":29,"column":26}},"27":{"start":{"line":30,"column":8},"end":{"line":30,"column":25}},"28":{"start":{"line":31,"column":8},"end":{"line":31,"column":24}},"29":{"start":{"line":32,"column":8},"end":{"line":37,"column":9}},"30":{"start":{"line":32,"column":21},"end":{"line":32,"column":22}},"31":{"start":{"line":33,"column":12},"end":{"line":33,"column":32}},"32":{"start":{"line":34,"column":12},"end":{"line":36,"column":13}},"33":{"start":{"line":34,"column":25},"end":{"line":34,"column":26}},"34":{"start":{"line":35,"column":16},"end":{"line":35,"column":63}},"35":{"start":{"line":38,"column":8},"end":{"line":38,"column":49}},"36":{"start":{"line":39,"column":8},"end":{"line":39,"column":21}},"37":{"start":{"line":41,"column":4},"end":{"line":43,"column":6}},"38":{"start":{"line":42,"column":8},"end":{"line":42,"column":41}},"39":{"start":{"line":44,"column":4},"end":{"line":49,"column":6}},"40":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"41":{"start":{"line":46,"column":12},"end":{"line":46,"column":73}},"42":{"start":{"line":48,"column":8},"end":{"line":48,"column":27}},"43":{"start":{"line":50,"column":4},"end":{"line":60,"column":6}},"44":{"start":{"line":51,"column":8},"end":{"line":59,"column":53}},"45":{"start":{"line":61,"column":4},"end":{"line":64,"column":6}},"46":{"start":{"line":62,"column":8},"end":{"line":62,"column":45}},"47":{"start":{"line":62,"column":32},"end":{"line":62,"column":43}},"48":{"start":{"line":63,"column":8},"end":{"line":63,"column":61}},"49":{"start":{"line":65,"column":4},"end":{"line":68,"column":6}},"50":{"start":{"line":66,"column":8},"end":{"line":66,"column":45}},"51":{"start":{"line":66,"column":32},"end":{"line":66,"column":43}},"52":{"start":{"line":67,"column":8},"end":{"line":67,"column":67}},"53":{"start":{"line":69,"column":4},"end":{"line":103,"column":6}},"54":{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},"55":{"start":{"line":70,"column":36},"end":{"line":70,"column":54}},"56":{"start":{"line":71,"column":8},"end":{"line":71,"column":45}},"57":{"start":{"line":71,"column":32},"end":{"line":71,"column":43}},"58":{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},"59":{"start":{"line":73,"column":12},"end":{"line":73,"column":71}},"60":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"61":{"start":{"line":76,"column":12},"end":{"line":76,"column":72}},"62":{"start":{"line":78,"column":8},"end":{"line":83,"column":9}},"63":{"start":{"line":79,"column":12},"end":{"line":81,"column":13}},"64":{"start":{"line":80,"column":16},"end":{"line":80,"column":72}},"65":{"start":{"line":82,"column":12},"end":{"line":82,"column":62}},"66":{"start":{"line":84,"column":19},"end":{"line":84,"column":30}},"67":{"start":{"line":85,"column":8},"end":{"line":85,"column":53}},"68":{"start":{"line":86,"column":8},"end":{"line":86,"column":64}},"69":{"start":{"line":87,"column":8},"end":{"line":87,"column":55}},"70":{"start":{"line":88,"column":8},"end":{"line":88,"column":21}},"71":{"start":{"line":89,"column":8},"end":{"line":89,"column":31}},"72":{"start":{"line":90,"column":8},"end":{"line":92,"column":9}},"73":{"start":{"line":91,"column":12},"end":{"line":91,"column":38}},"74":{"start":{"line":93,"column":8},"end":{"line":95,"column":9}},"75":{"start":{"line":94,"column":12},"end":{"line":94,"column":36}},"76":{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},"77":{"start":{"line":97,"column":12},"end":{"line":97,"column":36}},"78":{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},"79":{"start":{"line":100,"column":12},"end":{"line":100,"column":49}},"80":{"start":{"line":102,"column":8},"end":{"line":102,"column":20}},"81":{"start":{"line":104,"column":4},"end":{"line":114,"column":6}},"82":{"start":{"line":105,"column":20},"end":{"line":105,"column":22}},"83":{"start":{"line":106,"column":8},"end":{"line":112,"column":9}},"84":{"start":{"line":106,"column":21},"end":{"line":106,"column":22}},"85":{"start":{"line":107,"column":12},"end":{"line":111,"column":13}},"86":{"start":{"line":107,"column":25},"end":{"line":107,"column":26}},"87":{"start":{"line":108,"column":16},"end":{"line":110,"column":17}},"88":{"start":{"line":109,"column":20},"end":{"line":109,"column":39}},"89":{"start":{"line":113,"column":8},"end":{"line":113,"column":21}},"90":{"start":{"line":115,"column":4},"end":{"line":133,"column":6}},"91":{"start":{"line":116,"column":8},"end":{"line":116,"column":56}},"92":{"start":{"line":116,"column":36},"end":{"line":116,"column":54}},"93":{"start":{"line":117,"column":18},"end":{"line":117,"column":20}},"94":{"start":{"line":118,"column":8},"end":{"line":131,"column":9}},"95":{"start":{"line":118,"column":21},"end":{"line":118,"column":22}},"96":{"start":{"line":119,"column":23},"end":{"line":119,"column":25}},"97":{"start":{"line":120,"column":12},"end":{"line":129,"column":13}},"98":{"start":{"line":120,"column":25},"end":{"line":120,"column":26}},"99":{"start":{"line":121,"column":29},"end":{"line":121,"column":32}},"100":{"start":{"line":122,"column":16},"end":{"line":127,"column":17}},"101":{"start":{"line":123,"column":20},"end":{"line":123,"column":33}},"102":{"start":{"line":125,"column":21},"end":{"line":127,"column":17}},"103":{"start":{"line":126,"column":20},"end":{"line":126,"column":58}},"104":{"start":{"line":128,"column":16},"end":{"line":128,"column":37}},"105":{"start":{"line":130,"column":12},"end":{"line":130,"column":27}},"106":{"start":{"line":132,"column":8},"end":{"line":132,"column":30}},"107":{"start":{"line":134,"column":4},"end":{"line":142,"column":6}},"108":{"start":{"line":135,"column":19},"end":{"line":135,"column":42}},"109":{"start":{"line":136,"column":8},"end":{"line":136,"column":115}},"110":{"start":{"line":136,"column":57},"end":{"line":136,"column":111}},"111":{"start":{"line":136,"column":91},"end":{"line":136,"column":107}},"112":{"start":{"line":137,"column":8},"end":{"line":137,"column":32}},"113":{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},"114":{"start":{"line":139,"column":12},"end":{"line":139,"column":38}},"115":{"start":{"line":141,"column":8},"end":{"line":141,"column":20}},"116":{"start":{"line":143,"column":4},"end":{"line":150,"column":6}},"117":{"start":{"line":144,"column":8},"end":{"line":144,"column":56}},"118":{"start":{"line":144,"column":36},"end":{"line":144,"column":54}},"119":{"start":{"line":145,"column":27},"end":{"line":145,"column":65}},"120":{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},"121":{"start":{"line":147,"column":12},"end":{"line":147,"column":54}},"122":{"start":{"line":149,"column":8},"end":{"line":149,"column":49}},"123":{"start":{"line":151,"column":4},"end":{"line":153,"column":6}},"124":{"start":{"line":152,"column":8},"end":{"line":152,"column":43}},"125":{"start":{"line":154,"column":4},"end":{"line":167,"column":6}},"126":{"start":{"line":155,"column":21},"end":{"line":155,"column":46}},"127":{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},"128":{"start":{"line":157,"column":12},"end":{"line":157,"column":19}},"129":{"start":{"line":159,"column":8},"end":{"line":163,"column":9}},"130":{"start":{"line":159,"column":21},"end":{"line":159,"column":22}},"131":{"start":{"line":160,"column":12},"end":{"line":162,"column":13}},"132":{"start":{"line":161,"column":16},"end":{"line":161,"column":23}},"133":{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},"134":{"start":{"line":165,"column":12},"end":{"line":165,"column":33}},"135":{"start":{"line":168,"column":4},"end":{"line":181,"column":6}},"136":{"start":{"line":169,"column":21},"end":{"line":169,"column":46}},"137":{"start":{"line":170,"column":8},"end":{"line":172,"column":9}},"138":{"start":{"line":171,"column":12},"end":{"line":171,"column":19}},"139":{"start":{"line":173,"column":8},"end":{"line":177,"column":9}},"140":{"start":{"line":173,"column":21},"end":{"line":173,"column":22}},"141":{"start":{"line":174,"column":12},"end":{"line":176,"column":13}},"142":{"start":{"line":175,"column":16},"end":{"line":175,"column":23}},"143":{"start":{"line":178,"column":8},"end":{"line":180,"column":9}},"144":{"start":{"line":179,"column":12},"end":{"line":179,"column":33}},"145":{"start":{"line":182,"column":4},"end":{"line":195,"column":6}},"146":{"start":{"line":183,"column":21},"end":{"line":183,"column":44}},"147":{"start":{"line":184,"column":8},"end":{"line":186,"column":9}},"148":{"start":{"line":185,"column":12},"end":{"line":185,"column":19}},"149":{"start":{"line":187,"column":8},"end":{"line":191,"column":9}},"150":{"start":{"line":187,"column":21},"end":{"line":187,"column":22}},"151":{"start":{"line":188,"column":12},"end":{"line":190,"column":13}},"152":{"start":{"line":189,"column":16},"end":{"line":189,"column":23}},"153":{"start":{"line":192,"column":8},"end":{"line":194,"column":9}},"154":{"start":{"line":193,"column":12},"end":{"line":193,"column":33}},"155":{"start":{"line":196,"column":4},"end":{"line":209,"column":6}},"156":{"start":{"line":197,"column":21},"end":{"line":197,"column":56}},"157":{"start":{"line":198,"column":8},"end":{"line":200,"column":9}},"158":{"start":{"line":199,"column":12},"end":{"line":199,"column":19}},"159":{"start":{"line":201,"column":8},"end":{"line":205,"column":9}},"160":{"start":{"line":201,"column":21},"end":{"line":201,"column":34}},"161":{"start":{"line":202,"column":12},"end":{"line":204,"column":13}},"162":{"start":{"line":203,"column":16},"end":{"line":203,"column":23}},"163":{"start":{"line":206,"column":8},"end":{"line":208,"column":9}},"164":{"start":{"line":207,"column":12},"end":{"line":207,"column":33}},"165":{"start":{"line":210,"column":4},"end":{"line":210,"column":20}},"166":{"start":{"line":212,"column":0},"end":{"line":212,"column":27}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":16,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":40},"end":{"line":8,"column":5}},"line":3},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":51},"end":{"line":5,"column":52}},"loc":{"start":{"line":5,"column":67},"end":{"line":5,"column":87}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":12},"end":{"line":6,"column":13}},"loc":{"start":{"line":6,"column":28},"end":{"line":6,"column":109}},"line":6},"4":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":11},"end":{"line":9,"column":12}},"loc":{"start":{"line":9,"column":27},"end":{"line":15,"column":5}},"line":9},"5":{"name":"__","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":19}},"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":47}},"line":13},"6":{"name":"(anonymous_6)","decl":{"start":{"line":24,"column":16},"end":{"line":24,"column":17}},"loc":{"start":{"line":24,"column":34},"end":{"line":211,"column":1}},"line":24},"7":{"name":"SubBoard","decl":{"start":{"line":26,"column":13},"end":{"line":26,"column":21}},"loc":{"start":{"line":26,"column":28},"end":{"line":40,"column":5}},"line":26},"8":{"name":"(anonymous_8)","decl":{"start":{"line":41,"column":36},"end":{"line":41,"column":37}},"loc":{"start":{"line":41,"column":48},"end":{"line":43,"column":5}},"line":41},"9":{"name":"(anonymous_9)","decl":{"start":{"line":44,"column":35},"end":{"line":44,"column":36}},"loc":{"start":{"line":44,"column":47},"end":{"line":49,"column":5}},"line":44},"10":{"name":"(anonymous_10)","decl":{"start":{"line":50,"column":37},"end":{"line":50,"column":38}},"loc":{"start":{"line":50,"column":53},"end":{"line":60,"column":5}},"line":50},"11":{"name":"(anonymous_11)","decl":{"start":{"line":61,"column":35},"end":{"line":61,"column":36}},"loc":{"start":{"line":61,"column":58},"end":{"line":64,"column":5}},"line":61},"12":{"name":"(anonymous_12)","decl":{"start":{"line":65,"column":41},"end":{"line":65,"column":42}},"loc":{"start":{"line":65,"column":64},"end":{"line":68,"column":5}},"line":65},"13":{"name":"(anonymous_13)","decl":{"start":{"line":69,"column":30},"end":{"line":69,"column":31}},"loc":{"start":{"line":69,"column":72},"end":{"line":103,"column":5}},"line":69},"14":{"name":"(anonymous_14)","decl":{"start":{"line":104,"column":39},"end":{"line":104,"column":40}},"loc":{"start":{"line":104,"column":51},"end":{"line":114,"column":5}},"line":104},"15":{"name":"(anonymous_15)","decl":{"start":{"line":115,"column":37},"end":{"line":115,"column":38}},"loc":{"start":{"line":115,"column":58},"end":{"line":133,"column":5}},"line":115},"16":{"name":"(anonymous_16)","decl":{"start":{"line":134,"column":30},"end":{"line":134,"column":31}},"loc":{"start":{"line":134,"column":42},"end":{"line":142,"column":5}},"line":134},"17":{"name":"(anonymous_17)","decl":{"start":{"line":136,"column":36},"end":{"line":136,"column":37}},"loc":{"start":{"line":136,"column":55},"end":{"line":136,"column":113}},"line":136},"18":{"name":"(anonymous_18)","decl":{"start":{"line":136,"column":76},"end":{"line":136,"column":77}},"loc":{"start":{"line":136,"column":89},"end":{"line":136,"column":109}},"line":136},"19":{"name":"(anonymous_19)","decl":{"start":{"line":143,"column":39},"end":{"line":143,"column":40}},"loc":{"start":{"line":143,"column":68},"end":{"line":150,"column":5}},"line":143},"20":{"name":"(anonymous_20)","decl":{"start":{"line":151,"column":32},"end":{"line":151,"column":33}},"loc":{"start":{"line":151,"column":44},"end":{"line":153,"column":5}},"line":151},"21":{"name":"(anonymous_21)","decl":{"start":{"line":154,"column":34},"end":{"line":154,"column":35}},"loc":{"start":{"line":154,"column":49},"end":{"line":167,"column":5}},"line":154},"22":{"name":"(anonymous_22)","decl":{"start":{"line":168,"column":37},"end":{"line":168,"column":38}},"loc":{"start":{"line":168,"column":52},"end":{"line":181,"column":5}},"line":168},"23":{"name":"(anonymous_23)","decl":{"start":{"line":182,"column":42},"end":{"line":182,"column":43}},"loc":{"start":{"line":182,"column":54},"end":{"line":195,"column":5}},"line":182},"24":{"name":"(anonymous_24)","decl":{"start":{"line":196,"column":42},"end":{"line":196,"column":43}},"loc":{"start":{"line":196,"column":54},"end":{"line":209,"column":5}},"line":196}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":16,"column":4}}],"line":2},"1":{"loc":{"start":{"line":4,"column":24},"end":{"line":6,"column":109}},"type":"binary-expr","locations":[{"start":{"line":4,"column":24},"end":{"line":4,"column":45}},{"start":{"line":5,"column":13},"end":{"line":5,"column":47}},{"start":{"line":5,"column":51},"end":{"line":5,"column":87}},{"start":{"line":6,"column":12},"end":{"line":6,"column":109}}],"line":4},"2":{"loc":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"type":"if","locations":[{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},{"start":{"line":6,"column":47},"end":{"line":6,"column":107}}],"line":6},"3":{"loc":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"type":"if","locations":[{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},{"start":{"line":10,"column":8},"end":{"line":11,"column":102}}],"line":10},"4":{"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":49}},"type":"binary-expr","locations":[{"start":{"line":10,"column":12},"end":{"line":10,"column":35}},{"start":{"line":10,"column":39},"end":{"line":10,"column":49}}],"line":10},"5":{"loc":{"start":{"line":14,"column":22},"end":{"line":14,"column":92}},"type":"cond-expr","locations":[{"start":{"line":14,"column":35},"end":{"line":14,"column":51}},{"start":{"line":14,"column":55},"end":{"line":14,"column":91}}],"line":14},"6":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},{"start":{"line":27,"column":8},"end":{"line":27,"column":42}}],"line":27},"7":{"loc":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"type":"binary-expr","locations":[{"start":{"line":28,"column":20},"end":{"line":28,"column":37}},{"start":{"line":28,"column":41},"end":{"line":28,"column":45}}],"line":28},"8":{"loc":{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},"type":"if","locations":[{"start":{"line":45,"column":8},"end":{"line":47,"column":9}},{"start":{"line":45,"column":8},"end":{"line":47,"column":9}}],"line":45},"9":{"loc":{"start":{"line":51,"column":15},"end":{"line":59,"column":52}},"type":"binary-expr","locations":[{"start":{"line":51,"column":15},"end":{"line":51,"column":34}},{"start":{"line":52,"column":12},"end":{"line":52,"column":29}},{"start":{"line":53,"column":12},"end":{"line":53,"column":45}},{"start":{"line":54,"column":12},"end":{"line":54,"column":45}},{"start":{"line":55,"column":12},"end":{"line":55,"column":24}},{"start":{"line":56,"column":12},"end":{"line":56,"column":24}},{"start":{"line":57,"column":12},"end":{"line":57,"column":31}},{"start":{"line":58,"column":12},"end":{"line":58,"column":31}},{"start":{"line":59,"column":12},"end":{"line":59,"column":52}}],"line":51},"10":{"loc":{"start":{"line":62,"column":8},"end":{"line":62,"column":45}},"type":"if","locations":[{"start":{"line":62,"column":8},"end":{"line":62,"column":45}},{"start":{"line":62,"column":8},"end":{"line":62,"column":45}}],"line":62},"11":{"loc":{"start":{"line":66,"column":8},"end":{"line":66,"column":45}},"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":45}},{"start":{"line":66,"column":8},"end":{"line":66,"column":45}}],"line":66},"12":{"loc":{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},"type":"if","locations":[{"start":{"line":70,"column":8},"end":{"line":70,"column":56}},{"start":{"line":70,"column":8},"end":{"line":70,"column":56}}],"line":70},"13":{"loc":{"start":{"line":71,"column":8},"end":{"line":71,"column":45}},"type":"if","locations":[{"start":{"line":71,"column":8},"end":{"line":71,"column":45}},{"start":{"line":71,"column":8},"end":{"line":71,"column":45}}],"line":71},"14":{"loc":{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},"type":"if","locations":[{"start":{"line":72,"column":8},"end":{"line":74,"column":9}},{"start":{"line":72,"column":8},"end":{"line":74,"column":9}}],"line":72},"15":{"loc":{"start":{"line":72,"column":12},"end":{"line":72,"column":46}},"type":"binary-expr","locations":[{"start":{"line":72,"column":12},"end":{"line":72,"column":25}},{"start":{"line":72,"column":29},"end":{"line":72,"column":46}}],"line":72},"16":{"loc":{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},"type":"if","locations":[{"start":{"line":75,"column":8},"end":{"line":77,"column":9}},{"start":{"line":75,"column":8},"end":{"line":77,"column":9}}],"line":75},"17":{"loc":{"start":{"line":78,"column":8},"end":{"line":83,"column":9}},"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":83,"column":9}},{"start":{"line":78,"column":8},"end":{"line":83,"column":9}}],"line":78},"18":{"loc":{"start":{"line":79,"column":12},"end":{"line":81,"column":13}},"type":"if","locations":[{"start":{"line":79,"column":12},"end":{"line":81,"column":13}},{"start":{"line":79,"column":12},"end":{"line":81,"column":13}}],"line":79},"19":{"loc":{"start":{"line":90,"column":8},"end":{"line":92,"column":9}},"type":"if","locations":[{"start":{"line":90,"column":8},"end":{"line":92,"column":9}},{"start":{"line":90,"column":8},"end":{"line":92,"column":9}}],"line":90},"20":{"loc":{"start":{"line":93,"column":8},"end":{"line":95,"column":9}},"type":"if","locations":[{"start":{"line":93,"column":8},"end":{"line":95,"column":9}},{"start":{"line":93,"column":8},"end":{"line":95,"column":9}}],"line":93},"21":{"loc":{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":96,"column":8},"end":{"line":98,"column":9}},{"start":{"line":96,"column":8},"end":{"line":98,"column":9}}],"line":96},"22":{"loc":{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},"type":"if","locations":[{"start":{"line":99,"column":8},"end":{"line":101,"column":9}},{"start":{"line":99,"column":8},"end":{"line":101,"column":9}}],"line":99},"23":{"loc":{"start":{"line":99,"column":12},"end":{"line":99,"column":65}},"type":"binary-expr","locations":[{"start":{"line":99,"column":12},"end":{"line":99,"column":25}},{"start":{"line":99,"column":29},"end":{"line":99,"column":65}}],"line":99},"24":{"loc":{"start":{"line":108,"column":16},"end":{"line":110,"column":17}},"type":"if","locations":[{"start":{"line":108,"column":16},"end":{"line":110,"column":17}},{"start":{"line":108,"column":16},"end":{"line":110,"column":17}}],"line":108},"25":{"loc":{"start":{"line":116,"column":8},"end":{"line":116,"column":56}},"type":"if","locations":[{"start":{"line":116,"column":8},"end":{"line":116,"column":56}},{"start":{"line":116,"column":8},"end":{"line":116,"column":56}}],"line":116},"26":{"loc":{"start":{"line":122,"column":16},"end":{"line":127,"column":17}},"type":"if","locations":[{"start":{"line":122,"column":16},"end":{"line":127,"column":17}},{"start":{"line":122,"column":16},"end":{"line":127,"column":17}}],"line":122},"27":{"loc":{"start":{"line":122,"column":20},"end":{"line":122,"column":83}},"type":"binary-expr","locations":[{"start":{"line":122,"column":20},"end":{"line":122,"column":29}},{"start":{"line":122,"column":33},"end":{"line":122,"column":83}}],"line":122},"28":{"loc":{"start":{"line":125,"column":21},"end":{"line":127,"column":17}},"type":"if","locations":[{"start":{"line":125,"column":21},"end":{"line":127,"column":17}},{"start":{"line":125,"column":21},"end":{"line":127,"column":17}}],"line":125},"29":{"loc":{"start":{"line":125,"column":25},"end":{"line":125,"column":118}},"type":"binary-expr","locations":[{"start":{"line":125,"column":25},"end":{"line":125,"column":73}},{"start":{"line":125,"column":77},"end":{"line":125,"column":118}}],"line":125},"30":{"loc":{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},"type":"if","locations":[{"start":{"line":138,"column":8},"end":{"line":140,"column":9}},{"start":{"line":138,"column":8},"end":{"line":140,"column":9}}],"line":138},"31":{"loc":{"start":{"line":144,"column":8},"end":{"line":144,"column":56}},"type":"if","locations":[{"start":{"line":144,"column":8},"end":{"line":144,"column":56}},{"start":{"line":144,"column":8},"end":{"line":144,"column":56}}],"line":144},"32":{"loc":{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},"type":"if","locations":[{"start":{"line":146,"column":8},"end":{"line":148,"column":9}},{"start":{"line":146,"column":8},"end":{"line":148,"column":9}}],"line":146},"33":{"loc":{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},"type":"if","locations":[{"start":{"line":156,"column":8},"end":{"line":158,"column":9}},{"start":{"line":156,"column":8},"end":{"line":158,"column":9}}],"line":156},"34":{"loc":{"start":{"line":160,"column":12},"end":{"line":162,"column":13}},"type":"if","locations":[{"start":{"line":160,"column":12},"end":{"line":162,"column":13}},{"start":{"line":160,"column":12},"end":{"line":162,"column":13}}],"line":160},"35":{"loc":{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},"type":"if","locations":[{"start":{"line":164,"column":8},"end":{"line":166,"column":9}},{"start":{"line":164,"column":8},"end":{"line":166,"column":9}}],"line":164},"36":{"loc":{"start":{"line":170,"column":8},"end":{"line":172,"column":9}},"type":"if","locations":[{"start":{"line":170,"column":8},"end":{"line":172,"column":9}},{"start":{"line":170,"column":8},"end":{"line":172,"column":9}}],"line":170},"37":{"loc":{"start":{"line":174,"column":12},"end":{"line":176,"column":13}},"type":"if","locations":[{"start":{"line":174,"column":12},"end":{"line":176,"column":13}},{"start":{"line":174,"column":12},"end":{"line":176,"column":13}}],"line":174},"38":{"loc":{"start":{"line":178,"column":8},"end":{"line":180,"column":9}},"type":"if","locations":[{"start":{"line":178,"column":8},"end":{"line":180,"column":9}},{"start":{"line":178,"column":8},"end":{"line":180,"column":9}}],"line":178},"39":{"loc":{"start":{"line":184,"column":8},"end":{"line":186,"column":9}},"type":"if","locations":[{"start":{"line":184,"column":8},"end":{"line":186,"column":9}},{"start":{"line":184,"column":8},"end":{"line":186,"column":9}}],"line":184},"40":{"loc":{"start":{"line":188,"column":12},"end":{"line":190,"column":13}},"type":"if","locations":[{"start":{"line":188,"column":12},"end":{"line":190,"column":13}},{"start":{"line":188,"column":12},"end":{"line":190,"column":13}}],"line":188},"41":{"loc":{"start":{"line":192,"column":8},"end":{"line":194,"column":9}},"type":"if","locations":[{"start":{"line":192,"column":8},"end":{"line":194,"column":9}},{"start":{"line":192,"column":8},"end":{"line":194,"column":9}}],"line":192},"42":{"loc":{"start":{"line":198,"column":8},"end":{"line":200,"column":9}},"type":"if","locations":[{"start":{"line":198,"column":8},"end":{"line":200,"column":9}},{"start":{"line":198,"column":8},"end":{"line":200,"column":9}}],"line":198},"43":{"loc":{"start":{"line":202,"column":12},"end":{"line":204,"column":13}},"type":"if","locations":[{"start":{"line":202,"column":12},"end":{"line":204,"column":13}},{"start":{"line":202,"column":12},"end":{"line":204,"column":13}}],"line":202},"44":{"loc":{"start":{"line":206,"column":8},"end":{"line":208,"column":9}},"type":"if","locations":[{"start":{"line":206,"column":8},"end":{"line":208,"column":9}},{"start":{"line":206,"column":8},"end":{"line":208,"column":9}}],"line":206}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":1,"8":1,"9":1,"10":0,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":2503,"24":40,"25":2503,"26":2503,"27":2503,"28":2503,"29":2503,"30":2503,"31":7509,"32":7509,"33":7509,"34":22527,"35":2503,"36":2503,"37":1,"38":1262,"39":1,"40":19,"41":1,"42":18,"43":1,"44":247,"45":1,"46":53,"47":0,"48":53,"49":1,"50":43,"51":0,"52":43,"53":1,"54":256,"55":144,"56":256,"57":160,"58":256,"59":8,"60":248,"61":3,"62":245,"63":22,"64":20,"65":2,"66":223,"67":223,"68":223,"69":223,"70":223,"71":223,"72":223,"73":217,"74":223,"75":191,"76":223,"77":187,"78":223,"79":6,"80":223,"81":1,"82":1,"83":1,"84":1,"85":3,"86":3,"87":9,"88":8,"89":1,"90":1,"91":10,"92":10,"93":10,"94":10,"95":10,"96":30,"97":30,"98":30,"99":90,"100":90,"101":0,"102":90,"103":0,"104":90,"105":30,"106":10,"107":1,"108":1193,"109":1193,"110":3579,"111":10737,"112":1193,"113":1193,"114":33,"115":1193,"116":1,"117":248,"118":0,"119":248,"120":248,"121":16,"122":248,"123":1,"124":483,"125":1,"126":223,"127":223,"128":0,"129":223,"130":223,"131":253,"132":217,"133":6,"134":6,"135":1,"136":217,"137":217,"138":0,"139":217,"140":217,"141":283,"142":191,"143":26,"144":26,"145":1,"146":191,"147":191,"148":0,"149":191,"150":191,"151":273,"152":143,"153":48,"154":4,"155":1,"156":187,"157":187,"158":0,"159":187,"160":187,"161":535,"162":66,"163":121,"164":2,"165":1,"166":1},"f":{"0":1,"1":1,"2":0,"3":0,"4":1,"5":1,"6":1,"7":2503,"8":1262,"9":19,"10":247,"11":53,"12":43,"13":256,"14":1,"15":10,"16":1193,"17":3579,"18":10737,"19":248,"20":483,"21":223,"22":217,"23":191,"24":187},"b":{"0":[1,1,1],"1":[1,0,0,0],"2":[0,0],"3":[0,1],"4":[1,0],"5":[0,1],"6":[40,2463],"7":[2503,2503],"8":[1,18],"9":[247,241,235,235,235,229,229,229,227],"10":[0,53],"11":[0,43],"12":[144,112],"13":[160,96],"14":[8,248],"15":[256,252],"16":[3,245],"17":[22,223],"18":[20,2],"19":[217,6],"20":[191,32],"21":[187,36],"22":[6,217],"23":[223,6],"24":[8,1],"25":[10,0],"26":[0,90],"27":[90,0],"28":[0,90],"29":[90,0],"30":[33,1160],"31":[0,248],"32":[16,232],"33":[0,223],"34":[217,36],"35":[6,0],"36":[0,217],"37":[191,92],"38":[26,0],"39":[0,191],"40":[143,130],"41":[4,44],"42":[0,187],"43":[66,469],"44":[2,119]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/SubBoard.ts"],"names":[],"mappings":"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","sourcesContent":["import errors from './model/errors';\nimport Cell from './model/Cell';\nimport error from './error';\nimport {Coord, ME, OPPONENT, PlayerNumber, PlayerOrTie, RESULT_TIE, UNPLAYED} from \"./model/constants\";\nimport TTT from \"./model/TTT\";\nimport { isInteger } from './utility';\n\n/**\n * SubBoard for TicTacToe games\n * This class implements the traditional game of TicTacToe\n */\nexport default class SubBoard extends TTT<Cell> {\n  /**\n   * Holds the state of the game board as a two dimensional array\n   * each element of the inner array is a Cell\n   */\n  public board: Array<Array<Cell>>;\n\n  constructor(size = 3){\n    super();\n    this.size = size;\n\n    // Game state\n    this.board = [];\n    this.moves = 0;\n\n    for(let x = 0; x < this.size; x++){\n      this.board[x] = [];\n      for(let y = 0; y < this.size; y++){\n        this.board[x][y] = new Cell([x, y]);\n      }\n    }\n\n    // the maximum number of moves before filling up the board\n    this.maxMoves = Math.pow(this.size, 2);\n\n    return this;\n  }\n\n  /**\n   * Returns true if the game is over, undefined if it hasn't finished yet\n   */\n  public isFinished(): boolean {\n    return this.winner !== undefined;\n  }\n\n  /**\n   * Returns the winner for the game, throws an exception if the game hasn't finished yet.\n   * @returns {number} -1 for a tie, 0 you won, 1 opponent won\n   */\n  public getResult(): number {\n    if (!this.isFinished()) {\n      throw error(errors.gameNotFinished);\n    }\n    return this.winner;\n  }\n\n  /**\n   * Validates a given move (check for right format, data ranges, and\n   * that the move hasn't already been played)\n   * @param move Move coordinates as an array [x, y]\n   * @returns {boolean} true if the move is valid\n   */\n  public isValidMove(move: Coord): boolean {\n    return Array.isArray(move) &&\n      move.length === 2 &&\n      isInteger(move[0]) &&\n      isInteger(move[1]) &&\n      move[0] > -1 &&\n      move[1] > -1 &&\n      move[0] < this.size &&\n      move[1] < this.size && \n      !this.board[move[0]][move[1]].isPlayed();\n  }\n\n  /**\n   * Adds your move to the board, throws exception if move is invalid or board is already finished.\n   * @param move move coordinates\n   * @param index which turn this was (to enable replaying UTTT games)\n   * @returns {SubBoard}\n   */\n  public addMyMove(move: Coord, index = -1): SubBoard{\n    return this.move(ME, move, false, index);\n  }\n\n  /**\n   * Adds an opponent move to the board, throws exception if move is invalid or board is already finished.\n   * @param move\n   * @param index which turn this was (to enable replaying UTTT games)\n   * @returns {SubBoard}\n   */\n  public addOpponentMove(move: Coord, index = -1): SubBoard {\n    return this.move(OPPONENT, move, false, index)\n  }\n\n  /**\n   * Execute a move. This is an immutable method, that returns a\n   * new SubBoard. It may be easier and more clear to use the addOpponentMove and addMyMove methods instead.\n   * @param player Player identifier (0 || 1)\n   * @param move Move coordinates as an array [x, y]\n   * @param allowTies Whether we should allow adding a TIE (-1) as a player\n   * @param index which turn this was (to enable replaying UTTT games)\n   * @returns {SubBoard} Updated copy of the current game with the move added and the state updated\n   */\n  public move(player: PlayerOrTie, move: Coord, allowTies: boolean = false, index: number = -1): SubBoard {\n    if(this.isFull() || this.isFinished()) {\n      throw error(errors.boardFinished);\n    }\n\n    if (!this.isValidPlayer(player as PlayerNumber, allowTies)) {\n      throw error(errors.player, player);\n    }\n\n    if (!this.isValidMove(move)) {\n      if (move) {\n        throw error(errors.move, move);\n      }\n      throw error(errors.move);\n    }\n    const game = this.copy();\n\n    game.board[move[0]][move[1]].player = player;\n    game.board[move[0]][move[1]].subBoardIndex = game.moves;\n    game.board[move[0]][move[1]].mainIndex = index;\n    game.moves++;\n\n    // Check if the board has been won\n    game.checkRow(move[0]);\n\n    if (!game.isFinished()) {\n      game.checkColumn(move[1]);\n    }\n\n    if (!game.isFinished()) {\n      game.checkLtRDiagonal();\n    }\n\n    if (!game.isFinished()) {\n      game.checkRtLDiagonal();\n    }\n\n    // check for a tie\n    if (game.isFull() && game.winner === UNPLAYED) {\n      game.winner = RESULT_TIE;\n    }\n\n    return game;\n  }\n\n  /**\n   * Get a list of all the valid moves in the board\n   */\n  public getValidMoves(): Array<Coord> {\n    const moves: Array<Coord> = [];\n    for(let x = 0; x < this.size; x++) {\n      for (let y = 0; y < this.size; y++) {\n        if (!this.board[x][y].isPlayed()) {\n          moves.push([x, y]);\n        }\n      }\n    }\n    return moves;\n  }\n\n  /**\n   * Returns a string with the board formatted for display\n   * including new lines.\n   * @returns {string}\n   */\n  public prettyPrint(printTies: boolean = false): string {\n    let ret = [];\n    for(let x = 0; x < this.size; x++) {\n      let line = '';\n      for (let y = 0; y < this.size; y++) {\n        let player = '-';\n        if (printTies && this.board[x][y].player === RESULT_TIE) {\n          player = '+';\n        } else if(this.board[x][y].player !== UNPLAYED && this.board[x][y].player >= ME) {\n          player = `${this.board[x][y].player}`;\n        }\n        line += player + ' ';\n      }\n      ret.push(line);\n    }\n    return ret.join(\"\\n\");\n  }\n\n  /**\n   * Return a new SubBoard as a copy of this one\n   * @returns {SubBoard} Copy of the current game\n   */\n  public copy(): SubBoard {\n    const copy = new SubBoard(this.size);\n    copy.board = this.board.map(copyRow => copyRow.map(c => c.copy()));\n    copy.moves = this.moves;\n    \n    if (this.winner !== undefined) {\n      copy.winner = this.winner;\n    }\n\n    return copy;\n  }\n\n  /**\n   * Validates a player\n   * @param player Player identifier (0 || 1)\n   * @param allowTies Whether we should allow adding a TIE (-1) as a player\n   * @returns {boolean}\n   */\n  private isValidPlayer(player: PlayerNumber, allowTies: boolean = false): boolean {\n    const validPlayers = [ ME, OPPONENT ];\n    if (allowTies) {\n      validPlayers.push(RESULT_TIE);\n    }\n    return validPlayers.indexOf(player) > -1;\n  }\n\n  /**\n   * Same as isFinished()\n   * @returns {boolean}\n   */\n  public isFull(): boolean {\n    return this.moves >= this.maxMoves;\n  }\n\n  /**\n   * Check if a given row has been won\n   * @param row Row index\n   * @private\n   */\n  private checkRow(row: number): void {\n    const player = this.board[row][0].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = 1; i < this.size; i++){\n      if(player !== this.board[row][i].player) {\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n\n  /**\n   * Check if a given column has been won\n   * @param col Column index\n   */\n  private checkColumn(col: number): void {\n    const player = this.board[0][col].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = 1; i < this.size; i++){\n      if(player !== this.board[i][col].player) {\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n\n  /**\n   * Check if the left to right diagonal has been won\n   */\n  private checkLtRDiagonal(): void {\n    const player = this.board[0][0].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = 1; i < this.size; i++){\n      if(player !== this.board[i][i].player){\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n\n  /**\n   * Check if the right to left diagonal has been won\n   */\n  private checkRtLDiagonal(): void {\n    const player = this.board[0][this.size - 1].player;\n    if(player < ME){\n      return;\n    }\n    for(let i = this.size - 1; i >= 0; i--){\n      if(player !== this.board[this.size - 1 - i][i].player){\n        return;\n      }\n    }\n    if (player >= ME) {\n      this.winner = player;\n    }\n  }\n}"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b4c75ed5626fde002999cc9e11c676c10657c913","contentHash":"31f19aa7bda9c1cd244a9073639781b813fb6c1654fbda8c3d70d597b3f684b5"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":28,"column":2}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/errors.ts"],"names":[],"mappings":";;AAGA,kBAAe;IACb,MAAM,EAAE;QACN,OAAO,EAAE,+CAA+C;QACxD,IAAI,EAAE,CAAC;KACR;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,+BAA+B;QACxC,IAAI,EAAE,CAAC;KACR;IACD,KAAK,EAAE;QACL,OAAO,EAAE,oFAAoF;QAC7F,IAAI,EAAE,CAAC;KACR;IACD,aAAa,EAAE;QACb,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,CAAC;KACR;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,uBAAuB;QAChC,IAAI,EAAE,CAAC;KACR;IACD,eAAe,EAAE;QACf,OAAO,EAAE,mBAAmB;QAC5B,IAAI,EAAE,CAAC;KACR;CACF,CAAC","sourcesContent":["/**\n * Error definitions\n */\nexport default {\n  player: {\n    message: 'Invalid player (%s), it must be either 0 or 1',\n    code: 1\n  },\n  move: {\n    message: 'Invalid move coordinates (%s)',\n    code: 2\n  },\n  board: {\n    message: 'Invalid next board (%s), it must be the same as the last valid move\\'s coordinates',\n    code: 4\n  },\n  boardFinished: {\n    message: 'Board already finished',\n    code: 5\n  },\n  gameFinished: {\n    message: 'Game already finished',\n    code: 6\n  },\n  gameNotFinished: {\n    message: 'Game not finished',\n    code: 7\n  }\n};"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f5261111e28358f04a82a52f0780550395e9f1be","contentHash":"dbcad0b2d5657b40ae94f5b038437addb45b5a8f863c5afd33aabb400b39494d"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":18},"end":{"line":3,"column":40}},"2":{"start":{"line":4,"column":12},"end":{"line":22,"column":3}},"3":{"start":{"line":6,"column":8},"end":{"line":6,"column":61}},"4":{"start":{"line":6,"column":38},"end":{"line":6,"column":59}},"5":{"start":{"line":7,"column":8},"end":{"line":7,"column":65}},"6":{"start":{"line":7,"column":33},"end":{"line":7,"column":63}},"7":{"start":{"line":8,"column":8},"end":{"line":8,"column":61}},"8":{"start":{"line":8,"column":40},"end":{"line":8,"column":59}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":53}},"10":{"start":{"line":9,"column":36},"end":{"line":9,"column":51}},"11":{"start":{"line":10,"column":8},"end":{"line":10,"column":39}},"12":{"start":{"line":11,"column":8},"end":{"line":11,"column":29}},"13":{"start":{"line":12,"column":8},"end":{"line":12,"column":43}},"14":{"start":{"line":13,"column":8},"end":{"line":13,"column":35}},"15":{"start":{"line":15,"column":4},"end":{"line":17,"column":6}},"16":{"start":{"line":16,"column":8},"end":{"line":16,"column":91}},"17":{"start":{"line":18,"column":4},"end":{"line":20,"column":6}},"18":{"start":{"line":19,"column":8},"end":{"line":19,"column":52}},"19":{"start":{"line":21,"column":4},"end":{"line":21,"column":16}},"20":{"start":{"line":23,"column":0},"end":{"line":23,"column":23}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":12},"end":{"line":4,"column":13}},"loc":{"start":{"line":4,"column":24},"end":{"line":22,"column":1}},"line":4},"1":{"name":"Cell","decl":{"start":{"line":5,"column":13},"end":{"line":5,"column":17}},"loc":{"start":{"line":5,"column":65},"end":{"line":14,"column":5}},"line":5},"2":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":26},"end":{"line":15,"column":27}},"loc":{"start":{"line":15,"column":38},"end":{"line":17,"column":5}},"line":15},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":30},"end":{"line":18,"column":31}},"loc":{"start":{"line":18,"column":42},"end":{"line":20,"column":5}},"line":18}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":8},"end":{"line":6,"column":61}},"type":"if","locations":[{"start":{"line":6,"column":8},"end":{"line":6,"column":61}},{"start":{"line":6,"column":8},"end":{"line":6,"column":61}}],"line":6},"1":{"loc":{"start":{"line":7,"column":8},"end":{"line":7,"column":65}},"type":"if","locations":[{"start":{"line":7,"column":8},"end":{"line":7,"column":65}},{"start":{"line":7,"column":8},"end":{"line":7,"column":65}}],"line":7},"2":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":61}},"type":"if","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":61}},{"start":{"line":8,"column":8},"end":{"line":8,"column":61}}],"line":8},"3":{"loc":{"start":{"line":9,"column":8},"end":{"line":9,"column":53}},"type":"if","locations":[{"start":{"line":9,"column":8},"end":{"line":9,"column":53}},{"start":{"line":9,"column":8},"end":{"line":9,"column":53}}],"line":9}},"s":{"0":1,"1":1,"2":1,"3":33264,"4":0,"5":33264,"6":32655,"7":33264,"8":22527,"9":33264,"10":22527,"11":33264,"12":33264,"13":33264,"14":33264,"15":1,"16":10737,"17":1,"18":236,"19":1,"20":1},"f":{"0":1,"1":33264,"2":10737,"3":236},"b":{"0":[0,33264],"1":[32655,609],"2":[22527,10737],"3":[22527,10737]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/Cell.ts"],"names":[],"mappings":";;AAAA,yCAAqE;AAIrE;IAEE,cAAmB,WAA4B,EAAS,MAA8B,EAAS,aAA0B,EAAU,SAAsB;QAAtI,4BAAA,EAAA,eAAuB,CAAC,EAAE,CAAC,CAAC;QAAS,uBAAA,EAAA,SAAsB,oBAAQ;QAAS,8BAAA,EAAA,iBAAyB,CAAC;QAAU,0BAAA,EAAA,aAAqB,CAAC;QAAtI,gBAAW,GAAX,WAAW,CAAiB;QAAS,WAAM,GAAN,MAAM,CAAwB;QAAS,kBAAa,GAAb,aAAa,CAAa;QAAU,cAAS,GAAT,SAAS,CAAa;IAAI,CAAC;IAE9J,mBAAI,GAAJ;QACE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrF,CAAC;IAED,uBAAQ,GAAR;QACE,OAAO,IAAI,CAAC,MAAM,GAAG,sBAAU,CAAC;IAClC,CAAC;IAEH,WAAC;AAAD,CAAC,AAZD,IAYC","sourcesContent":["import {PlayerOrTie, UNPLAYED, Coord, RESULT_TIE} from \"./constants\";\n/**\n * Definition of each Cell on a SubBoard\n */\nexport default class Cell {\n\n  constructor(public coordinates : Coord = [0, 0], public player: PlayerOrTie = UNPLAYED, public subBoardIndex: number = -1,  public mainIndex: number = -1) { }\n\n  copy() {\n    return new Cell(this.coordinates, this.player, this.subBoardIndex, this.mainIndex);\n  }\n\n  isPlayed() {\n    return this.player > RESULT_TIE;\n  }\n\n}"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"99dd057f9b131166cf0d219aa9346df6fb2ade87","contentHash":"3c50e52b67d05f24a08873b3b6c0245e201207b20b0b3ccb3b5a518e0f5756e5"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":122}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"4":{"start":{"line":6,"column":0},"end":{"line":6,"column":21}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":24}},"6":{"start":{"line":8,"column":0},"end":{"line":8,"column":23}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":24}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/constants.ts"],"names":[],"mappings":";;;AAIa,QAAA,QAAQ,GAAgB,SAAS,CAAC;AAMlC,QAAA,EAAE,GAAG,CAAC,CAAC;AAMP,QAAA,QAAQ,GAAG,CAAC,CAAC;AAMb,QAAA,UAAU,GAAG,CAAC,CAAC,CAAC;AAMhB,QAAA,UAAU,GAAG,CAAC,CAAC;AAMf,QAAA,WAAW,GAAG,CAAC,CAAC","sourcesContent":["/**\n * Constant to represent an unplayed cell\n * @type {number}\n */\nexport const UNPLAYED: PlayerOrTie = undefined;\n\n/**\n * Constant to represent player 1\n * @type {number}\n */\nexport const ME = 0;\n\n/**\n * Constant to represent player 2\n * @type {number}\n */\nexport const OPPONENT = 1;\n\n/**\n * Constant to represent a tie\n * @type {number}\n */\nexport const RESULT_TIE = -1;\n\n/**\n * Constant to represent player 1 winning\n * @type {number}\n */\nexport const RESULT_WIN = 0;\n\n/**\n * Constant to represent player 2 winning\n * @type {number}\n */\nexport const RESULT_LOSE = 1;\n\n/**\n * Coordinate in the form [x, y]\n */\nexport type Coord = [number, number];\n\n/**\n * Coordinates for moves on the big board\n */\nexport interface Coords {\n    board: Coord;\n    move: Coord\n}\n\n/**\n * Represent a player value (0 || 1)\n */\nexport type PlayerNumber = 0 | 1;\n\n/**\n * Store a player or a tie\n */\nexport type PlayerOrTie = -1 | PlayerNumber;"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7709f2df9d59ba7b3a687d289aa7ee0e8130a1af","contentHash":"634f24b4735550326faf85b1ef1ef006bbd7489fd034ddc46f9481126d435ae3"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":18},"end":{"line":3,"column":46}},"2":{"start":{"line":5,"column":4},"end":{"line":5,"column":82}},"3":{"start":{"line":7,"column":0},"end":{"line":7,"column":28}}},"fnMap":{"0":{"name":"default_1","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":18}},"loc":{"start":{"line":4,"column":32},"end":{"line":6,"column":1}},"line":4}},"branchMap":{},"s":{"0":1,"1":1,"2":43,"3":1},"f":{"0":43},"b":{},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/error.ts"],"names":[],"mappings":";;AAAA,+CAA0C;AAQ1C,mBAAwB,KAAU,EAAE,IAAU;IAC5C,OAAO,IAAI,mBAAS,CAClB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,EACjC,KAAK,CAAC,IAAI,CACX,CAAC;AACJ,CAAC;AALD,4BAKC","sourcesContent":["import UTTTError from \"./model/UTTTError\";\n\n/**\n * Utility function to generate game errors identified by a code\n * @param error Original error object\n * @param data Extra information to replace inside the error object\n * @returns {UTTTError} Game error\n */\nexport default function(error: any, data?: any): UTTTError {\n  return new UTTTError(\n    error.message.replace('%s', data),\n    error.code\n  );\n}"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6ec2de0e9c7a1cf254e47547896b64565deaa204","contentHash":"72bb46b689c07cb432009c5782fbee242967d343d6519a2ef0bf7e443bef3184"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":8,"column":5}},"2":{"start":{"line":4,"column":8},"end":{"line":6,"column":110}},"3":{"start":{"line":5,"column":69},"end":{"line":5,"column":85}},"4":{"start":{"line":6,"column":30},"end":{"line":6,"column":107}},"5":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"6":{"start":{"line":6,"column":95},"end":{"line":6,"column":107}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":35}},"8":{"start":{"line":9,"column":4},"end":{"line":15,"column":6}},"9":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"10":{"start":{"line":11,"column":12},"end":{"line":11,"column":102}},"11":{"start":{"line":12,"column":8},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":24},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":93}},"14":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"15":{"start":{"line":18,"column":17},"end":{"line":27,"column":8}},"16":{"start":{"line":19,"column":4},"end":{"line":19,"column":33}},"17":{"start":{"line":21,"column":20},"end":{"line":21,"column":54}},"18":{"start":{"line":22,"column":8},"end":{"line":22,"column":26}},"19":{"start":{"line":23,"column":8},"end":{"line":23,"column":26}},"20":{"start":{"line":24,"column":8},"end":{"line":24,"column":21}},"21":{"start":{"line":26,"column":4},"end":{"line":26,"column":21}},"22":{"start":{"line":28,"column":0},"end":{"line":28,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":16,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":40},"end":{"line":8,"column":5}},"line":3},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":51},"end":{"line":5,"column":52}},"loc":{"start":{"line":5,"column":67},"end":{"line":5,"column":87}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":12},"end":{"line":6,"column":13}},"loc":{"start":{"line":6,"column":28},"end":{"line":6,"column":109}},"line":6},"4":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":11},"end":{"line":9,"column":12}},"loc":{"start":{"line":9,"column":27},"end":{"line":15,"column":5}},"line":9},"5":{"name":"__","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":19}},"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":47}},"line":13},"6":{"name":"(anonymous_6)","decl":{"start":{"line":18,"column":17},"end":{"line":18,"column":18}},"loc":{"start":{"line":18,"column":35},"end":{"line":27,"column":1}},"line":18},"7":{"name":"UTTTError","decl":{"start":{"line":20,"column":13},"end":{"line":20,"column":22}},"loc":{"start":{"line":20,"column":38},"end":{"line":25,"column":5}},"line":20}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":16,"column":4}}],"line":2},"1":{"loc":{"start":{"line":4,"column":24},"end":{"line":6,"column":109}},"type":"binary-expr","locations":[{"start":{"line":4,"column":24},"end":{"line":4,"column":45}},{"start":{"line":5,"column":13},"end":{"line":5,"column":47}},{"start":{"line":5,"column":51},"end":{"line":5,"column":87}},{"start":{"line":6,"column":12},"end":{"line":6,"column":109}}],"line":4},"2":{"loc":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"type":"if","locations":[{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},{"start":{"line":6,"column":47},"end":{"line":6,"column":107}}],"line":6},"3":{"loc":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"type":"if","locations":[{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},{"start":{"line":10,"column":8},"end":{"line":11,"column":102}}],"line":10},"4":{"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":49}},"type":"binary-expr","locations":[{"start":{"line":10,"column":12},"end":{"line":10,"column":35}},{"start":{"line":10,"column":39},"end":{"line":10,"column":49}}],"line":10},"5":{"loc":{"start":{"line":14,"column":22},"end":{"line":14,"column":92}},"type":"cond-expr","locations":[{"start":{"line":14,"column":35},"end":{"line":14,"column":51}},{"start":{"line":14,"column":55},"end":{"line":14,"column":91}}],"line":14},"6":{"loc":{"start":{"line":21,"column":20},"end":{"line":21,"column":54}},"type":"binary-expr","locations":[{"start":{"line":21,"column":20},"end":{"line":21,"column":46}},{"start":{"line":21,"column":50},"end":{"line":21,"column":54}}],"line":21}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":1,"8":1,"9":1,"10":0,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":43,"18":43,"19":43,"20":43,"21":1,"22":1},"f":{"0":1,"1":1,"2":0,"3":0,"4":1,"5":1,"6":1,"7":43},"b":{"0":[1,1,1],"1":[1,0,0,0],"2":[0,0],"3":[0,1],"4":[1,0],"5":[0,1],"6":[43,0]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/UTTTError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;IAAuC,6BAAK;IAExC,mBAAY,OAAe,EAAU,IAAY;QAAjD,YACI,kBAAM,OAAO,CAAC,SAEjB;QAHoC,UAAI,GAAJ,IAAI,CAAQ;QAE7C,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;IACrB,CAAC;IAEL,gBAAC;AAAD,CAAC,AAPD,CAAuC,KAAK,GAO3C","sourcesContent":["export default class UTTTError extends Error {\n\n    constructor(message: string, private code: number) {\n        super(message);\n        this.code = code;\n    }\n\n}"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"35b5e59590a7a2b3ab4ed5ef8c61bb21203fc6d7","contentHash":"6713bf02153383b31a31be2c723880279ec417e55912e8d4bbe30efb81e3d6d8"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":11},"end":{"line":23,"column":3}},"2":{"start":{"line":5,"column":8},"end":{"line":5,"column":33}},"3":{"start":{"line":7,"column":4},"end":{"line":18,"column":7}},"4":{"start":{"line":9,"column":12},"end":{"line":9,"column":32}},"5":{"start":{"line":12,"column":12},"end":{"line":14,"column":13}},"6":{"start":{"line":13,"column":16},"end":{"line":13,"column":37}},"7":{"start":{"line":19,"column":4},"end":{"line":21,"column":6}},"8":{"start":{"line":20,"column":8},"end":{"line":20,"column":26}},"9":{"start":{"line":22,"column":4},"end":{"line":22,"column":15}},"10":{"start":{"line":24,"column":0},"end":{"line":24,"column":22}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":11},"end":{"line":3,"column":12}},"loc":{"start":{"line":3,"column":23},"end":{"line":23,"column":1}},"line":3},"1":{"name":"TTT","decl":{"start":{"line":4,"column":13},"end":{"line":4,"column":16}},"loc":{"start":{"line":4,"column":19},"end":{"line":6,"column":5}},"line":4},"2":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":13},"end":{"line":8,"column":14}},"loc":{"start":{"line":8,"column":25},"end":{"line":10,"column":9}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":13},"end":{"line":11,"column":14}},"loc":{"start":{"line":11,"column":30},"end":{"line":15,"column":9}},"line":11},"4":{"name":"(anonymous_4)","decl":{"start":{"line":19,"column":29},"end":{"line":19,"column":30}},"loc":{"start":{"line":19,"column":41},"end":{"line":21,"column":5}},"line":19}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":12},"end":{"line":14,"column":13}},"type":"if","locations":[{"start":{"line":12,"column":12},"end":{"line":14,"column":13}},{"start":{"line":12,"column":12},"end":{"line":14,"column":13}}],"line":12},"1":{"loc":{"start":{"line":12,"column":16},"end":{"line":12,"column":53}},"type":"binary-expr","locations":[{"start":{"line":12,"column":16},"end":{"line":12,"column":35}},{"start":{"line":12,"column":39},"end":{"line":12,"column":53}}],"line":12}},"s":{"0":1,"1":1,"2":2630,"3":1,"4":2746,"5":266,"6":81,"7":1,"8":2,"9":1,"10":1},"f":{"0":1,"1":2630,"2":2746,"3":266,"4":2},"b":{"0":[81,185],"1":[266,81]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/model/TTT.ts"],"names":[],"mappings":";;AACA;IAAA;QAcY,YAAO,GAAgB,SAAS,CAAC;IA+D7C,CAAC;IA7DG,sBAAI,uBAAM;aASV;YACI,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;aAXD,UAAW,KAAkB;YACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;gBACvC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;aACxB;QACL,CAAC;;;OAAA;IAgDM,sBAAQ,GAAf;QACI,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAOL,UAAC;AAAD,CAAC,AA7ED,IA6EC;AAED,kBAAe,GAAG,CAAC","sourcesContent":["import {Coord, PlayerOrTie} from \"./constants\";\nabstract class TTT<CellType> {\n    /**\n     * Holds the state of the game board as a two dimensional array\n     * each element of the inner array is a SubBoard\n     */\n    public board: Array<Array<CellType>>;\n\n    /**\n     * Holds the coordinates of the board that should be played next\n     * If the last move sends you to a finished board, then this will be null\n     * and you may choose any.\n     */\n    public nextBoard: Coord;\n\n    private _winner: PlayerOrTie = undefined;\n\n    set winner(value: PlayerOrTie) {\n        if (value !== undefined && value !== null) {\n            this._winner = value;\n        }\n    }\n\n    /**\n     * Game winner, will be null if no one has won yet, -1 in a tie, 0 if player 1 won or 1 if player 2 won.\n     */\n    get winner() {\n        return this._winner;\n    }\n\n    /**\n     * Indicates the size of Ultimate TTT we're dealing with\n     * typically this will be 3 for a 3x3 board.\n     */\n    protected size: number;\n\n    /**\n     * Holds the maximum number of moves before the board is full\n     * this is here to avoid recalculating it every time its needed\n     */\n    protected maxMoves: number;\n\n    /**\n     * Counter of moves that have been played so far\n     */\n    protected moves: number;\n\n    /**\n     * Returns true if the game is over\n     */\n    public abstract isFinished(): boolean;\n\n    /**\n     * Returns the winner for the game, throws an exception if the game hasn't finished yet.\n     * @returns {number} -1 for a tie, 0 you won, 1 opponent won\n     */\n    public abstract getResult(): number;\n\n    /**\n     * Returns a string with the board formatted for display\n     * including new lines.\n     * @returns {string} Printable version of the game board\n     */\n    public abstract prettyPrint(): string;\n\n    /**\n     * Getter for moves\n     * @returns {number}\n     */\n    public getMoves(): number {\n        return this.moves;\n    }\n\n    /**\n     * Return a new UTTT board as a copy of this one\n     * @returns {UTTT} Copy of the current game\n     */\n    public abstract copy(): TTT<CellType>;\n}\n\nexport default TTT;"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"40207d689c302e8890834c174c04b8a4fa8aad1e","contentHash":"8d199ee3d60fce1ec5c5c0f43f426c8af54015efed1f887624b52f4ba5f77ecf"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"2":{"start":{"line":4,"column":16},"end":{"line":8,"column":1}},"3":{"start":{"line":5,"column":4},"end":{"line":7,"column":36}},"4":{"start":{"line":9,"column":0},"end":{"line":9,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":17}},"loc":{"start":{"line":4,"column":33},"end":{"line":8,"column":1}},"line":4}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":11},"end":{"line":7,"column":35}},"type":"binary-expr","locations":[{"start":{"line":5,"column":11},"end":{"line":5,"column":36}},{"start":{"line":6,"column":8},"end":{"line":6,"column":23}},{"start":{"line":7,"column":8},"end":{"line":7,"column":35}}],"line":5}},"s":{"0":1,"1":1,"2":1,"3":542,"4":1},"f":{"0":542},"b":{"0":[542,542,542]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/utility.ts"],"names":[],"mappings":";;;AACO,IAAM,SAAS,GAAG,UAAC,KAAa;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC9B,QAAQ,CAAC,KAAK,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AAChC,CAAC,CAAA;AAJY,QAAA,SAAS,aAIrB","sourcesContent":["\nexport const isInteger = (value: number) => {\n  return typeof value === 'number' && \n    isFinite(value) && \n    Math.floor(value) === value;\n}"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c880e47c99dc094453da250fd8f5d73e5db80047","contentHash":"b242b1cbe72d2dcd95ac25224671e4cd26c87e5f59ac20dfb1053cf6256278e8"},"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts":{"path":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"1":{"start":{"line":3,"column":24},"end":{"line":8,"column":5}},"2":{"start":{"line":4,"column":8},"end":{"line":6,"column":110}},"3":{"start":{"line":5,"column":69},"end":{"line":5,"column":85}},"4":{"start":{"line":6,"column":30},"end":{"line":6,"column":107}},"5":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"6":{"start":{"line":6,"column":95},"end":{"line":6,"column":107}},"7":{"start":{"line":7,"column":8},"end":{"line":7,"column":35}},"8":{"start":{"line":9,"column":4},"end":{"line":15,"column":6}},"9":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"10":{"start":{"line":11,"column":12},"end":{"line":11,"column":102}},"11":{"start":{"line":12,"column":8},"end":{"line":12,"column":28}},"12":{"start":{"line":13,"column":24},"end":{"line":13,"column":45}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":93}},"14":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"15":{"start":{"line":18,"column":17},"end":{"line":18,"column":38}},"16":{"start":{"line":19,"column":15},"end":{"line":19,"column":40}},"17":{"start":{"line":20,"column":14},"end":{"line":20,"column":32}},"18":{"start":{"line":21,"column":18},"end":{"line":21,"column":46}},"19":{"start":{"line":22,"column":12},"end":{"line":22,"column":34}},"20":{"start":{"line":23,"column":16},"end":{"line":23,"column":36}},"21":{"start":{"line":24,"column":12},"end":{"line":163,"column":16}},"22":{"start":{"line":25,"column":4},"end":{"line":25,"column":28}},"23":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"24":{"start":{"line":27,"column":31},"end":{"line":27,"column":40}},"25":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"26":{"start":{"line":29,"column":8},"end":{"line":29,"column":26}},"27":{"start":{"line":30,"column":8},"end":{"line":30,"column":24}},"28":{"start":{"line":31,"column":8},"end":{"line":31,"column":49}},"29":{"start":{"line":32,"column":8},"end":{"line":32,"column":25}},"30":{"start":{"line":33,"column":8},"end":{"line":33,"column":36}},"31":{"start":{"line":34,"column":8},"end":{"line":34,"column":62}},"32":{"start":{"line":35,"column":8},"end":{"line":40,"column":9}},"33":{"start":{"line":35,"column":21},"end":{"line":35,"column":22}},"34":{"start":{"line":36,"column":12},"end":{"line":36,"column":32}},"35":{"start":{"line":37,"column":12},"end":{"line":39,"column":13}},"36":{"start":{"line":37,"column":25},"end":{"line":37,"column":26}},"37":{"start":{"line":38,"column":16},"end":{"line":38,"column":71}},"38":{"start":{"line":41,"column":8},"end":{"line":41,"column":21}},"39":{"start":{"line":43,"column":4},"end":{"line":45,"column":6}},"40":{"start":{"line":44,"column":8},"end":{"line":44,"column":78}},"41":{"start":{"line":46,"column":4},"end":{"line":48,"column":6}},"42":{"start":{"line":47,"column":8},"end":{"line":47,"column":43}},"43":{"start":{"line":49,"column":4},"end":{"line":63,"column":6}},"44":{"start":{"line":50,"column":8},"end":{"line":62,"column":9}},"45":{"start":{"line":51,"column":12},"end":{"line":58,"column":37}},"46":{"start":{"line":61,"column":12},"end":{"line":61,"column":108}},"47":{"start":{"line":64,"column":4},"end":{"line":69,"column":6}},"48":{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},"49":{"start":{"line":66,"column":12},"end":{"line":66,"column":25}},"50":{"start":{"line":68,"column":8},"end":{"line":68,"column":76}},"51":{"start":{"line":70,"column":4},"end":{"line":72,"column":6}},"52":{"start":{"line":71,"column":8},"end":{"line":71,"column":60}},"53":{"start":{"line":73,"column":4},"end":{"line":75,"column":6}},"54":{"start":{"line":74,"column":8},"end":{"line":74,"column":66}},"55":{"start":{"line":76,"column":4},"end":{"line":106,"column":6}},"56":{"start":{"line":77,"column":8},"end":{"line":79,"column":9}},"57":{"start":{"line":78,"column":12},"end":{"line":78,"column":70}},"58":{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},"59":{"start":{"line":81,"column":12},"end":{"line":81,"column":81}},"60":{"start":{"line":83,"column":19},"end":{"line":83,"column":30}},"61":{"start":{"line":84,"column":27},"end":{"line":84,"column":57}},"62":{"start":{"line":85,"column":8},"end":{"line":93,"column":9}},"63":{"start":{"line":86,"column":12},"end":{"line":86,"column":68}},"64":{"start":{"line":88,"column":13},"end":{"line":93,"column":9}},"65":{"start":{"line":89,"column":12},"end":{"line":89,"column":74}},"66":{"start":{"line":92,"column":12},"end":{"line":92,"column":72}},"67":{"start":{"line":94,"column":8},"end":{"line":94,"column":54}},"68":{"start":{"line":95,"column":8},"end":{"line":95,"column":21}},"69":{"start":{"line":96,"column":8},"end":{"line":96,"column":30}},"70":{"start":{"line":97,"column":8},"end":{"line":99,"column":9}},"71":{"start":{"line":98,"column":12},"end":{"line":98,"column":39}},"72":{"start":{"line":100,"column":8},"end":{"line":103,"column":9}},"73":{"start":{"line":102,"column":12},"end":{"line":102,"column":103}},"74":{"start":{"line":104,"column":8},"end":{"line":104,"column":45}},"75":{"start":{"line":105,"column":8},"end":{"line":105,"column":20}},"76":{"start":{"line":107,"column":4},"end":{"line":120,"column":6}},"77":{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},"78":{"start":{"line":109,"column":12},"end":{"line":109,"column":36}},"79":{"start":{"line":111,"column":21},"end":{"line":111,"column":23}},"80":{"start":{"line":112,"column":8},"end":{"line":118,"column":9}},"81":{"start":{"line":112,"column":21},"end":{"line":112,"column":22}},"82":{"start":{"line":113,"column":12},"end":{"line":117,"column":13}},"83":{"start":{"line":113,"column":25},"end":{"line":113,"column":26}},"84":{"start":{"line":114,"column":16},"end":{"line":116,"column":17}},"85":{"start":{"line":115,"column":20},"end":{"line":115,"column":40}},"86":{"start":{"line":119,"column":8},"end":{"line":119,"column":22}},"87":{"start":{"line":121,"column":4},"end":{"line":152,"column":6}},"88":{"start":{"line":122,"column":19},"end":{"line":122,"column":21}},"89":{"start":{"line":123,"column":8},"end":{"line":134,"column":9}},"90":{"start":{"line":123,"column":21},"end":{"line":123,"column":22}},"91":{"start":{"line":124,"column":12},"end":{"line":133,"column":13}},"92":{"start":{"line":124,"column":25},"end":{"line":124,"column":26}},"93":{"start":{"line":125,"column":28},"end":{"line":125,"column":70}},"94":{"start":{"line":126,"column":16},"end":{"line":132,"column":17}},"95":{"start":{"line":126,"column":31},"end":{"line":126,"column":32}},"96":{"start":{"line":127,"column":33},"end":{"line":127,"column":52}},"97":{"start":{"line":128,"column":20},"end":{"line":130,"column":21}},"98":{"start":{"line":129,"column":24},"end":{"line":129,"column":42}},"99":{"start":{"line":131,"column":20},"end":{"line":131,"column":49}},"100":{"start":{"line":135,"column":18},"end":{"line":135,"column":20}},"101":{"start":{"line":136,"column":8},"end":{"line":150,"column":9}},"102":{"start":{"line":136,"column":21},"end":{"line":136,"column":22}},"103":{"start":{"line":137,"column":12},"end":{"line":137,"column":41}},"104":{"start":{"line":138,"column":12},"end":{"line":149,"column":13}},"105":{"start":{"line":139,"column":31},"end":{"line":139,"column":33}},"106":{"start":{"line":140,"column":16},"end":{"line":142,"column":17}},"107":{"start":{"line":140,"column":29},"end":{"line":140,"column":30}},"108":{"start":{"line":141,"column":20},"end":{"line":141,"column":36}},"109":{"start":{"line":143,"column":16},"end":{"line":143,"column":32}},"110":{"start":{"line":144,"column":26},"end":{"line":144,"column":34}},"111":{"start":{"line":145,"column":16},"end":{"line":147,"column":17}},"112":{"start":{"line":145,"column":29},"end":{"line":145,"column":30}},"113":{"start":{"line":146,"column":20},"end":{"line":146,"column":42}},"114":{"start":{"line":148,"column":16},"end":{"line":148,"column":56}},"115":{"start":{"line":151,"column":8},"end":{"line":151,"column":30}},"116":{"start":{"line":153,"column":4},"end":{"line":161,"column":6}},"117":{"start":{"line":154,"column":19},"end":{"line":154,"column":38}},"118":{"start":{"line":155,"column":8},"end":{"line":155,"column":121}},"119":{"start":{"line":155,"column":53},"end":{"line":155,"column":117}},"120":{"start":{"line":155,"column":90},"end":{"line":155,"column":113}},"121":{"start":{"line":156,"column":8},"end":{"line":156,"column":32}},"122":{"start":{"line":157,"column":8},"end":{"line":157,"column":34}},"123":{"start":{"line":158,"column":8},"end":{"line":158,"column":91}},"124":{"start":{"line":159,"column":8},"end":{"line":159,"column":49}},"125":{"start":{"line":160,"column":8},"end":{"line":160,"column":20}},"126":{"start":{"line":162,"column":4},"end":{"line":162,"column":16}},"127":{"start":{"line":164,"column":0},"end":{"line":164,"column":23}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":45},"end":{"line":2,"column":46}},"loc":{"start":{"line":2,"column":57},"end":{"line":16,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":40},"end":{"line":8,"column":5}},"line":3},"2":{"name":"(anonymous_2)","decl":{"start":{"line":5,"column":51},"end":{"line":5,"column":52}},"loc":{"start":{"line":5,"column":67},"end":{"line":5,"column":87}},"line":5},"3":{"name":"(anonymous_3)","decl":{"start":{"line":6,"column":12},"end":{"line":6,"column":13}},"loc":{"start":{"line":6,"column":28},"end":{"line":6,"column":109}},"line":6},"4":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":11},"end":{"line":9,"column":12}},"loc":{"start":{"line":9,"column":27},"end":{"line":15,"column":5}},"line":9},"5":{"name":"__","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":19}},"loc":{"start":{"line":13,"column":22},"end":{"line":13,"column":47}},"line":13},"6":{"name":"(anonymous_6)","decl":{"start":{"line":24,"column":12},"end":{"line":24,"column":13}},"loc":{"start":{"line":24,"column":30},"end":{"line":163,"column":1}},"line":24},"7":{"name":"UTTT","decl":{"start":{"line":26,"column":13},"end":{"line":26,"column":17}},"loc":{"start":{"line":26,"column":24},"end":{"line":42,"column":5}},"line":26},"8":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":32},"end":{"line":43,"column":33}},"loc":{"start":{"line":43,"column":44},"end":{"line":45,"column":5}},"line":43},"9":{"name":"(anonymous_9)","decl":{"start":{"line":46,"column":31},"end":{"line":46,"column":32}},"loc":{"start":{"line":46,"column":43},"end":{"line":48,"column":5}},"line":46},"10":{"name":"(anonymous_10)","decl":{"start":{"line":49,"column":40},"end":{"line":49,"column":41}},"loc":{"start":{"line":49,"column":57},"end":{"line":63,"column":5}},"line":49},"11":{"name":"(anonymous_11)","decl":{"start":{"line":64,"column":33},"end":{"line":64,"column":34}},"loc":{"start":{"line":64,"column":62},"end":{"line":69,"column":5}},"line":64},"12":{"name":"(anonymous_12)","decl":{"start":{"line":70,"column":31},"end":{"line":70,"column":32}},"loc":{"start":{"line":70,"column":60},"end":{"line":72,"column":5}},"line":70},"13":{"name":"(anonymous_13)","decl":{"start":{"line":73,"column":37},"end":{"line":73,"column":38}},"loc":{"start":{"line":73,"column":66},"end":{"line":75,"column":5}},"line":73},"14":{"name":"(anonymous_14)","decl":{"start":{"line":76,"column":26},"end":{"line":76,"column":27}},"loc":{"start":{"line":76,"column":57},"end":{"line":106,"column":5}},"line":76},"15":{"name":"(anonymous_15)","decl":{"start":{"line":107,"column":36},"end":{"line":107,"column":37}},"loc":{"start":{"line":107,"column":48},"end":{"line":120,"column":5}},"line":107},"16":{"name":"(anonymous_16)","decl":{"start":{"line":121,"column":33},"end":{"line":121,"column":34}},"loc":{"start":{"line":121,"column":45},"end":{"line":152,"column":5}},"line":121},"17":{"name":"(anonymous_17)","decl":{"start":{"line":153,"column":26},"end":{"line":153,"column":27}},"loc":{"start":{"line":153,"column":38},"end":{"line":161,"column":5}},"line":153},"18":{"name":"(anonymous_18)","decl":{"start":{"line":155,"column":36},"end":{"line":155,"column":37}},"loc":{"start":{"line":155,"column":51},"end":{"line":155,"column":119}},"line":155},"19":{"name":"(anonymous_19)","decl":{"start":{"line":155,"column":68},"end":{"line":155,"column":69}},"loc":{"start":{"line":155,"column":88},"end":{"line":155,"column":115}},"line":155}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":16,"column":4}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":16,"column":4}}],"line":2},"1":{"loc":{"start":{"line":4,"column":24},"end":{"line":6,"column":109}},"type":"binary-expr","locations":[{"start":{"line":4,"column":24},"end":{"line":4,"column":45}},{"start":{"line":5,"column":13},"end":{"line":5,"column":47}},{"start":{"line":5,"column":51},"end":{"line":5,"column":87}},{"start":{"line":6,"column":12},"end":{"line":6,"column":109}}],"line":4},"2":{"loc":{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},"type":"if","locations":[{"start":{"line":6,"column":47},"end":{"line":6,"column":107}},{"start":{"line":6,"column":47},"end":{"line":6,"column":107}}],"line":6},"3":{"loc":{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},"type":"if","locations":[{"start":{"line":10,"column":8},"end":{"line":11,"column":102}},{"start":{"line":10,"column":8},"end":{"line":11,"column":102}}],"line":10},"4":{"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":49}},"type":"binary-expr","locations":[{"start":{"line":10,"column":12},"end":{"line":10,"column":35}},{"start":{"line":10,"column":39},"end":{"line":10,"column":49}}],"line":10},"5":{"loc":{"start":{"line":14,"column":22},"end":{"line":14,"column":92}},"type":"cond-expr","locations":[{"start":{"line":14,"column":35},"end":{"line":14,"column":51}},{"start":{"line":14,"column":55},"end":{"line":14,"column":91}}],"line":14},"6":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":42}},{"start":{"line":27,"column":8},"end":{"line":27,"column":42}}],"line":27},"7":{"loc":{"start":{"line":28,"column":20},"end":{"line":28,"column":45}},"type":"binary-expr","locations":[{"start":{"line":28,"column":20},"end":{"line":28,"column":37}},{"start":{"line":28,"column":41},"end":{"line":28,"column":45}}],"line":28},"8":{"loc":{"start":{"line":44,"column":16},"end":{"line":44,"column":76}},"type":"binary-expr","locations":[{"start":{"line":44,"column":16},"end":{"line":44,"column":44}},{"start":{"line":44,"column":48},"end":{"line":44,"column":76}}],"line":44},"9":{"loc":{"start":{"line":50,"column":8},"end":{"line":62,"column":9}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":62,"column":9}},{"start":{"line":50,"column":8},"end":{"line":62,"column":9}}],"line":50},"10":{"loc":{"start":{"line":51,"column":19},"end":{"line":58,"column":36}},"type":"binary-expr","locations":[{"start":{"line":51,"column":19},"end":{"line":51,"column":39}},{"start":{"line":52,"column":16},"end":{"line":52,"column":34}},{"start":{"line":53,"column":16},"end":{"line":53,"column":50}},{"start":{"line":54,"column":16},"end":{"line":54,"column":50}},{"start":{"line":55,"column":16},"end":{"line":55,"column":29}},{"start":{"line":56,"column":16},"end":{"line":56,"column":29}},{"start":{"line":57,"column":16},"end":{"line":57,"column":36}},{"start":{"line":58,"column":16},"end":{"line":58,"column":36}}],"line":51},"11":{"loc":{"start":{"line":61,"column":19},"end":{"line":61,"column":107}},"type":"binary-expr","locations":[{"start":{"line":61,"column":19},"end":{"line":61,"column":39}},{"start":{"line":61,"column":43},"end":{"line":61,"column":73}},{"start":{"line":61,"column":77},"end":{"line":61,"column":107}}],"line":61},"12":{"loc":{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":67,"column":9}},{"start":{"line":65,"column":8},"end":{"line":67,"column":9}}],"line":65},"13":{"loc":{"start":{"line":77,"column":8},"end":{"line":79,"column":9}},"type":"if","locations":[{"start":{"line":77,"column":8},"end":{"line":79,"column":9}},{"start":{"line":77,"column":8},"end":{"line":79,"column":9}}],"line":77},"14":{"loc":{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},"type":"if","locations":[{"start":{"line":80,"column":8},"end":{"line":82,"column":9}},{"start":{"line":80,"column":8},"end":{"line":82,"column":9}}],"line":80},"15":{"loc":{"start":{"line":85,"column":8},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":85,"column":8},"end":{"line":93,"column":9}},{"start":{"line":85,"column":8},"end":{"line":93,"column":9}}],"line":85},"16":{"loc":{"start":{"line":88,"column":13},"end":{"line":93,"column":9}},"type":"if","locations":[{"start":{"line":88,"column":13},"end":{"line":93,"column":9}},{"start":{"line":88,"column":13},"end":{"line":93,"column":9}}],"line":88},"17":{"loc":{"start":{"line":97,"column":8},"end":{"line":99,"column":9}},"type":"if","locations":[{"start":{"line":97,"column":8},"end":{"line":99,"column":9}},{"start":{"line":97,"column":8},"end":{"line":99,"column":9}}],"line":97},"18":{"loc":{"start":{"line":100,"column":8},"end":{"line":103,"column":9}},"type":"if","locations":[{"start":{"line":100,"column":8},"end":{"line":103,"column":9}},{"start":{"line":100,"column":8},"end":{"line":103,"column":9}}],"line":100},"19":{"loc":{"start":{"line":100,"column":12},"end":{"line":101,"column":63}},"type":"binary-expr","locations":[{"start":{"line":100,"column":12},"end":{"line":100,"column":55}},{"start":{"line":101,"column":12},"end":{"line":101,"column":63}}],"line":100},"20":{"loc":{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},"type":"if","locations":[{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},{"start":{"line":108,"column":8},"end":{"line":110,"column":9}}],"line":108},"21":{"loc":{"start":{"line":108,"column":12},"end":{"line":108,"column":96}},"type":"binary-expr","locations":[{"start":{"line":108,"column":13},"end":{"line":108,"column":27}},{"start":{"line":108,"column":33},"end":{"line":108,"column":95}}],"line":108},"22":{"loc":{"start":{"line":114,"column":16},"end":{"line":116,"column":17}},"type":"if","locations":[{"start":{"line":114,"column":16},"end":{"line":116,"column":17}},{"start":{"line":114,"column":16},"end":{"line":116,"column":17}}],"line":114},"23":{"loc":{"start":{"line":128,"column":20},"end":{"line":130,"column":21}},"type":"if","locations":[{"start":{"line":128,"column":20},"end":{"line":130,"column":21}},{"start":{"line":128,"column":20},"end":{"line":130,"column":21}}],"line":128},"24":{"loc":{"start":{"line":138,"column":12},"end":{"line":149,"column":13}},"type":"if","locations":[{"start":{"line":138,"column":12},"end":{"line":149,"column":13}},{"start":{"line":138,"column":12},"end":{"line":149,"column":13}}],"line":138},"25":{"loc":{"start":{"line":158,"column":25},"end":{"line":158,"column":90}},"type":"cond-expr","locations":[{"start":{"line":158,"column":56},"end":{"line":158,"column":65}},{"start":{"line":158,"column":68},"end":{"line":158,"column":90}}],"line":158}},"s":{"0":1,"1":1,"2":1,"3":0,"4":0,"5":0,"6":0,"7":1,"8":1,"9":1,"10":0,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":127,"24":30,"25":127,"26":127,"27":127,"28":127,"29":127,"30":127,"31":127,"32":127,"33":127,"34":381,"35":381,"36":381,"37":1143,"38":127,"39":1,"40":108,"41":1,"42":2,"43":1,"44":109,"45":36,"46":73,"47":1,"48":6,"49":4,"50":2,"51":1,"52":5,"53":1,"54":1,"55":1,"56":105,"57":2,"58":103,"59":6,"60":97,"61":97,"62":97,"63":53,"64":44,"65":43,"66":1,"67":92,"68":92,"69":92,"70":92,"71":7,"72":92,"73":16,"74":92,"75":92,"76":1,"77":2,"78":1,"79":1,"80":1,"81":1,"82":3,"83":3,"84":9,"85":8,"86":1,"87":1,"88":1,"89":1,"90":1,"91":3,"92":3,"93":9,"94":9,"95":9,"96":27,"97":27,"98":9,"99":27,"100":1,"101":1,"102":1,"103":9,"104":9,"105":3,"106":3,"107":3,"108":18,"109":3,"110":3,"111":3,"112":3,"113":6,"114":3,"115":1,"116":1,"117":97,"118":97,"119":291,"120":873,"121":97,"122":97,"123":97,"124":97,"125":97,"126":1,"127":1},"f":{"0":1,"1":1,"2":0,"3":0,"4":1,"5":1,"6":1,"7":127,"8":108,"9":2,"10":109,"11":6,"12":5,"13":1,"14":105,"15":2,"16":1,"17":97,"18":291,"19":873},"b":{"0":[1,1,1],"1":[1,0,0,0],"2":[0,0],"3":[0,1],"4":[1,0],"5":[0,1],"6":[30,97],"7":[127,127],"8":[108,104],"9":[36,73],"10":[36,36,36,36,36,28,28,28],"11":[73,73,71],"12":[4,2],"13":[2,103],"14":[6,97],"15":[53,44],"16":[43,1],"17":[7,85],"18":[16,76],"19":[92,16],"20":[1,1],"21":[2,1],"22":[8,1],"23":[9,18],"24":[3,6],"25":[26,71]},"inputSourceMap":{"version":3,"file":"/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts","sources":["/Users/bharatreddy/code/sg/ultimate-ttt/packages/engine/src/UTTT.ts"],"names":[],"mappings":"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","sourcesContent":["import SubBoard from './SubBoard';\nimport errors from './model/errors';\nimport error from './error';\n\nimport {Coord, ME, OPPONENT, RESULT_TIE} from './model/constants';\nimport TTT from \"./model/TTT\";\nimport { isInteger } from './utility';\n\n/**\n * Ultimate Tic Tac Toe Class\n *\n * This holds a full game, with all the associated state, and exposes several methods to interact with it.\n *\n * All methods that modify the state have been implemented as a functional/immutable API, which means that\n * they return a modified game, but don't change the original one.\n * This has been done to make tree searching easier, since your root nodes at each step won't be accidentally modified.\n */\nexport default class UTTT extends TTT<SubBoard> {\n  /**\n   * Holds the state of the game board as a two dimensional array\n   * each element of the inner array is a SubBoard\n   */\n  public board: Array<Array<SubBoard>>;\n  /**\n   * The state board is a typical 3x3 TTT board that holds the \"state\" of the big game\n   * so if a cell of the big game has been won, it will be 0 or 1 on this state board.\n   * This is very useful to easily see \"the big picture\" in the game.\n   */\n  public stateBoard: SubBoard;\n\n  constructor(size: number = 3){\n    super();\n    this.size = size;\n    this.moves = 0;\n    this.maxMoves = Math.pow(this.size, 4);\n\n    // Game state\n    this.board = [];\n    this.nextBoard = undefined;\n\n    // The state board holds the ultimate game state\n    this.stateBoard = new SubBoard(this.size);\n\n    for(let x = 0; x < this.size; x++){\n      this.board[x] = [];\n      for(let y = 0; y < this.size; y++){\n        this.board[x][y] = new SubBoard(this.size);\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * Returns true if the game is over\n   */\n  public isFinished(): boolean {\n    return (this.stateBoard.isFinished() || this.moves === this.maxMoves);\n  }\n\n  /**\n   * Returns the winner for the game, throws an exception if the game hasn't finished yet.\n   * @returns {number} -1 for a tie, 0 you won, 1 opponent won\n   */\n  public getResult(): number {\n    return this.stateBoard.getResult();\n  }\n\n  /**\n   * Validates a board selection before playing it\n   * @param board Board coordinates as an array [row, col]\n   * @returns {boolean} true if the board is playable\n   */\n  public isValidBoardRowCol(board: Coord): boolean {\n    if(this.nextBoard === undefined){\n      return Array.isArray(board) &&\n        board.length === 2 &&\n        isInteger(board[0]) &&\n        isInteger(board[1]) &&\n        board[0] > -1 &&\n        board[1] > -1 &&\n        board[1] < this.size &&\n        board[1] < this.size;\n    } else {\n      return Array.isArray(board) && this.nextBoard[0] === board[0] && this.nextBoard[1] === board[1];\n    }\n  }\n\n  /**\n   * Validates a given board & move combination (check for right format, data ranges, and\n   * that the move hasn't already been played)\n   * @param boardRowCol Board coordinates [row, col]\n   * @param move Move coordinates [row, col]\n   * @returns {boolean} true if the move is valid\n   */\n  public isValidMove(boardRowCol: Coord, move: Coord): boolean {\n    if (!this.isValidBoardRowCol(boardRowCol)) {\n      return false;\n    }\n    return this.board[boardRowCol[0]][boardRowCol[1]].isValidMove(move);\n  }\n\n  /**\n   * Adds your move to the board, throws exception if move is invalid or board is already finished.\n   * @param boardRowCol Board coordinates [row, col]\n   * @param move Move coordinates [row, col]\n   * @returns {UTTT} Updated copy of the current game with the move added and the state updated\n   */\n  public addMyMove(boardRowCol: Coord, move: Coord): UTTT {\n    return this.move(ME, boardRowCol, move);\n  }\n\n  /**\n   * Adds an opponent move to the board, throws exception if move is invalid or board is already finished.\n   * @param boardRowCol Board coordinates [row, col]\n   * @param move Move coordinates [row, col]\n   * @returns {UTTT} Updated copy of the current game with the move added and the state updated\n   */\n  public addOpponentMove(boardRowCol: Coord, move: Coord): UTTT {\n    return this.move(OPPONENT, boardRowCol, move);\n  }\n\n  /**\n   * Execute a move\n   * @param player Player identifier (1 || 2)\n   * @param board Board coordinates as an array [x, y]\n   * @param move Move coordinates as an array [x, y]\n   * @returns {UTTT} Updated copy of the current game with the move added and the state updated\n   */\n  public move(player: number, board: Coord, move: Coord): UTTT {\n    if(this.isFinished()) {\n      throw error(errors.gameFinished);\n    }\n\n    if (!this.isValidBoardRowCol(board)) {\n      throw error(errors.board, board.toString());\n    }\n\n    const game = this.copy();\n    let updatedBoard = game.board[board[0]][board[1]];\n\n    if (player === ME) {\n      updatedBoard = updatedBoard.addMyMove(move, game.moves);\n    } else if (player === OPPONENT) {\n      updatedBoard = updatedBoard.addOpponentMove(move, game.moves);\n    } else {\n      throw error(errors.player, player);\n    }\n\n    // update the copy\n    game.board[board[0]][board[1]] = updatedBoard;\n    game.moves++;\n\n    game.nextBoard = move;\n    if(game.board[game.nextBoard[0]][game.nextBoard[1]].isFinished()){\n      game.nextBoard = undefined;\n    }\n\n    // Update the game board state\n    if (\n        game.board[board[0]][board[1]].isFinished() &&\n        game.board[board[0]][board[1]].winner !== undefined\n    ) {\n      game.stateBoard = game.stateBoard.move(\n          game.board[board[0]][board[1]].winner,\n          board,\n          true\n      );\n    }\n\n    game.winner = game.stateBoard.winner;\n    return game;\n  }\n\n  /**\n   * Get a list of all the valid sub-boards in the main board\n   */\n  public getValidBoards(): Array<Coord> {\n    // Short-circuit if the board is already decided\n    if ((this.nextBoard) && (!this.board[this.nextBoard[0]][this.nextBoard[1]].isFinished()))\n    {\n        return [this.nextBoard];\n    }\n\n    const boards: Array<Coord> = [];\n    for(let x = 0; x < this.size; x++) {\n      for (let y = 0; y < this.size; y++) {\n        if (!this.board[x][y].isFinished()) {\n          boards.push([x, y]);\n        }\n      }\n    }\n    return boards;\n  }\n\n  /**\n   * Returns a string with the board formatted for display\n   * including new lines.\n   * @returns {string} Printable version of the game board\n   */\n  public prettyPrint(): string {\n    let rows: Array<Array<string>> = [];\n    for(let x = 0; x < this.size; x++) {\n      for (let y = 0; y < this.size; y++) {\n        const small = this.board[x][y].prettyPrint().split(\"\\n\");\n\n        for(let row = 0; row < this.size; row++){\n          const xCoord = x * this.size + row;\n          if(!rows[xCoord]){\n            rows[xCoord] = [];\n          }\n          rows[xCoord][y] = small[row];\n        }\n      }\n    }\n    let ret = [];\n    for(let x = 0; x < rows.length; x++){\n      ret.push(rows[x].join('| '));\n      if((x + 1) % this.size === 0) {\n        let sepChars = '';\n        for(let i = 0; i < this.size * 2; i++){\n          sepChars += '-';\n        }\n        sepChars += '+';\n        let sep = sepChars;\n        for(let i = 1; i < this.size; i++){\n          sep += '-' + sepChars;\n        }\n        ret.push(sep.substr(0, sep.length - 1));\n      }\n    }\n    return ret.join(\"\\n\");\n  }\n\n  /**\n   * Return a new UTTT board as a copy of this one\n   * @returns {UTTT} Copy of the current game\n   */\n  public copy(): UTTT {\n    const copy = new UTTT(this.size);\n    copy.board = this.board.map(row => row.map(subBoard => subBoard.copy()));\n    copy.moves = this.moves;\n    copy.winner = this.winner;\n    copy.nextBoard = this.nextBoard === undefined ? undefined : this.nextBoard.slice() as [number, number];\n    copy.stateBoard = this.stateBoard.copy();\n    return copy;\n  }\n}"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4683eba81a27a8bddec1f1b7ee6e129a187d85dc","contentHash":"723c77de9d93908c954d39e1758c58a026049f0ac7f6c53ac65b25b2fe186309"}}